|There's more than one way to do things|
Pugs 6.2.12 and v6.pm released!by audreyt (Hermit)
|on Jul 04, 2006 at 04:13 UTC||Need Help??|
(Due to non-stop Hackathon since YAPC::NA, this announcement has been delayed for a week. :-))
I'm glad to announce that Pugs 6.2.12 is now available from CPAN:
This release features much better performance: Building Pugs is 3 times faster; compiling Perl 6 programs becomes 10 times faster; running Perl 6 programs is now up to 2 times faster.
We also support various Perl 6 syntax changes since the last release, as well as exciting new features, such as atomic code blocks with Software Transactional Memory (STM) semantics.
(See the full change log for additional details of what's new in 6.2.12.)
6.2.12 marks the last release with the 6.0.x abstract syntax tree (AST) to represent Perl 6 programs. We are currently switching to a new AST that supports the new Signature/Capture calling convention, multi-dispatch with constraints, and a full Meta-Object Protocol (MOP). We are developing this new runtime simultaneously as Haskell modules and Perl 5 CPAN modules, to ensure that they have identical semantics.
To this end, I'm happy to announce that "v6.pm", a prototype Perl 6 Compiler implemented entirely in Perl 5, is also available from CPAN:
All Perl 5 components are released as separate CPAN modules. One can use them as pure-perl5 modules, to get fully-conformant Perl 6 features without the need of using Perl 6 syntax provided by "v6.pm".
(These CPAN modules maintain their own release cycles; we will release more components on CPAN as they are abstracted out from the Pugs runtime.)
The .meta API for Object/Class/Method reflection is supported by the "Moose" and "Class::MOP" modules:
The compiler and runtime for Perl 6 Grammars (top-down) and operator precedence (bottom-up) is available as the "Pugs::Gramamr::Rule" and "Pugs::Grammar::Precedence" modules:
The calling convention with named, optional, and slurpy arguemnts is supported by the "Data::Bind" module:
The precompile-Perl6-to-Perl5 mechanism is based on "Module::Compile", a safe and composable replacement to source filtering:
In summary: Perl 5 is now a first-class virtual machine for Pugs, and in this journey toward self-hosting, we will share as much common structure as possible between the Perl 5, Haskell, and the Parrot runtimes.
With a prototype end-to-end implementation written in pure Perl 5, we are entering the "Hack, Hack, Hack" phase of the (imaginary) Perl 6 timeline from nearly one year ago:
I'd like to thank Flavio Glock for initiating and leading the v6.pm effort, and all lambdacamel and lambdamoose on irc.freenode.net #perl6 for their relentless enthusiasm in getting Perl 6 deployed to the Real World.
See you on IRC!