Rakudo Star 2013.01 henceforth available: a useful and usable distribution of Perl 6.
Available since January 30,
2103 a useful and usable distribution of Perl 6,aims to make a distinction
between the language (“Perl 6″) and specific implementations of the language
such as “Rakudo Perl”.
Therefore this Star release
includes release 2013.01 of the Rakudo Perl 6
compiler, version 4.10.0 of the
Parrot Virtual Machine, and various modules, documentation, and other resources
collected from the Perl 6 community.
Henceforth the new features
added include:
- Sink context (what some other languages call void context) is now enforced correctly. This means that for-loops are now lazy by default. It fixes the bug where a map in sink context would not execute, and also means that a Failure returned to sink context will be properly thrown.
- ‘require’ now works with indirect module names
- Restored socket read semantics to returning the requested number of bytes
- $obj.Some::Role::meth() now passes the correct $obj
- try/CATCH now returns Nil when the CATCH is triggered, rather than the exception; this brings it in line with try without a CATCH
- whatever-star cases of splice now implemented
- can now import multis with the same name from different modules, provided all dispatchers are onlystar
We also discover that the release contains a range of bug fixes,
improvements to error reporting and better failure modes.
However certain features have been deprecated or modified from previous
releases due to changes in the Perl 6 specification, and are being removed
or changed as follows:
releases due to changes in the Perl 6 specification, and are being removed
or changed as follows:
- postcircumfix:<[ ]> and postcircumfix:<{ }> will become multi-subs rather than multi-methods. Both at_pos and at_key will remain methods.
- Unary hyper ops currently descend into nested arrays and hashes. This will change to make them equivalent to a one-level map.
- The Str.ucfirst builtin is deprecated; it will be replaced by Str.tc.
- Leading whitespace in
rules and under :sigspace will no longer be
converted to <.ws> . For existing regexes that expect this conversion, add a <?> in front of leading whitespace to make it meta again. - The ?-quantifier on captures in regexes currently binds the capture slot to a List containing either zero or one Match objects; i.e., it is equivalent to “** 0..1″. In the future, the ?-quantifier will bind the slot directly to a captured Match or to Nil. Existing code can manage the transition by changing existing ?-quantifiers to use “** 0..1″, which will continue to return a List of matches.
The tarball for the January 2013 release is
available from the download page.