Audrey Tang
Tue, 04 Jul 2006 00:52:20 -0700
use v6-pugs; say "Perl 6"; use v5; print "Perl 5"
./perl -we 'use re::override-perl6; print "a" =~ /<word>**{1}/';
f(name=>1); f(:name(1));
if %ENV{ 3 } { 4 } # hash lookup on %ENV
if %ENV { 3 } { 4 } # %ENV by itself
(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:
http://search.cpan.org/dist/Perl6-Pugs-6.2.12/
SIZE: 2693459
SHA1: c9731da8e597591ca7e279766481ce0bece8cfa4
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.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 thatsupports 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 "v6.pm", a prototype Perl 6 Compiler
implemented entirely in Perl 5, is also available from CPAN:
http://search.cpan.org/dist/v6-pugs/
All Perl 5 components are released as separate CPAN modules. One can
use them as pure-perl5 modules, without the Perl 6 syntax provided by
"v6.pm"; this way one can 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:
http://search.cpan.org/dist/Moose/
http://search.cpan.org/dist/Class-MOP/
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:
http://search.cpan.org/dist/Pugs-Compiler-Rule/
The calling convention with named, optional, and slurpy arguemnts is
supported by the "Data::Bind" module:
http://search.cpan.org/dist/Data-Bind/
The precompile-Perl6-to-Perl5 mechanism is based on "Module::Compile", a
safe and composable replacement to source filtering:
http://search.cpan.org/dist/Module-Compile/
http://search.cpan.org/dist/Filter-Simple-Compile/
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:
http://pugscode.org/images/timeline.png
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! Audrey
PGP.sig
Description: This is a digitally signed message part