After nearly 1000 commits, two hackathons, and an entire month of hard work, I am delighted to announce that Pugs 6.2.8 is finally upon us:
http://pugscode.org/dist/Perl6-Pugs-6.2.8.tar.gz SIZE = 1309147 SHA1 = efd32419dcddba596044a42564936888a28b3c69 A live CD is available as usual, courtesy of Ingo Blechschmidt: http://linide.sf.net/pugs-livecd-6.2.8.iso This release represents a new direction in Pugs development. Instead of a proof-of-concept Perl 6 interpreter, our new focus is toward a full-fledged Perl 6 compiler suite, with a core representation (PIL, Pugs Intermediate Language) and multiple backends, including Parrot, Haskell and Perl 5. Moreover, we are gradually porting more parts of Pugs from Haskell to Perl 6. In particular, src/perl6/Prelude.pm is now the preferred place to implemente new built-in functions that can be defined with other primitives; the Parrot backend uses more primitives defined in src/perl6/Prelude/PIR.pm. The next Pugs Apocryphon will cover this new roadmap in detail; meanwhile, please read http://svn.openfoundry.org/pugs/docs/notes/plan for an overview. Again, thanks to all lambdacamels for building this new ship with me. Enjoy! /Autrijus/ == Changes for 6.2.8 (r5577) - July 13, 2005 === Pugs Internals * Added code generation backends: "PIR", "PIL" * Pugs can now generate PIL (Pugs Intermediate Language) * ...and emit PIR (Parrot Intermediate Representation) from PIL * New "make pirsmoke" target runs test suite using PIR backend * "Test.pm" can be compiled to PIR * "Prelude/PIR.pm" added with Perl 6 versions of some builtins * "pugs -CPIL -e 'say 123'" for dumping PIL from code * Implicit variables like "$^a" now only work in bare blocks * Initial support for "%*INC": multiple "require" calls run only once * Named binding is now done in an inferencing phase before positional binding * New Haskell builtins: "IO::tell" and internal filehandle test functions * New PIR-specific builtin: "leave" * New Prelude builtins: "File::seek", "localtime", "trans" * New builtin classes: "Proxy", "Control::Caller", "Time::Local" * New trait for Prelude.pm: "is builtin" (installs into the global namespace) * Pairs in variables now bind to named parameters just like pair literals do * Parse "trusts ClassName" and "my $foo is trait_name" as no-ops * Parse fractional number literals starting with a leading dot: ".1" "-.1" * Qualified names and exports now dealt with consistently * Support for "does RoleName" and "is ClassName" within class declarations * "&foo" in module "Foo" now looks up "&Foo::foo" as well * "@?INIT" and "@?CHECK" renamed back to "@*INIT" and "@*CHECK" space * "Bare" and "Parametric" types merged into "Block" * "MY", "OUR", "OUTER", "CALLER" can no longer be used as user-defined packages * "Prelude.pm" is now pre-compiled to reduce startup time * "multi foo { ... }" is now a shorthand for "multi sub foo { ... }" * "my Foo $foo .= new(...)" parses and works * "our" variables in packages now generate qualified symbols * "use perl5:DBI" replaces the old "use DBI--perl5" syntax === Bundled Modules * New Perl 6 modules: * "DateTime::Set" * "DateTime" * "HTTP::Server::Simple" * "Module::Pluggable::Fast" * "Perldoc" (partial port) * "Set::Infinite" * "Span" * "Tree::Visitor" and "Tree::Visitor::FindByPath" * "WTemplate" - the first Perl 6 templating engine * New Pugs-specific modules: * "Perl-Compiler", a PIL representation in Perl 6 * "perl5/PIL-Run", a Perl 5 prototype of Perl 6 runtime environment * "perl5/Perl6-MetaModel", a Perl 5 prototype of Perl 6 object model * Completed port: "Locale::KeyedText" * Compiles, executes, and passes whole pristine test suite * Updated version to 1.5.0, corresponding to the Perl 5 version 1.05 * Some skips and workarounds remain due to missing Pugs features * Completed port: "Test::Builder" === Test, Examples and Documentations * Examples of methods acting on builtin types in "examples/vmethods/" * Interpreter and debugger for the l33t language in "examples/obfu/l33t.p6" * Low level sanity tests in "t/01-sanity/" for the PIR code emitter * More JAPHs added to "examples/japhs/" * New directories: "examples/continuation" and "examples/unitfunctions" * Overview of PIL-based compilation roadmap in "docs/notes/plan" * Perl 6 Rule grammar and related files added to "module/Grammars/" * Script to generate Haskell source's import graph as "util/importgraph.pl" * Updates and cleanups to PA01; master copy is now "docs/01Overview.kwid" * YAPC::NA talk: "Apocalypse Now" (in "docs/talks/Apocalypse_Now.spork") === Bug Fixes * Call parrot with "-G" (CGP) instead of "-j" (JIT) runcore to avoid segfaults * Fixed "!~" to mean negated "~~" instead of "ne" * Fixed ".isa" to agree with smartmatch results * Fixed order of method invocation in "BUILDALL" and "DESTROYALL" * New environment variable "PUGS_PARROT_OPTS" for invoking external parrot * Qualified and global variables may now be used without declaration * "$hashref.does(Hash)" now returns true * "&say =:= &say" now evaluates to true * "(42).kv" now dies and "(42,).kv" works * "[1] <=> [2]" no longer misparsed as "[1]{'='}[2]" * "caller" now counts "eval" and the topmost "main" as one frame * "qq{ ... { code } ... }" no longer ignores the interpolated code * "redo" and "next" now works correctly inside loop blocks * "sleep()" returns seconds slept instead of undef * "try" is now capable of catching all type casting errors
pgpOt1Ib9WbsP.pgp
Description: PGP signature