On behalf of the Pugs team, I am delighted to announce the release
of Pugs 6.2.3, with Parrot embedding, Perl 6 Rules support (via PGE),
an initial sketch of OO system.  Multi-thread programming with
async/kill/join/detach is now supported as well.

Also of note are many new, working modules under ext/, some using the
newly supported OO system, some using an inside-out OO system based
on closures.

Pugs is available from a nearby CPAN mirror, or from pugscode.org:

    http://pugscode.org/dist/Perl6-Pugs-6.2.3.tar.gz
    SIZE = 894640
    SHA1 = 16599281a8a103d13e4f0041ccba06bddff28f83

As Pugs now requires Parrot 0.2.0 or later for Rules support,
you may wish to install Parrot first:

    http://www.cpan.org/modules/by-authors/id/L/LT/LTOETSCH/parrot-0.2.0.tar.gz
    SIZE = 2696634
    SHA1 = da4231fda3b7fcb842a886bef3d86d477ecc34e6

Thank to all the lambdacamels for flying with Pugs! :-)

Enjoy,
/Autrijus/

== Changes for 6.2.3 - May 12, 2005

=== Pugs Internals

* Pugs can now embed Parrot or use an external `parrot` executable
** Under embedded mode, Pugs is a registered Parrot compiler
** `eval_parrot` and `require_parrot` builtins for running PIR code
** `pugs -BParrot` can compile Perl 6 program to PIR and run it in-memory
* Perl 6 Rules support via Parrot/PGE:
** Named rules and subrule support
** The former `$0` (entire match) is now `$<>`
** `$0` is now the same as `~$/[0]`, i.e. the same as Perl 5's `$1`
** `.from`, `.to`, `.matches`
** `//`, `rx//`, `m//`, `rule{}`
** `s///` and `//` in statement level operates on `$_`
* Basic Object support:
** Accessors generated for public attributes
** Identity operator: `=:=`
** Method chaining: `$foo.bar().baz()`
** Method invocants `foo ($self: $x)` and topicalized invocants in `$_` 
** Public and private attributes, as well as `has $.attr is rw`
** `$obj ~~ Class` support
** `$obj.clone()` support
** `class Foo {}` works (no inheritance yet)
* Experimental `eval_yaml()` support to parse YAML streams
* Experimental support for prefix reduce metaoperator `[+]`
* Hyper operators now works on arrays too
* Improved `.perl()` format for array, hash and pair objects
* Much faster random access to arrays; it's now O(1) instead of O(n)
* Much improved MMD support
* New `is lazy` trait for parameters
* Refactoring of large Haskell modules to improve compilation speed
* Support for building a profiled Pugs
* Undef in grouped lhs: `my ($x, undef, $y) = 1..3;` is now legal
* `$thread.kill`, `$thread.detach`, `$thread.join`
* `%hash.pick`, [EMAIL PROTECTED] and `(list).pick`
* `reduce` primitive
* `state $var` implemented
* `system(Str: List)` and `exec(Str: List)` on Unix platforms

=== Bundled Modules

* All modules have their own `ChangeLog` now
* `Algorithm::TokenBucket`, with closure objects
* `Config::Tiny`, with closure objects
* `Kwid::Event::Parser`, with procedures
* `Net::IRC`, with closure objects
* `Perl::MetaModel`, prototype of Perl 6 OO meta-model in Perl 6
* `Pod::Stream::Parser` renamed to `Pod::Event::Parser` and added more 
functionality
* `Set`, with Perl 6 objects
* `Test::Builder`, with Perl 6 objects (parses, but does not working yet)
* `Tree::Simple`, with closure objects

=== Tests, Examples and Documentations

* Many new test and several tests refactored, we now have 4921 tests
* Documentation for `hangman.p6` added in `examples/games/hangman.pod`
* New "Monads in Perl 6" example in `examples/functional/monads.p6`
* Script to generate a Pugs Live CD in `util/livecd`
* Several IRC bots added to `examples/network` including svnbot and logbot
* TODO tests now use `:todo<reason>` for better reporting
* The first Perl 6 poem in `examples/poetry/`

=== Bug Fixes

* Logical short-circuiting operators no longer flattens references
* Prohibit Array and Hash dereference on plain values
* Slurpy context no longer flattens
* Stringifying IO handles is no longer fatal
* `$*PID` now works on Win32
* `%*ENV` now completely works on Win32
* `(a => 3+4)` is now parsed as `(a => (3+4))`, not `(a => 3)+4`
* `any().pick` no longer dies
* `my @x = [1]; @x[0][0] = 2` should now work
* `next` in nested `for {}` blocks no longer escapes the outer loop
* `to => 123` parses again; arrow pairs now always trumps unary functions
* `{}` in P5 rules is no longer closure interpolation

Attachment: pgpcgs0Sfnn9X.pgp
Description: PGP signature

Reply via email to