Fri, 06 Mar 2009

Perl 6 Tidings from March 2009

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.

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
$<?>.

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.

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.

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.