Rakudo Star 2012.06 released

On behalf of the Rakudo and Perl 6 development teams, I’m happy to announce the June 2012 release of “Rakudo Star”, a useful and usable distribution of Perl 6. The tarball for the June 2012 release is available from https://github.com/rakudo/star/downloads.

In the Perl 6 world, we make a distinction between the language (“Perl 6″) and specific implementations of the language such as “Rakudo Perl”. This Star release includes release 2012.06 of the
Rakudo Perl 6 compiler, version 4.5 of the Parrot Virtual Machine, and various modules, documentation, and other resources collected from the Perl 6 community.

Here are some of the major improvements in this release over the previous distribution release.

  • Transitive longest-token matching in protoregexes
  • Longest token matching for alternations
  • Enhanced list and .map handling, including laziness fixes and performance improvements
  • Can use an argument list with require
  • Compile time errors in loaded modules now show a module loading backtrace
  • String to number conversion now recognizes radix notation
  • The &push and &unshift functions can now autovivify
  • Rakudo is now compiled with the same regex engine that user-space
  • regexes use; some parsing bugs are fixed as a result

  • p6doc is now shipped with Rakudo Star. It is a small collection of user-oriented documentation, along with the `p6doc` script for viewing them.

This release also contains a range of bug fixes, improvements to error reporting and better failure modes. More exceptions are thrown as typed exceptions, and more meta-model errors have been fixed to properly report line numbers.

This release contains an important breaking change to number parsing. Previously, a string such as “foo” would numify to 0. Now this will return a Failure.

There are some key features of Perl 6 that Rakudo Star does not yet handle appropriately, although they will appear in upcoming releases. Some of the not-quite-there features include:

  • macros
  • threads and concurrency
  • Unicode strings at levels other than codepoints
  • interactive readline that understands Unicode
  • non-blocking I/O
  • much of Synopsis 9

There is a new online resource at http://perl6.org/compilers/features that lists the known implemented and missing features of Rakudo Star 2012.06 and other Perl 6 implementations.

In many places we’ve tried to make Rakudo smart enough to inform the programmer that a given feature isn’t implemented, but there are many that we’ve missed. Bug reports about missing and broken features are welcomed at rakudobug@perl.org.

See http://perl6.org/ for links to much more information about Perl 6, including documentation, example code, tutorials, reference materials, specification documents, and other supporting resources. An updated draft of a Perl 6 book is available as docs/UsingPerl6-draft.pdf in the release tarball.

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

Posted in Uncategorized | 5 Comments

Rakudo Star 2012.05 released

Announce: Rakudo Star – a useful, usable, “early adopter” distribution of Perl 6

On behalf of the Rakudo and Perl 6 development teams, I’m happy to
announce the May 2012 release of “Rakudo Star”, a useful and
usable distribution of Perl 6. The tarball for the May 2012
release is available from http://github.com/rakudo/star/downloads.

In the Perl 6 world, we make a distinction between the language
(“Perl 6″) and specific implementations of the language such as
“Rakudo Perl”. This Star release includes release 2012.05 [0] of the
Rakudo Perl 6 compiler [1], version 4.4 of the Parrot Virtual
Machine [2], and various modules, documentation, and other
resources collected from the Perl 6 community.

Here are some of the major improvements in this release over the
previous distribution release.

* -I and -M command-line options
* support for non-Int enums
* ‘use’ now accepts positional arguments and is able to import by tag name
* ‘import’ now works
* basic support for Version literals
* %*ENV now propagates into subprocesses
* basic implementation of pack and unpack ported from ‘ng’ branch
* fff flip-flop operator is now implemented, ff has been improved
* various new regex features and improvements

Rakudo now also includes the lib.pm module.

This release also contains a range of bug fixes, improvements to error
reporting and better failure modes. More exceptions are thrown
as typed exceptions.

There are some key features of Perl 6 that Rakudo Star does not
yet handle appropriately, although they will appear in upcoming
releases. Some of the not-quite-there features include:

* macros
* threads and concurrency
* Unicode strings at levels other than codepoints
* interactive readline that understands Unicode
* non-blocking I/O
* much of Synopsis 9

There is a new online resource at http://perl6.org/compilers/features
that lists the known implemented and missing features of Rakudo Star
2012.05 and other Perl 6 implementations.

In many places we’ve tried to make Rakudo smart enough to inform the
programmer that a given feature isn’t implemented, but there are
many that we’ve missed. Bug reports about missing and broken
features are welcomed at rakudobug@perl.org.

See http://perl6.org/ for links to much more information about
Perl 6, including documentation, example code, tutorials, reference
materials, specification documents, and other supporting resources.
An updated draft of a Perl 6 book is available as
docs/UsingPerl6-draft.pdf in the release tarball.

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

[0] https://github.com/rakudo/rakudo/blob/nom/docs/announce/2012.05
[1] http://github.com/rakudo/rakudo
[2] http://parrot.org/

Posted in announce | 4 Comments

Announce: Rakudo Star 2012.04 – a useful, usable, “early adopter” distribution of Perl 6

On behalf of the Rakudo and Perl 6 development teams, I’m happy to
announce the April 2012 release of “Rakudo Star”, a useful and
usable distribution of Perl 6. The tarball for the April 2012
release is available from github.

In the Perl 6 world, we make a distinction between the language
(“Perl 6″) and specific implementations of the language such as
“Rakudo Perl”. This Star release includes release 2012.04.1 [0] of the
Rakudo Perl 6 compiler [1], version 4.3 of the Parrot Virtual
Machine [2], and various modules, documentation, and other
resources collected from the Perl 6 community.

Here are some of the major improvements in this release over the
previous distribution release.

* much improved startup time

* much more robust module precompilation

* autovivification for arrays and hashes is implemented again

* many phasers like PRE, POST and REDO are now implemented

* improved support for calling C functions and modelling structs and arrays
via NativeCall.pm6

* now includes modules URI, LWP::Simple, jsonrpc and Bailador (a Perl 6 port
of Dancer)

This release also contains a range of bug fixes, improvements to error
reporting and better failure modes. Many more exceptions are thrown
as typed exceptions.

Some notable incompatible changes from the previous release include

* the ‘lib’ directory is not included in the default module search path
anymore. You can manipulate the search path with the PERL6LIB environment
variable

* ‘defined’ used to be a prefix operator, and is now a regular subroutine.
This means you must updated code that relies ‘defined’ taking only one
argument. For example ‘defined $x ?? $a !! $b’ should be written as
‘$x.defined ?? $a !! $b’ or ‘defined($x) ?? $a !! $b’.

There are some key features of Perl 6 that Rakudo Star does not
yet handle appropriately, although they will appear in upcoming
releases. Some of the not-quite-there features include:
* pack and unpack
* macros
* threads and concurrency
* Unicode strings at levels other than codepoints
* interactive readline that understands Unicode
* non-blocking I/O
* much of Synopsis 9

There is a new online resource at http://perl6.org/compilers/features
that lists the known implemented and missing features of Rakudo Star
2012.04 and other Perl 6 implementations.

In many places we’ve tried to make Rakudo smart enough to inform the
programmer that a given feature isn’t implemented, but there are
many that we’ve missed. Bug reports about missing and broken
features are welcomed at.

See http://perl6.org/ for links to much more information about
Perl 6, including documentation, example code, tutorials, reference
materials, specification documents, and other supporting resources.
An updated draft of a Perl 6 book is available as
in the release tarball.

The development team thanks all of the contributors and sponsors
for making Rakudo Star possible. If you would like to contribute,
see , ask on the perl6-compiler@perl.org
mailing list, or join us on IRC #perl6 on freenode.

[0] https://github.com/rakudo/rakudo/blob/nom/docs/announce/2012.04.1
[1] http://github.com/rakudo/rakudo
[2] http://parrot.org/

Posted in announce | Tagged , , | 1 Comment

No Rakudo Star release for March 2012, stay tuned for April

Some of our users have asked what happened to the Rakudo Star release that was planned for March 2012. The short answer is that it didn’t happen.

The long answer is that compiler release for March 2012 include “bounded serialization”, a technique that drastically reduces startup time. Unfortunately it also causes a regression that stops the calling of C functions under cetain conditions.

We have noticed that too late, and decided not to base a Star distribution release on the new compiler release. We hope to fix the regression in time for the April release.

So if everything goes as planned, the April release of Rakudo star will have greatly reduced startup time, many new compiler features and the newly fixed modules URI and LWP::Simple.

We also hope to get some more cool stuff done at the Perl 6 Patterns Hackathon in Oslo, maybe improved database access.

Posted in Uncategorized | Tagged , , , | 1 Comment

Rakudo Star 2012.02 released

On behalf of the Rakudo and Perl 6 development teams, I’m happy to announce the February 2012 release of “Rakudo Star”, a useful and usable distribution of Perl 6.  The tarball for the February 2012 release is available from <http://github.com/rakudo/star/downloads>.

In the Perl 6 world, we make a distinction between the language (“Perl 6″) and specific implementations of the language such as “Rakudo Perl”.  This Star release includes release #49 of the Rakudo Perl 6 compiler [1], version 4.1 of the Parrot Virtual Machine [2], and various modules, documentation, and other resources collected from the Perl 6 community.

Here are some of the major improvements in this release over the previous distribution release.

  • The FatRat type is implemented, and Rat arithmetic now properly defaults to Num if the denominator is too big
  • Object hashes are implemented, and can be declared with the syntax my %h{Any} (for a hash with keys of type Any)
  • The <Some::Grammar::rulename> syntax is now implemented in regexes; <foo> can also be used to call predeclared lexical rules
  • The Int($x) coercion syntax is implemented
  • &rename and &copy are now implemented
  • Improvements to the reduction meta-operator (order of magnitude faster, some parsing issues fixed)
  • The <prior> regex built-in is now available, and matches whatever the last successful match matched
  • A $match.make(…) method is available to set the AST for a match object not stored in the $/ variable
  • Improved backtraces

This release also contains a range of bug fixes, improvements to error reporting and better failure modes. Many more exceptions are thrown as typed exceptions.

Due to continued evolution of and convergence with the Perl 6 spec, there are some changes to existing functionality that may affect your code:

  • You may no longer use the $.x form in submethods and attribute initializers, as per spec; use the non-virtual $!x instead.
  • The LHS of the xx operator is now thunked
  • .conjugate is now called .conj
  • Enumeration values .gist to just the key, not the full name
  • An empty Buf is now False in boolean context

Currently, we have maintained backwards compatibility with some changed pieces of syntax, but will drop them in an upcoming release:

  • “<…>” in proto regex bodies; now this should be written “*”
  • The use of “**” with a separator in regexes; this is now done by using “%” or “%%” on another quantifier

There are some key features of Perl 6 that Rakudo Star does not yet handle appropriately, although they will appear in upcoming releases.  Some of the not-quite-there features include:

  • pack and unpack
  • macros
  • threads and concurrency
  • Unicode strings at levels other than codepoints
  • pre and post constraints, and some other phasers
  • interactive readline that understands Unicode
  • non-blocking I/O
  • much of Synopsis 9

There is a new online resource at http://perl6.org/compilers/features that lists the known implemented and missing features of Rakudo Star 2012.02 and other Perl 6 implementations.

In many places we’ve tried to make Rakudo smart enough to inform the programmer that a given feature isn’t implemented, but there are many that we’ve missed.  Bug reports about missing and broken features are welcomed at <rakudobug@perl.org>.

See http://perl6.org/ for links to much more information about Perl 6, including documentation, example code, tutorials, reference materials, specification documents, and other supporting resources. An updated draft of a Perl 6 book is available as
<docs/UsingPerl6-draft.pdf> in the release tarball.

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

[1] http://github.com/rakudo/rakudo
[2] http://parrot.org/

Posted in Uncategorized | 1 Comment

Rakudo Star 2012.01 released

On behalf of the Rakudo and Perl 6 development teams, I’m happy to announce the January 2012 release of “Rakudo Star”, a useful and usable distribution of Perl 6.  The tarball for the January 2012 release is available from http://github.com/rakudo/star/downloads.

In the Perl 6 world, we make a distinction between the language (“Perl 6″) and specific implementations of the language such as “Rakudo Perl”.  This Star release includes release #48 of the Rakudo Perl 6 compiler [1], version 3.11 of the Parrot Virtual Machine [2], and various modules, documentation, and other resources collected from the Perl 6 community.

Significantly, this is the first distribution release based on the “nom” (New Object Model) development branch of Rakudo. This work has been carried out with the aim of increasing performance and correctness, as well as providing a better base for taking on a
range of missing features. Here are some of the major improvements in this release over the previous distribution release.

  • Greatly improved performance in many areas. For some scripts, this release offers an order of magnitude performance improvement.
  • POD6 support, including the $=POD variable to make the POD available at runtime and a –doc option to get at the POD
  • The Int type now has big integer semantics
  • Initial work on native types, which can be used to write much more efficient code
  • LTM-driven protoregexes
  • Meta-programming support, including custom meta-classes, overriding method dispatch and much more
  •  Exception handling is much closer to the specification, and thus much more useful
  • Better package handling, including true separate compilation, lexical packages and better nested package handling
  • An optimizer, which improves generated code as well as catching a range of issues at compile-time that previously made it to runtime
  • Backslash sequences in character classes
  • Stubbed methods from roles are now required, providing interface style functionality
  • Typed arrays and hashes, as well as supporting for binding to array and hash elements

Due to improvements in the Perl 6 language specification, and changes to Rakudo to track them, some existing code will need changes. Here are some of the major differences to be aware of.

  • Attributes can no longer be initialized using “new” unless they are declared as having an accessor; either give them one or write a BUILD submethod
  • The proto keyword is no longer used to declare a multi-dispatch fallback
  • You may no longer do ‘filename’.lines; use ‘filename’.IO.lines

We have maintained backwards compatibility with some changed pieces of syntax, but will drop them in an upcoming release:

  • “<…>” in proto regex bodies; now this should be written “*”
  • The use of “**” with a separator in regexes; this is now done by using “%” or “%%” on another quantifier

While this release does contain a great number of improvements, unfortunately we have regressed in a few places. Of note:

  • Some cases of auto-vivification do not work
  • The binding of a capture against a signature literal is broken

We will be working to restore this functionality for future Rakudo Star releases; if you depend heavily on it, you may wish to stick with the previous Rakudo Star release for
another month.

There are some key features of Perl 6 that Rakudo Star does not yet handle appropriately, although they will appear in upcoming releases.  Some of the not-quite-there features include:

  • pack and unpack
  • macros
  • threads and concurrency
  • Unicode strings at levels other than codepoints
  • pre and post constraints, and some other phasers
  • interactive readline that understands Unicode
  • non-blocking I/O
  • much of Synopsis 9

There is a new online resource at http://perl6.org/compilers/features that lists the known implemented and missing features of Rakudo Star 2012.01 and other Perl 6 implementations.

In many places we’ve tried to make Rakudo smart enough to inform the programmer that a given feature isn’t implemented, but there are many that we’ve missed.  Bug reports about missing and broken features are welcomed at <rakudobug@perl.org>.

See http://perl6.org/ for links to much more information about Perl 6, including documentation, example code, tutorials, reference materials, specification documents, and other supporting resources. An updated draft of a Perl 6 book is available as <docs/UsingPerl6-draft.pdf> in the release tarball.

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

[1] http://github.com/rakudo/rakudo
[2] http://parrot.org/

Posted in Uncategorized | 7 Comments

‘nom’ branch is now default, release status

I’ve just now switched the Rakudo repository on GitHub such that the default branch is now “nom” instead of “master”. The nom branch is where nearly all significant Rakudo development has taken place over the last several months — over 1,800 commits since being forked from the ‘master’ branch back in April.

In order to avoid confusion with git’s conventional use of the “master” branch name, I’ve now renamed “master” to “ng” (the branch’s original name from early 2010). However, most Rakudo developers will likely refer to the version of Rakudo in this older branch as either “2011.07″ or “Beijing”, these being the tagnames of the final compiler release from that particular branch.

We have not as yet created a 2011.08 release based on nom. After much useful discussion and contributions from people on #perl6, I feel that there are still too many feature regressions and some performance regressions that really need to be addressed before making a release. Ultimately, it comes down to something like “It’s far better to explain and justify delaying a release than to issue a release that we know will cause problems for our clients.”

I don’t want to specify an exact date for the next release; certainly it will occur within the next three weeks. As in previous announcements, we continue to recommend using the Rakudo Star 2011.07 release until the releases from the new development line are ready.

We did discuss the possibility of simply creating a 2011.08 release from the old branch, but since it would be essentially identical to the 2011.07 that doesn’t seem to serve much purpose other than to fill a slot, so we’ve decided against that.

Today I’m planning to begin updating the perl6 RT ticket queue to reflect things as they stand after the branch rename. I
expect many tickets to be closed due to the many fixes that nom brings. New incoming tickets will now be evaluated against the ‘nom’ branch, and it’s okay to file tickets for regressions from 2011.07. (Perhaps cut us a little slack for a week or two on this, though.) More details on the RT ticket queue will be described in an upcoming message.

Comments and questions can be sent to the perl6-users@perl.org and perl6-compiler@perl.org mailing lists, or join us on IRC
freenode/#perl6 and ask there.

Pm

Posted in Uncategorized | 1 Comment

Rakudo 2011.08 release status

As noted in a previous post, we had planned to issue a new release of Rakudo sometime around YAPC::EU, based on the new nom branch. The nom branch is a substantial redevelopment of the Rakudo compiler, and generally shows a 3x speed improvement over previous versions of Rakudo.

However, in the past few days at YAPC::EU, some extended testing exposed some significant regressions both in performance and features. So, rather than rush out a buggy release we’ve decided to spend a few more days cleaning things up a bit. Because of the magnitude of changes in the switchover to nom we had already planned to allow ourselves a fair bit of wiggle room in terms of exact release dates.

I expect releases to start as early as this weekend, or perhaps a few days after that. We definitely will have some August 2011 releases, they just won’t be “exactly two days after the Parrot release” as has been typical in previous months. In the meantime, we continue to encourage existing users of Rakudo Perl to use the 2011.07 release of Rakudo Star.

More details as we make progress.

Pm

Posted in Uncategorized | 1 Comment

Rakudo Star 2011.07 released

Announce: Rakudo Star – a useful, usable, “early adopter” distribution of Perl 6

On behalf of the Rakudo and Perl 6 development teams, I’m happy to announce the July 2011 release of “Rakudo Star”, a useful and usable distribution of Perl 6. The tarball for the July 2011 release is available from http://github.com/rakudo/star/downloads.

IMPORTANT NOTE ABOUT UPCOMING RELEASES: This is the last Rakudo Star release to use a compiler from the current “master” branch of Rakudo. For the past several months, Rakudo compiler development has primarily occurred in a separate “nom” (“New Object Model”) branch of its repository. Shortly after this release, the “nom” branch will become the new “master” branch and will be the source for future compiler and Star releases.

In the Perl 6 world, we make a distinction between the language (“Perl 6″) and specific implementations of the language such as “Rakudo Perl”. The July 2011 Star release includes release #43 of the Rakudo Perl 6 compiler [1], version 3.6.0 of the Parrot Virtual Machine [2], and various modules, documentation, and other resources collected from the Perl 6 community.

The Rakudo team plans to issue another distribution release in August 2011 based on the new “nom” compiler. The new compiler contains many improvements over the current line of development (including vastly improved performance), but also will not be 100% backwards-compatible due to changes in the Perl 6 language specification and elimination of some workarounds. Existing Rakudo Star users looking for stability should continue to use the July 2011 release as the new distribution releases stabilize over the next several months.

Details about deprecations and migration guidelines will be provided in future releases and on rakudo.org .

This release of Rakudo Star adds the following features over the previous Star release:
* 10%-30% improvement in compile and execution speed
* New gcd (greatest common divisor) and lcm (largest common multiple) operators
* Int.base
* Call counter for Perl 6-level subroutines
* Better handling of &infix:<=> right associativity
* Fix bug in exponentiation of negative numbers
* Fix building on systems with smaller RAM

There are some key features of Perl 6 that Rakudo Star does not yet handle appropriately, although they will appear in upcoming releases. Some of the not-quite-there features include:
* nested package definitions
* binary objects, native types, pack and unpack
* typed arrays
* macros
* state variables
* threads and concurrency
* Unicode strings at levels other than codepoints
* pre and post constraints, and some other phasers
* interactive readline that understands Unicode
* backslash escapes in regex <[...]> character classes
* non-blocking I/O
* most of Synopsis 9
* perl6doc or pod manipulation tools

There is a new online resource at http://perl6.org/compilers/features that lists the known implemented and missing features of Rakudo Star 2011.07 and other Perl 6 implementations.

In many places we’ve tried to make Rakudo smart enough to inform the programmer that a given feature isn’t implemented, but there are many that we’ve missed. Bug reports about missing and broken features are welcomed at .

See http://perl6.org/ for links to much more information about Perl 6, including documentation, example code, tutorials, reference materials, specification documents, and other supporting resources. An updated draft of a Perl 6 book is available as docs/UsingPerl6-draft.pdf in the release tarball.

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

[1] http://github.com/rakudo/rakudo

[2] http://parrot.org/

Posted in Uncategorized | Leave a comment

Upcoming Rakudo releases

Over the past 6+ months the Rakudo developers have been working on a new version of the Rakudo compiler (code named “nom”) that uses a new object model implementation, has lots of bugfixes, and contains many performance enhancements over the existing version.

We plan to switch over all mainline development for Rakudo to this new branch within the next couple of weeks. As a result, the upcoming July 2011 releases of the compiler and Rakudo Star will be the last releases to use the older compiler codebase.

In early August, sometime prior to or concurrent with YAPC::EU, we plan to issue another “distribution release” based on the new compiler implementation, and will encourage newcomers to Rakudo Perl 6 to start with that distribution release. We haven’t yet decided if the new distribution will continue the “Rakudo Star” series of distribution releases or will constitute a new phase of releases.

Existing users of Rakudo Star can continue to use the July 2011 releases and have some comfort of stability with previous Star releases, but should be aware that we expect future releases of Rakudo to come from the new compiler. We will be developing a list of deprecations and guidelines for migrating programs from the older compiler to the new one.

We also plan to hold an online hackathon on July 30th on IRC #perl6 to focus on updating Perl 6 modules in the Star distribution to work with the new compiler implementation. In many cases the modules will not require any modifications to work, but there are some cases where changes to the Perl 6 language and/or the fixing of bugs in Rakudo may require a change to the module. Our goal and expectation is to have a module-compatible update for Rakudo Star in either August 2011 or September 2011.

In short, we expect there to be a flurry of “releases” of various Rakudo components over the next couple of months. If you’re looking for stability in that time, we recommend sticking with the July release of Rakudo Star while we iron out the new features. If you’re looking to learn Perl 6 or start a new project, we recommend starting with the new releases that will be coming out in August.

Posted in Uncategorized | 2 Comments