Windows .msi available for Rakudo Star 2012.07

I’m pleased to announce that starting with the current Rakudo Star release (2012.07), we will now be providing Windows .msi distributions with precompiled binaries for Rakudo Star. The .msi distribution is available in the same location as other Rakudo Star releases, at https://github.com/rakudo/star/downloads/ .

On this site, on IRC, and at YAPC::NA 2012 I heard many people comment that Windows users really wanted a binary install option. We’ve occasionally done .msi and .exe installers for Rakudo Star releases in the past, but didn’t have any dedicated tools or sufficient environments to be able to produce them consistently each month. So, this month I dedicated some time to create scripts and tools that can automate much of the process of building .msi distributions from the Rakudo Star release tarballs. Over the next couple of weeks I will be documenting the process so that others can hopefully follow it as well. With the new tools in place I think we’ll be able to consistently provide Rakudo .msi distributions within a few days (if not hours) of each monthly tarball release.

(At this time I can’t guarantee that .msi files will always be published at the same time
as the standard tarballs, because some monthly release managers may not have access to a suitable Widnows environments for building the .msi. Bear with us while we work out the full release details. :-) )

This is still a newish process for us, so if you encounter any problems with the .msi distribution, let us know on IRC #perl6, file a bug ticket, or send a note to perl6-users@perl.org or perl6-compiler@perl.org.

Enjoy!

Posted in Uncategorized | 2 Comments

Rakudo Star 2012.07 released

On behalf of the Rakudo and Perl 6 development teams, I’m happy to announce the July 2012 release of “Rakudo Star”, a useful and usable distribution of Perl 6. The tarball for the July 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.07 of the Rakudo Perl 6 compiler, version 4.6 of the Parrot Virtual Machine, and various modules, documentation, and other resources collected from the Perl 6 community.

Some of the new features added to this release include:

* Built-in metaobjects (e.g. Metamodel::ClassHOW) now inherit from Any

* &open now supports the :enc/:encoding option

* anonymous subset types (e.g., ‘subset :: of Int where { $_ > 0 }’)

* Rakudo Star now ships with the Template::Mojo 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, and more meta-model errors have been fixed to properly report line numbers.

Starting with this release, we will also identify changes to the implementation or specification that can cause breakages in existing Perl 6 code. The following features have been deprecated or modified due to changes in the Perl 6 specification, and are being removed or changed as follows:

* IO::File and IO::Dir will go away, and &dir now returns values of type IO::Path (which is currently the superclass of IO::File and IO::Dir). The return values of &dir will still stringify to the base name of the returned file and directory names, and you can call .path on them to obtain the full path.

* 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. Scheduled for the 2012.08 release.

* 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. Scheduled for the 2012.08 release, but may end up in 2012.09 .

* The method Str.bytes will be removed. To get the number of codepoints in a string, use .codes instead. To get the number of bytes in a given encoding, use $str.encode($encoding).bytes . Scheduled for the 2012.08 release.

* The method Str.lcfirst will be removed without replacement. Scheduled for the 2012.08 release.

* The method Str.ucfirst will eventually be removed, and replaced by Str.tc. No schedule yet, depends on having tc implemented first.

* ‘abs’ is currently a prefix operator, and will be changed to a normal subroutine. Scheduled for the 2012.08 release.

* The integer argument to IO::Socket.recv will be interpreted as number of characters/codepoints. Scheduled for the 2012.08 release.

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

Posted in announce | 2 Comments

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