2016.35 A Quick One From Zagreb

Yours truly reporting en route from the YAPC::Europe 2016 in Cluj-Napoca to the Alpine Perl Workshop in Innsbruck. Videos of YAPC::Europe 2016 should be appearing shortly.

Meanwhile in the Far East

Audrey Tang, the original creator of Pugs (an earlier implementation of Perl 6 using Haskell), has been appointed as a minister without portfolio in the Taiwanese government. I think it is safe to say that the entire Perl community wishes her all the best in this new endeavour! Each time one does a spectest, remember that the The Official Perl 6 Test Suite was started as part of the Pugs project!

Core Developments

  • Smartmatching Bag/Mix and eqv has become a lot faster.
  • Calling .grep or .first on a list of Pairs with a Regex now works.
  • Signatures that have both slurpy parameters and defaults, are no longer allowed (they should never have been).
  • The RAKUDO_EXCEPTIONS_HANDLER environment variable can now be set to JSON to have errors appear as a JSON stream on STDERR.
  • Hash.classify now handles Junctions correctly.
  • Control commands such as next and return are no longer allowed at the top level of the REPL.
  • IO::Handle.comb/.split no longer work on handles that were opened in :bin mode (at least until we’ve figured out sustainable semantics of this functionality).
  • IO::Handle.slurp-rest now supports a :close flag that will close the handle if so requested.
  • And of course many other smaller optimizations and (documentation) improvements.

Blog Posts

Ecosystem Additions

Quite a nice crop again this week:

Winding Down

It has been a busy week for yours truly with all the travelling and conference attending and socializing and sleep depriving. I hope I didn’t miss too many important things. If you think I did, let me know and we’ll let the world know the next week. Until then!

2016.34 A Quick Botch From Cluj

After a long trans-European journey, yours truly arrived to Cluj for the YAPC::Europe. Without a lot of time to spend on the Perl 6 Weekly. So, this time, only a small Perl 6 Weekly. Hope I didn’t miss too much!

Rakudo Compiler Release 2016.08.1

Zoffix Znet worked very hard on the Rakudo 2016.08 Compiler Release, but he botched a tag, so now we have a Rakudo 2016.08.1 Compiler Release. I’m pretty sure we will have a new Rakudo Star release based on this Compiler Release pretty soon!

More Dogfooding

It has been a while since Leon Timmermans worked on the Perl 6 version on TAP, which allows tests (such as running with make spectest) to use Perl 6 itself to run the test-files, rather than Perl 5. For the first time, this actually completed flawlessly for yours truly in the past week:

All tests successful.
Files=1118, Tests=52595, 336 wallclock secs
Result: PASS

Again a step closer to providing the whole tool-chain in Perl 6!

Core Developments

Some of the core developments of the past week that made it into the 2016.08.1 release:

  • Elizabeth Mattijsen made several Set/SetHash related coercions between 40x and 300x faster.
  • Jonathan Worthington fixed quite a lot of async stability issues.
  • Stefan Seifert fixed another set of pre-compilation issues, this time related to development versions of files.
  • Zoffix Znet added support for a PERL6_TEST_DIE_ON_FAIL environment variable that will stop testing after the first failed test.
  • And many other smaller fixes and improvements, of course!

Blog Posts

And the blog posts keep on coming!

Ecosystem Additions

Quite a nice selection again!

Winding Down

Time to get some sleep before all the stuff starts happening in Cluj!

2016.33 Where did we go wrong?

Useful, descriptive errors are becoming the industry standard and Perl 6 and Rust languages are leading that effort. The errors must go beyond merely telling you the line number to look at. They should point to a piece of code you wrote. They should make a guess at what you meant. They should be referencing your code, even if they originate in some third party library you’re using.

Check out The Awesome Errors of Perl 6 by Zoffix! (see also the Reddit comments).

Other Blog Posts

Core Developments

  • Timo Paulssen fixed the memory hungriness and catastrophical slowness when trying to match a string with :i, especially on large haystacks.
  • Elizabeth Mattijsen made several types of usage of .splice at least 10x as fast. She also added another 29 ranges of unicode digit ranges to magic auto-increment / decrement.
  • Jonathan Worthington worked on making freeing of resources (such as a network port) more asynchronously reliable.
  • TimToady fixed many issues related to improper sinking and improper “useless use” warnings.
  • Elizabeth Mattijsen also implemented map logic for blocks that are guaranteed to not return a Slip. For instance ^10000 .map: *.Str
    will run 10%+ faster if you specify a return type for the block, e.g. ^10000 .map: -> \x --> Str { x.Str }.
  • Wenzel P. P. Peppmeyer implemented the :exists adverb on multi-dimensional subscript literals.
  • TimToady also fixed a problem with character ranges that would incorrectly match ä with a even when :m (aka ignoremark) was not specified.
  • Pawel Murias fixed the --profile feature, which was temporarily broken.
  • And as usual many other fixes, additions and other improvements.

Documentation Developments

Mostly housekeeping, gfldex++ tells me:

Ecosystem Additions

Winding Down

Quite some nice blog posts! And some nice fixes and improvements. Can’t wait to see what we will have next week!

2016.32 A Quiet Week

Feels like many people are enjoying the nice weather. So a bit of a quiet week. Feels a lot like the quiet before the storm, though! 🙂

Core Developments

  • Jonathan Worthington squashed another set of concurrency related issues, e.g. making async sockets a lot more stable when under load.
  • TimToady improved several warnings / error messages, as well as improving on the efficiency of many common internal AST Node annotations.
  • TimToady also fixed a problem with loop and repeat not properly sinking (discarding generated values) by default.
  • Zoffix Znet fixed quite a few tickets related to error reporting and warnings.
  • Elizabeth Mattijsen made @a.splice($offset) about 40x faster and made sure Thai digits ("\x0e50".."\x0e59", AKA ๐๑๒๓๔๕๖๗๘๙) now smart increment/decrement correctly.
  • Many other smaller fixes and efficiency improvements.

Documentation Developments

gfldex reports again from the documentation effort:

  • Pragmas got their own section now.
  • Links to automatically generated pages got unbroken.
  • Documentation of role Setty got completed and examples fixed.
  • The About section got fixes.
  • The Concurrency section got improved.
  • Experimental got its own section now.
  • Documentation of roles was added to the typesystem documentation along with a few additions that were not documented anywhere else.
  • The trusts trait is now documented.
  • All precedence traits are now documented.
  • Many more examples are now compiled to check correctness leading to a few more examples being unbroken.
  • Many more small additions, fixes and index entries all over the place.

Blog Posts

Ecosystem Additions

Winding down

Only 2 more weeks or so until the YAPC::Europe. The tension is mounting! 🙂

2016.31 An End Of An Era

Because the Parrot project has not seen a release since mid-February, and there have been no commits since then, it was generally felt that the support for Parrot in NQP has become a maintenance burden, especially in the light of the development of the Javascript backend. So all code related to Parrot has been now been removed from the NQP codebase (as it was removed from the Rakudo codebase about a year ago).

It should be noted that without Parrot, Rakudo Perl 6 would not exist today. It is one of the giants on whose shoulders Rakudo Perl 6 is standing. So let me again express gratitude to the multitude of developers who have worked on the Parrot project. Even though it didn’t turn out the way it was intended, it was definitely not for nothing!

Alpine Perl Workshop

The First Alpine Perl Workshop (a cooperation of the Austrian and Swiss Perl Mongers) will be held in Innsbruck, Austria on 2 and 3 September. There is still time to submit a Perl 6 talk! If you couldn’t make it to the YAPC::Europe this year, or you have some extra time to spend after coming back from the YAPC::Europe, Innsbruck and the Alpine Perl Workshop are definitely worth looking into!

Other Core Developments

  • TimToady worked on improving the reporting on a number of errors and warnings, especially in the “useless use” area.
  • Stefan Seifert fixed an issue in the merging of global symbols when a module was used that was also used inside another module and there had been a use lib inbetween the use statements.
  • Jonathan Worthington fixed a number of race conditions, one of which could cause a hang in a supply block. This is a big step towards more stability of asynchronous programs.
  • Elizabeth Mattijsen made sure that .min, .max and .minmax can be called on anything that can be seen as a .list.
  • Zoffix Znet fixed several issues related to Signatures.
  • And many other smaller bug fixes and speed improvements.

Documentation Developments

gfldex++ reports from the Documentation Dept:

  • Small corrections and additions to the search index.
  • FALLBACK, the little sister of MOP has been added.
  • Subsignatures where added.
  • FAQ got corrections and additions.
  • Work has started to extract examples from .pod6-files automatically to have them tested by the compiler. This will help us keeping track of changes in v6.d and already resulted in corrections in Signatures.pod6.
  • The examples in operator.pod6 now compile as well after applying a few fixes.

Blog Posts

A nice harvest, with some blog posts that I missed in the past weeks.

Ecosystem Additions

A nice harvest as well!

Winding Down

See you next week!

2016.30 Fresh Rakudo Star!

Steve Mynott++ has taken it upon him to package a Rakudo Star 2016.07 release, based on the 2016.07.1 Rakudo compiler release. Apart from the tar archive, there are also a .dmg for OS X, and a .msi for Windows available here. Apart from the many improvements and bug fixes, this version should also be much faster than the previous (2016.04) Rakudo Star release!

When In Rome, Go See Larry

The Curry On Conference was held last week in Rome, Italy. TimToady gave the second day’s opening keynote. An excellent video if you want to know more about the what’s and why’s of the development of Perl 6.

Core Developments

  • "foo".samemark("") will now just return "foo" instead of a Failure, to bring it in line with the behaviour of "foo".samecase("").
  • Jonathan Worthington implemented $?MODULE and ::?MODULE, which had mysteriously fallen through the cracks. See Assorted Fixes for the other things he fixed this week.
  • Zoffix added bail-out to Test.pm6, which rectified another mysterious omission.
  • glfdex started a discussion on the behaviour of my Int:D $a with respect to Nil, got TimToady‘s resolution on that, and skids implemented a patch. This now means that my Int:D $a; is a compile-time error (missing initializer), and that assigning Nil to an Int:D variable is now a Failure.
  • Many optimisations in the areas of PseudoStashes, dynamic variable lookup, Hashes (both “normal” as well as typed Hashes), Bags, Mixes, Sets, Backtraces, .grep, .first and handling of warnings.
  • Many smaller bug fixes and error message improvements.

Documentation Developments

gfldex++ informs us of the following developments in the documentation of Perl 6:

  • Additions to Traps.
  • Additions to Testing.
  • Additions to Concurrency and related classes.
  • The Quoting Constructs section now explains interpolation and its interaction with undefined values.
  • The search index has seen many more additions.
  • Documentation was added about a few methods that were missing before.
  • A few examples got unbroken.
  • Pod::To:BigPage is now used to generate https://docs.perl6.org/perl6.xhtml which contains all non-generated documents (and excludes anything under /routine/ and list). It is meant as a standalone document for offline viewing and printing (as far as printing HTML goes). In the future it may be used to generate diffs of the docs.

Blog Posts

Ecosystem Additions

Winding Down

Quite a busy week again. Now if someone could find the knob to the thermostat, so we could put that a bit lower, that would be brill!

2016.29 The Zoffix Has  Landed

The past week we could welcome a new Rakudo core member with a commit bit: Zoffix Znet. In the past months, Zoffix has already been quite busy with many blog posts, work on the RT Queue and even do all the work for a Rakudo Compiler release. This week, Zoffix not only did one Rakudo compiler release (2016.07), Zoffix even did a a second one: 2016.07.1, quickly after a serious blocker for Rakudo Star was discovered! I’m told a Rakudo Star release will now be available soon, based on this last compiler release.

Larry Wall Interview

A little while ago, Slashdot asked users to send in questions to Larry Wall. And Larry now has answered most of the serious questions! And some not so serious questions🙂

Perl6::Tidy

Jeffrey Goff has started the Perl6::Tidy project. From its description:

Perl 6’s grammar is now pretty much fleshed out, but it’s hard to get at from within. This makes tools like code formatters, coverage and analysis tools hard to put together. This module aims to fix that.

I can only wish that he gets many supporters! Also check out the Reddit comments.

Core Developments

  • Stefan Seifert fixed a bug in recording dependencies of precomp files, which would make complex dependencies (such as with XML::LibXML) load much faster, both in production as well as in development.
  • vlmarek contributed a patch so that when interfacing with NativeCall, one can now specify sub names not to be mangled, by specifying is mangled(False).
  • Several methods on Str are now much faster: .samemark (50x), .contains (6x), .substr-eq (4x) and many more with smaller efficiency improvements.
  • for loops / maps that take 2 parameters (e.g. for %h.kv -> $key, $value { }) are now 4x faster.
  • Many List/Array related functionality has been made more efficient (both in CPU, as well as in memory usage).
  • And many other fixes and improvements, about 80 commits in all.

Documentation Developments

In this section I will try to follow developments on the documentation effort. Thanks gfldex for making this reporting easier for me!

  • Three more traps to avoid added.
  • Some layout improvements.
  • A Debug button at the bottom for those want to help improve the docs.
  • Some additions to the 5to6 Section.
  • Unspace is now documented.
  • Builtin classes Mu, Any, Num and Cool have many more methods documented now.
  • A few broken Code examples were fixed.
  • Filename mangling allows other platforms than *nix to host a private copy of docs.perl6.org.
  • And many more small changes and additions.

Blog Posts

Quite a couple of blog posts this week, some of them even multi-part!.

Ecosystem Additions

Winding Down

It’s been a busy and hot week. Looking forward to even more goodies to come. And apologies for the things I forgot to mention this week. Please make sure I won’t forget them next week! 🙂