[Phoenix-pm] [ANNOUNCE] Pugs 6.2.12 and v6.pm released!
Scott Walters
scott at illogics.org
Tue Jul 4 08:43:22 PDT 2006
----- Forwarded message from Audrey Tang <autrijus at gmail.com> -----
Subject: [ANNOUNCE] Pugs 6.2.12 and v6.pm released!
Date: Mon, 3 Jul 2006 23:57:01 -0400
From: Audrey Tang <autrijus at gmail.com>
Changes for 6.2.12 (r10930) - June 26, 2006
Licensing Changes
* The [1]src/ tree and the pugs executable are now released under
the permissive MIT license, in addition to Artistic and GPL
* A new [2]third-party/ tree to hold bundled prerequisites
originated from non-Pugs projects
New Perl 6 modules
* [3]ext/Relation/ - Relation type for Perl 6 (incomplete)
* [4]ext/Getopt-Std/ - Simple command-line parsing
Updated modules
* [5]ext/Locale-KeyedText/ - Added export_as_hash() methods
* [6]ext/Rosetta/: Multiple additions and rewrites
+ Merged ext/Rosetta-Engine-Native/ in, renamed to ::Example
+ Now officially incorporates "The Third Manifesto"
+ Rewrote half of Language.pod
+ Updated the DESCRIPTION and class list of Rosetta.pm
+ Added new core module Rosetta::Shell and example shell.pl
+ Added new documentation file Rosetta::SeeAlso
+ Various other documentation additions and edits
* [7]ext/Test/: Avoid the use of junctions to make Parrot/Perl6's
life easier
Perl 6 on Perl 5 (under [8]misc/pX/Common/)
* Data-Bind - Implement Perl 6's calling/binding convention on Perl
5
* Inline-Parrot - a C version of Inline-Parrot - uses NCI for data
exchange
* Module-Compile - precompile Perl 5 modules transparently
* P5_to_P6_Translation - beginning of a Perl 5.9 MAD tree parser and
translater to Perl 6
* Pugs-Compiler-Perl6 - Compiler for Perl 6 (implements 'use
v6-pugs'):
use v6-pugs; say "Perl 6"; use v5; print "Perl 5"
* Pugs-Compiler-Precedence - an operator precedence parser, built
around Parse::Yapp
* Pugs-Compiler-Rule - Compiler for Perl 6 Rules
* Pugs-Grammar-MiniPerl6 - translate Perl 6 rules into haskell
Parsec
* Pugs-Grammar-Perl6 - a Perl 6 parser - parses Test.pm!
* lrep - a bootstrapped, very minimal Perl 6 compiler written in
Perl 6
* re-override - Swaps in an alternate regexp engine:
./perl -we 'use re::override-perl6; print "a" =~ /<word>**{1}/';
Test, Examples and Documentations
* Restored this ChangeLog's entries for v6.0.0 thru v6.0.8, which
were truncated in r8916, apparently from gnome's copy-paste buffer
limit
* [9]docs/Perl6/Doc hierarchy, installable Perl6::Doc
* [10]docs/Perl6/FAQ/Capture.pod - FAQ on the new Signature/Capture
convention
* [11]docs/Perl6/FAQ/FUD.pod - Fears, Uncertainties and Doubts about
Perl 6
* [12]docs/talks/p6myths2.html: Juerd's talk "Perl 6 Myths"
* [13]docs/talks/peek.spork: Gaal's OSDC talk "A Peek into Pugs
Internals"
* [14]examples/concurrency/: Added sample usage on Software
Transactional Memory
* [15]examples/qotw/: Added the QOTW 8 Expert solution
* [16]examples/rules/: Added a sample BASIC parser
* [17]src/Pugs/Parser - Perl 6 grammars for Capture.pg and
Signature.pg
* [18]util/cperl-mode.el - Emacs mode for Perl 6
Feature Changes
* Pugs now builds in a single pass
* Removed support for GHC 6.4.0 and added support for GHC 6.5
* Removed support for Parrot 0.4.4 or below and added support for
Parrot 0.4.5
* &?SUB is replaced with &?ROUTINE; $?SUBNAME is replaced with
&?ROUTINE.name
* Arguments beginning in parens, such as f ('x')=>1 , is now always
positional
* Array and hash sigilled match variables, such as @0 , @<foo> and
%<bar>
* Assignment with non-obviously-scalar left-hand side is now in list
context:
+ @a = 1,2,3 now parses as @a = (1,2,3)
* Broke down Parser and AST.Internals to smaller files so rebuilds
are faster
* Builtin functions no longer defaults to $_ ; write .ord instead of
ord
* Compile Prelude.pm and Test.pm , to YAML bytecode for faster
loading
* Declarators are now lexical: { $x++ unless my $x } increments
$OUTER::x
* Declarators can now occur at expression position: my $x + my $y
works
* Declarators no longer take qualified names: our $Foo::x is invalid
* Experimental support for Software Transactional Memory and atomic
blocks
* Hash initializers now revert to bias-to-left behavior as in Perl 5
+ In {X => 1, X => 2} , the value of X is 2, not 1
* If a block ends on a line by itself, an implicit ; is assumed if
possible
* In the interactive shell, :d and :D (dump parse tree) now
continues the parse from the current environment; use :reset to
reset the environment
* More helpful diagnostics when calling unsafe builtins under safe
mode
* Multiline support in the interactive shell reports unrecoverable
parsefails
* Names of named arguments must always be a bareword now, such as:
f(name=>1); f(:name(1));
* New AST-dumping backends: Parse-Pretty , Parse-YAML , Parse-HsYAML
* Parse-time binding ::= is now fully supported
* Proper desugaring of .= expressions, such as @a .= map(&sqrt)
* Prototype objects: my Dog $fifo now assigns ::Foo into $fido
* Removed support for require ::Class::Literal
* Removed support for rx_ macros in Prelude for user-defined rule
handlers
* Quotelike constructs such as rx and qq no longer takes `#` as
delimiter
* Support for Unicode bracket characters for quotelike operators
* Support for bracketed comments: #(...), #<<< ... >>>, etc
* Support for controlled backtracking and whitespace sensitivity via
distinct token/regex/rule delecarators
* Support for environmental variables such as $ENV::PWD and $+PATH
* Support for implicit-topic dereferences such as .[0] and .<foo>
* Support for long dot syntax: $foo .blah
* Support for scan metaoperators: [+] 1,2,3 evaluates to (1, 3, 6)
* The -M command line switch can take import arguments: pugs
-Mlib=foo
* The parser is now much faster by being mostly predictive
(non-backtracking)
* The postfix infiniterange is no more; write 1..*` instead of `1...
* Two my $x declarations in the same scope is now no-op instead of
an error
* Use Data.ByteString for fast string representation
* Using libraries from embedded Perl 5 can import functions now
* Whitespace disambiguation implemented on if , unless and for :
if %ENV{ 3 } { 4 } # hash lookup on %ENV
if %ENV { 3 } { 4 } # %ENV by itself
* YAML bytecode is now versioned to reduce incompatibilities
* ¬ is now unary instead of a list operator
* :!foo is now a shorthand for foo => False
* bool::true and bool::false are renamed to Bool::True and
Bool::False
* make upload-smoke now uploads smoke test automatically
* my $!x is now recognized as an alternative spelling for my $x
* q:code {...} gives ASTs in macros
* readline and =$fh now autochomps
Bug Fixes
* (1.3 % 1) was evaluating to 0; now it evaluates to 0.3 like
everybody else
* An uninitialized Code is no longer nullary: my &f; f 1 is not a
parsefail
* Chained assignments now return lvalues properly: $x = %y =
(1,2,3,4);
* Implicit variables ($^x) is no longer allowed in statemeent-level
bare blocks
* Implicit variables following a declarator was broken: {my $x;
$^y}.(42)
* In (@x, @y) = (1,2,3) , the @y is now cleared into an empty list
* Invalid rules in embedded Parrot no longer triggers an uncatchable
exit
* Lexical imports are no longer discarded upon block reentry
* Method invocant is self and $?SELF but no longer $_
* Named-only subs such as sub f (:$x!) {} no longer parse as unary
positional
* Opening a file for writing now turns autoflushing on by default
* Short-circuit operators now works again
* Statement-level return and yield now propagates contexts correctly
* Statement-level bare blocks now counts as one scope for OUTER ,
not two
* Statement-level bare blocks now runs under all contexts: (sub { {
3 } }).()
* Strings outside ASCII range no longer raises exceptions at the
PGE/Parrot bridge
* The bogus comma-less block argument form map {$_} 1,2,3 is no
longer supported
* %.foo and @.foo now always flattens in argument lists
* &slurp and &readline evaluates eagerly and no longer races with
&unlink
* 1. was parsed as a valid integer, causing ambiguities; it's now
invalid
* @foo.perl works correctly when @foo is recursive
* f(()) now passes &f an empty list, not undef
* sign and <=> now fails on undefined arguments, instead of
returning undef
* slurp works correctly on UTF-8 files
* sub f (@x) {}; f([1,2,3]) now works as it's no longer under slurpy
context
References
1. http://svn.openfoundry.org/pugs/src/
2. http://svn.openfoundry.org/pugs/third-party/
3. http://svn.openfoundry.org/pugs/ext/Relation/
4. http://svn.openfoundry.org/pugs/ext/Getopt-Std/
5. http://svn.openfoundry.org/pugs/ext/Locale-KeyedText/
6. http://svn.openfoundry.org/pugs/ext/Rosetta/
7. http://svn.openfoundry.org/pugs/ext/Test/
8. http://svn.openfoundry.org/pugs/misc/pX/Common/
9. http://svn.openfoundry.org/pugs/docs/Perl6/Doc
10. http://svn.openfoundry.org/pugs/docs/Perl6/FAQ/Capture.pod
11. http://svn.openfoundry.org/pugs/docs/Perl6/FAQ/FUD.pod
12. http://svn.openfoundry.org/pugs/docs/talks/p6myths2.html
13. http://svn.openfoundry.org/pugs/docs/talks/peek.spork
14. http://svn.openfoundry.org/pugs/examples/concurrency/
15. http://svn.openfoundry.org/pugs/examples/qotw/
16. http://svn.openfoundry.org/pugs/examples/rules/
17. http://svn.openfoundry.org/pugs/src/Pugs/Parser
18. http://svn.openfoundry.org/pugs/util/cperl-mode.el
(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 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 "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
----- End forwarded message -----
More information about the Phoenix-pm
mailing list