Rakudo Star 2013.05 released

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

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 2013.05 of the Rakudo Perl 6 compiler, version 5.3.0 of the Parrot Virtual Machine, plus various modules, documentation, and other resources collected from the Perl 6 community.

Some of the new features added to this release include:

  • The ?-quantifier on regex captures now returns a single Match object (formerly returned an array). Use ** 0..1 to get the old behavior.
  • Failed matches return Nil instead of a false Match object.
  • Rakudo warns when pure expressions are used in sink context
  • .substr(…) now correctly accepts whatever-star closures
  • Implemented shellwords postcircumfix (%h<< $x ‘foo bar’ >>)
  • Defining operators spelled like the empty string is now illegal
  • Array interpolations now properly do LTM
  • Autothread “none” and “all” junctions before “any” and “one”
  • Helpful error if you write “else if”/”elif” instead of “elsif”
  • Throw exception if a Range is used as a Range endpoint
  • Corrected argument order in IO.seek
  • wrap low level VM objects in ForeignCode, allowing perl6 OO calls on them
  • for loops are eager again
  • add link and symlink to IO
  • add Capture.Bool()
  • improvements to DUMP()
  • various optimizations in the optimizer and the runtime
  • smartmatch against list now supports Whatever wildcards
  • IO::Spec, a port of Perl 5′s File::Spec
  • regex special characters can be used as delimiters
  • allow slice with :exists adverb on hashes
  • added 125 extra opening/closing bracket-pairs

This release also contains a range of bug fixes, improvements to error reporting and better failure modes.

The following features have been deprecated or modified from previous releases due to changes in the Perl 6 specification, and are planned to be 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 result of failed matches will be Nil instead of a Match object returning boolean False.

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:

  • advanced 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 an online resource at http://perl6.org/compilers/features that lists the known implemented and missing features of Rakudo 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. A 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 | Leave a comment

Rakudo Star 2013.02 released

On behalf of the Rakudo and Perl 6 development teams, I’m happy to announce the February 2013 release of “Rakudo Star”, a useful and usable distribution of Perl 6. The tarball for the February 2013 release is available from http://rakudo.org/downloads/star/. A Windows .MSI version of Rakudo star will usually appear in the downloads area shortly after the tarball release.

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

Some of the new features added to this release include:

  • “Did you mean …” suggestions for symbol-not-found errors
  • Compile-time optimization of some cases of junctions in boolean context
  • IO::Socket.get now works again with non-ASCII characters
  • constant folding for routines marked as ‘is pure’
  • natively typed variables and better error reporting in the REPL
  • speed up eqv-comparison of Bufs
  • warnings for useless use of (some) literals, variables and constant expressions in sink context

This release also contains a range of bug fixes, improvements to error reporting
and better failure modes.

The following 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:

  • .gist on a type object will return ‘(Typename)’ instead of ‘Typename()’. If you want to get the class name alone, continue to use $obj.^name
  • 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.

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:

  • advanced 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 an online resource at http://perl6.org/compilers/features
that lists the known implemented and missing features of Rakudo
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 href="mailto:rakudobug@perl.org">rakudobug@perl.org.

See perl6.org for links to much more information about Perl 6, including documentation, example code, tutorials, reference materials, specification documents, and other supporting resources. A 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 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 | Comments Off

Rakudo Star 2013.01 released

On behalf of the Rakudo and Perl 6 development teams, I’m happy to announce the January 2013 release of “Rakudo Star”, a useful and usable distribution of Perl 6. The tarball for the January 2013 release is available from the download page. A Windows .MSI version of Rakudo star will usually appear in the downloads area shortly after the tarball release.

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 2013.01 [0] of the Rakudo Perl 6 compiler [1], version 4.10.0 of the Parrot Virtual Machine [2], and various modules, documentation, and other resources collected from the Perl 6 community.

Some of the new features added to this release 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
  • This release also contains a range of bug fixes, improvements to error reporting
    and better failure modes.

    The following 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:

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

      • advanced 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 an online resource at http://perl6.org/compilers/features
      that lists the known implemented and missing features of Rakudo
      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.
      A 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/2013.01
      [1] http://github.com/rakudo/rakudo
      [2] http://parrot.org/

Posted in announce | Leave a comment

Rakudo Star 2012.12 released

On behalf of the Rakudo and Perl 6 development teams, I’m happy to announce the December 2012 release of “Rakudo Star”, a useful and usable distribution of Perl 6. The tarball for the December 2012 release is available from the download section. A Windows .MSI version of Rakudo star will usually appear in the downloads area shortly after the tarball release.

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

Some of the new features added to this release include:

  • Parse errors are much improved, and follow STD, the standard parser,
    much more closely; they are more accurate and more information is given
  • Rakudo now keeps parsing after some less serious errors
  • Better errors for various parse failures
  • The junction autothreader is now an order of magnitude faster
  • Texas (ASCII) versions of the Set and Bag operators implemented
  • Nested Pairs now give correct .perl output
  • { a => $_ } now correctly considered a block, not a hash as
    before

This release also contains a range of performance improvements, bug fixes, improvements to error reporting and better failure modes.

The following 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:

  • ‘for’-loops will become lazy, and are only evaluated eagerly in eager or sink (void) context. This means that if a for-loop is the last statement in a routine, it will usually run after the routine has returned, so it cannot call return() anymore.
  • 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.

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:

  • advanced 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 an online resource that lists the known implemented and missing features of Rakudo 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. A 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 | Leave a comment

Rakudo Star 2012.11 released

On behalf of the Rakudo and Perl 6 development teams, I’m happy to announce the November 2012 release of “Rakudo Star”, a useful and usable distribution of Perl 6. The tarball for the November 2012 release is available for download. A Windows .MSI version of Rakudo star will usually appear in the downloads area shortly after the tarball release.

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.11of the Rakudo Perl 6 compiler, version 4.6.0 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:

  • heredocs
  • quote adverbs (like q:w//)
  • implemented precedence related traits (equiv, looser, tighter, assoc)
  • Perl 6 grammar NFAs are pre-computed, saving some work on each invocation; this shaved around 10% off the time needed to run the spectests
  • regexes and quotes have better support for user-selected delimiters
  • FIRST/NEXT/LAST can now be used in all types of loop (previously limited to for)
  • several fixes related to module precompilation. This should make working with larger code bases much less painful.
  • This release also contains a range of performance improvements, bug fixes, improvements to error reporting and better failure modes.

    The following 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:

    • at present, a reference to an &foo that does not exist evalutes to Nil. This will become a CHECK-time failure, in line with STD.
    • Unary hyper ops currently descend into nested arrays and hashes. This will change to make them equivalent to a one-level map.
    • ~/.perl6/lib will go away from the default include path (@*INC).
      Instead %*CUSTOM_LIB now holds paths to four library locations:

      perl    Rakudo installs its core modules here
      vendor  OS-level package managers should install their modules here
      site    for local module installations (e.g. with panda or ufo)
      home    like site, but always under the user's home directory.
              fallback if site isn't writable.
      
    • 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.

    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:

    • advanced 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 an online resource at http://perl6.org/compilers/features that lists the known implemented and missing features of Rakudo 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. A 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 | Leave a comment

Rakudo Star 2012.10 released

On behalf of the Rakudo and Perl 6 development teams, I’m happy to announce the October 2012 release of “Rakudo Star”, a useful and usable distribution of Perl 6.  The tarball for the October 2012 release is available from <http://github.com/rakudo/star/downloads>. A Windows .MSI version of Rakudo star will usually appear in the downloads area shortly after the tarball release.

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.10 of the Rakudo Perl 6 compiler, version 4.6.0 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:

* The method case of the handles trait

* The <-> lambda, which defaults parameters to rw

* The :dba modifier in regexes

* The radix form :60[24, 59, 59]

* Improved coverage of Perl 5 regexes when the P5 modifier is used

* Correct parsing of nested quote delimiters

* Attributes in scope are now visible inside of an eval

This release also contains a range of performance improvements, bug fixes, improvements to error reporting and better failure modes.

The following 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:

* Unary hyper ops currently descend into nested arrays and hashes.
This will change to make them equivalent to a one-level map.

* ~/.perl6/lib will go away from the default include path (@*INC).
Instead %*CUSTOM_LIB now holds paths to four library locations:
perl    Rakudo installs its core modules here
vendor  OS-level package managers should install their modules here
site    for local module installations (e.g. with panda or ufo)
home    like site, but always under the user’s home directory.
fallback if site isn’t writable.

* protos for built-in routines are now mostly as generic as possible,
and will be changed to be specific to the arity of the routine.
For example ‘proto sub chr(|) {*}’ will become ‘proto sub chr($) {*}’
This affects everybody who adds multis with unusual arity to built-in
subs.

* Parameters preceded by a | or \ can no longer have a sigil.

* IO::Path.dir (which returns the directory part of the path) has been
renamed to IO::Path.directory.  IO::Path.dir will be removed or
re-purposed.

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

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:

* advanced 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 an online resource at http://perl6.org/compilers/features that lists the known implemented and missing features of Rakudo 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. A 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 | Leave a comment

Rakudo Star 2012.09 released

On behalf of the Rakudo and Perl 6 development teams, I’m happy to announce the September 2012 release of “Rakudo Star”, a useful and usable distribution of Perl 6. The tarball for the September 2012 release is available from http://github.com/rakudo/star/downloads. A Windows .MSI version of Rakudo star will usually appear in the downloads area shortly after the tarball release.

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.09.1 of the Rakudo Perl 6 compiler, version 4.6.0 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:

* Basic macro support!

* Support for Perl 5 (m:P5/…/) regex syntax!

* Indirect type names in routine and type declarations are supported.

* We support the “is export” trait on constant declarations.

* The “is hidden” and base traits are supported.

* Str.wordcase, is-prime, and expmod are implemented.

* Compilation is slightly faster than before.

* Tie-breaking with constraints selects the first matching constraint rather than demanding mutual exclusion.

* Smart matching against Signature literals, and binding to Signatures in declarators.

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.

The following 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:

* Iterable is now a role instead of a class, and no longer inherits from Cool.

* Parameters preceded by a | or \ can no longer have a sigil.

* IO::Path.dir (which returns the directory part of the path) has been renamed to IO::Path.directory. IO::Path.dir will be removed or re-purposed.

* The Str.ucfirst builtin is deprecated; it will be replaced by Str.tc.

* The (experimental) LAZY statement prefix will soon be removed.

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

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:
* advanced 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 an online resource at http://perl6.org/compilers/features that lists the known implemented and missing features of Rakudo 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. A draft of a Perl 6 book is available 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 | Leave a comment

Rakudo Star 2012.08 released

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

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

* Rakudo Star now includes a Perl 6 debugger! The debugger allows single-stepping, setting breakpoints, variable inspection/modification, regex debugging, and more! Enter “perl6-debug script.pl” to run a script in debugging mode. Enter “help” from a debug prompt to see the available commands.

* Memory usage of the build stage has been reduced by 35% – 40%. This makes it possible to build and compile Rakudo Star on machines with less memory (although 1.2GB may still be needed for some 64-bit environments).

* Variables prefixed by | or \ in signatures are now sigilless, per updates to the Perl 6 specification.

* Circularities in module loading are now detected.

* An improved inliner, allowing a wider range of routines to be inlined.

* Str.bytes and lcfirst have been removed. The tclc builtin has been added.

* ‘abs’ is now a normal subroutine instead of a prefix operator.

* IO::File and IO::Dir have been removed.

* The integer argument to IO::Socket.recv is now interpreted as a number of characters/codepoints.

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.

We 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:

* Parameters preceded by a | or \ can no longer have a sigil.

* IO::Path.dir (which returns the directory part of the path) has been renamed to IO::Path.directory. IO::Path.dir will be removed or re-purposed.

* The Str.ucfirst builtin is deprecated; it will be replaced by Str.tc.

* The (experimental) LAZY statement prefix will soon be removed.

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

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 an online resource at http://perl6.org/compilers/features that lists the known implemented and missing features of Rakudo Star 2012.08 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. A 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 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 | 1 Comment

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