Announce: Rakudo Perl 6 development release #26 ("Amsterdam")

On behalf of the Rakudo development team, I'm pleased to announce the
February 2010 development release of Rakudo Perl #26 "Amsterdam".
Rakudo is an implementation of Perl 6 on the Parrot Virtual Machine
(see http://www.parrot.org).  The tarball for the February 2010 release
is available from http://github.com/rakudo/rakudo/downloads .

Rakudo Perl follows a monthly release cycle, with each release named
after a Perl Mongers group.  The February 2010 release is code named
"Amsterdam" for the largest chapter of the Dutch Perl Mongers.  Perl
development enjoys considerable support from the Netherlands, with
donations from NLNet, and hosting of the feather machines and several
important Perl 6 web domains and sites.

This release is the first release based on the new branch of
Rakudo development begun in October 2009.  The branch refactors 
the grammar, object metamodel, and a number of other key features 
to improve compatibility with the Perl 6 specification and give us
a more solid foundation to build on.  Indeed, in many ways the 
development of this new branch has driven important changes to the 
specification in the areas of lists, iterators, slices, and much
more.

However, this release contains a number of significant regressions
from previous compiler releases.  We expect to have full functionality
restored in this branch in the next couple of weeks.  For those
looking to explore a wide variety of Perl 6 features or who have
applications developed using previous releases of Rakudo, you may
wish to continue to use the January 2010 (#25, "Minneapolis") 
release.

This release of Rakudo requires Parrot 2.1.0.  One must still
perform "make install" in the Rakudo directory before the "perl6"
executable will run anywhere other than the Rakudo build directory.
For the latest information on building and using Rakudo Perl, see the
README file section titled "Building and invoking Rakudo".

Some of the specific changes and improvements occuring with this
release include:

*  Now using nqp-rx for parsing and actions

*  Grammar is much closer to STD in many aspects, and makes use of
   protoregexes

*  Closures and lexical/contextual variable declarations in regexes work

*  Laziness is implemented

*  All class and role construction is handled through the meta-model

The Perl 6 language specification is still in flux. Please take note of the
following changes, which might affect your existing programs. In the next
release of Rakudo, the deprecated features will likely be gone.

* The root of the object hierarchy has been changed from 'Object' to 'Mu'.
  The type 'Object' goes away.

* The term 'undef' is gone. You can replace it with other constructs,
  depending on context:
    - 'Nil' is undefined in item context, and the empty list in list context
    - 'Mu' is the most general undefined value which does not flatten in list
      context
    - as a smart matching target, you can replace '$obj ~~ undef'
      by '$obj ~~ *.notdef'

* Builtin classes will derive from 'Cool' (which itself derives from 'Any').
  Most of the builtin methods on these classes will be defined in the
  'Cool' class instead of 'Any'.  See Synopsis 2 for more details.

* Starting with the this release, release identifiers are given
  as "YYYY.MM" instead of "YYYY-MM" (dot instead of hyphen).
  This is intended to simplify building and packaging for other
  distribution systems.

The development team thanks all of our contributors and sponsors for
making Rakudo Perl possible.  If you would like to contribute,
see http://rakudo.org/how-to-help , ask on the perl6-compiler@perl.org
mailing list, or ask on IRC #perl6 on freenode.

The next release of Rakudo (#27) is scheduled for March 18, 2010.
A list of the other planned release dates and codenames for 2010 is
available in the "docs/release_guide.pod" file.  In general, Rakudo
development releases are scheduled to occur two days after each
Parrot monthly release.  Parrot releases the third Tuesday of each month.

Have fun!

[1] http://www.frozen-perl.org/
[2] http://use.perl.org/~pmichaud/journal/39779
[3] http://use.perl.org/~pmichaud/journal/39874
