Yes, you’ve read the title correctly! We now have a release of the Perl 6 language (the specification) that we commit to keep fixed for a long-ish time. Also, there’s a version of Rakudo that implements a very big chunk of that specification: 2015.12 (you can find the download on http://perl6.org/ now). Please note that we don’t have a Rakudo Star release yet, so you’ll be building from source for now. We are hoping to get a Rakudo Star release out in the coming days (perhaps with a little bug-fix release of Rakudo up front) and a bit later yet publish .msi installers for our Windows users.
The release notes are quite something. This time it contains an overview of what Perl 6 does in general, but also a list of changes since the last release. You can read the release announcement for Rakudo on the advent blog. The day before that release, TimToady wrote a nice and sort of poetic text on the same blog.
Even though the time leading up to the release has been quite exhausting, there’s been many changes before and after the release itself. Here’s a list of things I thought were notable in the last 7 days:
- The DateTime, Date, and Dateish classes/role have seen a bunch of speedups to their methods including the constructor. (lizmat)
- loop (…) loops can now return values! (TimToady)
- METAOP_ASSIGN (which powers +=, -=, ~=, max=, …) now uses .DEFINITE instead of .defined, which gives us not only a speed improvement, but also makes Failure objects correctly explode. (timotimo & jnthn)
- Precompiled files will now have the same base filename that the installed source files have.
- Promise.anyof and Promise.allof will now not throw exceptions when one of the passed promises breaks. Instead, it’s now a combinator based solely on completion. (jnthn)
- The “as Foo” coercion syntax has been thrown out, as it has been replaced by “Foo()” coercion type syntax some time ago. (jnthn)
- “pack” and “unpack” are now marked experimental and thus you have to “use experimental :pack” if you want to use them as currently implemented. Here’s Juerd’s draft of a new more perl6ish API. (Juerd)
- Multi-Dimension candidates for BIND-POS will no longer cause an infinite recursion when the object doesn’t actually implement binding (found by Zefram, fixed by timotimo)
- When building and installing rakudo with an unprivileged user that doesn’t have access to the runtime paths nqp was installed to, RAKUDO_PREFIX in the environment shall help you. (flussence)
- Rakudo now not only supports Linenoise, but also Readline (hoelzro, DrForr)
- Creating Instant objects is now 8x faster, DateTime.now is 4x faster (lizmat)
- pmurias has been adding many more tests for NQP ops and implemented a bunch of ops for the JS backend.
- No longer infinitely recurse when trying to mkdir / (timotimo)
And here’s also some ecosystem additions:
- Test::Class by perlpilot
- Pod::TreeWalker by autarch
- TXN by atweiden
- Haikunator by Atrox
- StrictNamedArguments by nxadm
With this, the ecosystem is at 485 modules. Neat, huh?
I must admit I’m a bit tired from the last few days, so I’m not going through the trouble of collecting every article that covered the Perl 6 release. Maybe you’ll even help me by linking to articles in the comments section under this post 🙂
Now I need to get to bed and rest up for tomorrow 🙂
See you in the new year, have a nice NYE celebration, and take care!