Specification

In the past month we've seen a huge effort on the specs, mostly driven by Timothy "wayland" S. Nelson. He split the ever-growing S29 document into various API documents for built-in classes, all of them living in the S32 setting library.

The term "setting" is also new and requires an explanation. It's a term for the namespace in which built-in functions live. Other languages call that a "Prelude". Differently from a Prelude that scope is replaceable, meaning that it's easy to throw out all built-in functions and provide your own set, if that's what you want.

There was also a lively discussion about S16 (IO), and Daniel Ruoso and Timothy made some progress in the specs there. It seems our IO system will be heavily based on roles. Likewise there was some work on an S28 "special variables" draft.

Larry Wall also contributed lots of small and not-so-small cleanups.

Private methods are now declared as method !mymethod { ... } (as opposed to my method previously

(as opposed to previously Result objects (that is objects produced by regexes that call make aren't automatically considered to be the scalar part of a match object. Instead they can now be accessed with the ? key, for example as $<?> .

aren't automatically considered to be the scalar part of a match object. Instead they can now be accessed with the key, for example as . Lists in item context now auto-promote to Captures, not Arrays anymore. That means that when you write my $a = (1, 2, 3) the $a is immutable; $a[2] = 4 is an array. Instead you need to say my $a = [1, 2, 3]; (anyone speaks Perl 5 here? ;-). Captures were also re-factored to treat the invocant less special.

the is immutable; is an array. Instead you need to say (anyone speaks Perl 5 here? ;-). Captures were also re-factored to treat the invocant less special. Some clarification on what happens when you have a sub and an enum value of the same name

Enhancing an already defined class is now done with augment class Object instead of the previous class Object is also . Likewise supersede replaces is instead .

I'm sure I've missed some important pieces, but the past month brought so many changes it's hard to keep track of.

Implementations

Rakudo

In February we witnessed the first release of Rakudo that's independent from Parrot. The releases are simply numbered (without any major/minor distinction) and have code names; the names are picked among cities with Perl 6 supportive perlmongers groups. This release was dedicated to Vienna.pm who sponsored much of Jonathan Worthington's Rakudo work.

Most notably Rakudo now ships with some built-in functions written in Perl 6, which makes it much more hackable if you love Perl 6, but have no clue about PIR.

Other interesting changes and fixes are support for the new R meta operator (which reverses the order of arguments to the following operator) and a .perl method on Match objects (just for debugging purposes, it can't be eval'ed back into a Match object yet).

Misc

Since the Topic of our beloved IRC channel #perl6 become too crowded with links to Perl 6 implementations, I set up the page http://perl6-projects.org/ which simply links to all of the most important Perl 6 projects, including compilers and documentation efforts. It is meant to be an entry page to link to if you don't want to collect dozens of links yourself.

Hinrik Örn Sigurðsson wrote on p6l that Google "Summer of Code" project where they pay students for work on open source projects, and hinted that he'd like to hack on Perl 6 stuff as a gsoc project. Jonathan Leto explained that he coordinates the TPF side of this year's project.