aboutsummaryrefslogtreecommitdiff
path: root/docs/announce/2012.01
blob: 44b1f11d367e821f22a24af563d5033bca9ca317 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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 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/