2014 has come and gone. The advent posts have come and gone. And timotimo++ is so busy, that he hasn’t got time to do the Perl 6 Weekly. For the coming weeks, yours truly will be trying to do the job at least as well as timotimo and GlitchMr have done in the past. So here are the changes in and around Perl 6 since the beginning of this year (roughly).
Finally, the year in which Perl 6.0.0 will* be released, has come. Will it be YAPC::NA? Will it be OSCON? Will it YAPC::Asia? Will it be YAPC::EU? Or will it be Christmas after all? Who knows? To fuel the betting, TimToady will give a presentation at FOSDEM on January 31st to tell us more. As a teaser, there’s also an interview available.
As an appetizer, lizmat has added a paragraph to the deprecation message that is shown if a program executed deprecated code:
Please note that *ALL* deprecated features will be removed at the
release of Perl 6.0.0 (expected sometime in 2015).
Precomp issues on Moar
Several efforts have been plagued by problems in pre-compilation of modules (e.g. v5, Inline::Perl5, S11/S22 development). It would appear that jnthn++ has been able to fix them, so no holding back on these efforts now!
Easier JVM interop
psch has landed the shortname MMD for overloaded Java methods, and constructors as well. As in, using native Java classes doesn’t need knowledge of method descriptors anymore. All is described in the (updated) Advent post.
20% faster startup on JVM backend
donaldh provided a patch for the JVM backend that disables bytecode verification. As donaldh stated:
The very idea of the bytecode verifier is a bit odd. The JVM needs to be robust when executing bytecode anyway. The verifier is intended to protect the JVM from malicious bytecode that has been downloaded from untrusted sources but that seems naively optimistic.
Doing a spectest on the JVM has gone down from about 2500 seconds, to about 2000 seconds (only processing one test script at a time).
Documentation of async (S17) and Metamodel
moritz++ has been busy writing initial versions of documentation of async features such as Supply, Channel and Lock, as well as the recently implemented (by jnthn++) Metamodel classes, such as Metamodel::Primitives.
Adverbed slices got a bit faster
While generally doing good things and resolving tickets, usev6 found that adverbed slices, such as:
%h<a b c>:delete;
were internally using junctions (|) instead of using a short-circuiting or (||). This has now been fixed by usev6++.
<=> on lists should distribute to elements
TimToady fixed the <=> operator on lists so that the contents of the lists matters, instead of just the number of elements of the lists.
low-level concurrency tests
japhb has been busy writing low-level tests for concurrency ops and repr’s in nqp. Unfortunately, they cannot be run by default yet (hangs on nqp-m, and crashes on nqp-j). So, Work In Progress!
The “newio” branch attempts to make I/O in Perl 6 more sane, without breaking the current API’s too much. A lot of work has been done on it, but it is not ready for prime time yet. Unfortunately, lizmat was not ready to describe her vision in an Advent post. But she started work on the S16 Synopsis, also in a “newio” branch. So have a look if you want to remain up-to-date on that. Comments welcome!
Many optimizations, tickets resolved, tests written, bugs fixed
Even though the holiday season prevailed in the past weeks, giving many badly needed time off, others have taken the opportunity to resolve, unbug, test and optimize (at this point, already 107 commits to nom( the main branch of rakudo) since the 2014.12 release). Thank you all for that!
Signing off for this week
Please let me know of any errors, omissions, additions: they will probably make it to the Perl 6 Weekly next week!