# Announce: Rakudo Star Release 2015.06

## 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 June 2015 release of "Rakudo Star", a useful and usable
distribution of Perl 6. The tarball for the June 2015 release is
available from <http://rakudo.org/downloads/star/>.

This Rakudo Star release comes with support for the MoarVM
backend (all module tests pass on supported platforms).

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 2015.06] of the
[Rakudo Perl 6 compiler], version 2015.06 of [MoarVM], plus various
modules, documentation, and other resources collected from the
Perl 6 community.

[releases up to 2015.06]:
    https://github.com/rakudo/rakudo/blob/nom/docs/announce/2015.04.md
    https://github.com/rakudo/rakudo/blob/nom/docs/announce/2015.05.md
    https://github.com/rakudo/rakudo/blob/nom/docs/announce/2015.06.md
[Rakudo Perl 6 compiler]: http://github.com/rakudo/rakudo
[MoarVM]: http://moarvm.org/

Some of the new compiler features added to this release include:

* "0" (0 as a string) is now True, no special-casing anymore
* an Int() coercion type in a multi now creates two candidates: Any and Int
* native arrays
* starts-with/substr-eq/ends-with for comparing strings inside other strings
* where constraints on variable and attribute declarations
* 'is rw' parameters implemented for native subs (they get passed as a pointer)
* use Foo:from\<Perl5\> and EVAL $code, :lang\<perl5\> are now supported as
   long as Inline::Perl5 is installed. Allows passing most of S01 spec tests.
* NFG, NFC, NFD, Uni
* "unit" declaration needed for blockless packages
* Various API changes for the Great List Refactor, such as...
  + 'for' loops not longer flatten; use 'for flat' for that
  + .map no longer flattens, map as a listop does. Use .flatmap to get the
     old behavior
  + Likewise other methods that used to flatten their invocant no longer do:
    all, any, one, none, unique, squish, min, max, minmax, classify, and categorize
  + Nil no longer iterates like the empty List. Use () or Empty instead.
* .pick($n)/roll($n) now always return lists, even when $n == 1
* The "is cached" trait no longer works on methods, throws a NYI instead
* Method .map should be used instead of .for
* The REPL is strict by default now, that leaves only '-e' lines to be lax
* Implement new @*INC handling (about 30% faster startup time)
  (bare startup time is now below 100 ms on some machines)
* Implemented CUnions which map to the union C type definition for NativeCall
* Implemented HAS declarator for attributes to mark it embedded into the
  CStruct or CUnion
* Lexical pragma 'use trace' now outputs statements on STDERR

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
  * non-blocking I/O (in progress)
  * much of Synopsis 9 and 11

There is an online resource at <http://perl6.org/compilers/features>
that lists the known implemented and missing features of Rakudo's
backends 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.
