[RELEASE] Pugs 6.2.3 released!

Skip to first unread message

Autrijus Tang

May 12, 2005, 1:58:39 PM5/12/05
to perl6-c...@perl.org, perl6-a...@perl.org
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:

SIZE = 894640
SHA1 = 16599281a8a103d13e4f0041ccba06bddff28f83

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

SIZE = 2696634
SHA1 = da4231fda3b7fcb842a886bef3d86d477ecc34e6

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


== 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`, `@array.pick` 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


May 17, 2005, 11:27:26 AM5/17/05
to perl6-c...@perl.org, perl-perl...@moderators.isc.org
I just asked a question about installing 6.2.3 on windows. This may
have been addressed by Gregoire Pean's installer, which he just
mentioned in a simultaneous post.


I'm going to go try this out.


May 17, 2005, 11:21:33 AM5/17/05
to perl6-c...@perl.org, perl-perl...@moderators.isc.org
1) Do you need parrot to install PUGS 6.2.3 on windows, or is parrot

2) I mainly want to play with perl 6 rules. If someone could point me
to some simple programs that demonstrate perl 6 rules with pugs, that
would be great.

Sorry if this has been covered somewhere else; I am new to this
newsgroup, though I post a lot to perlmonks.

Grégoire Péan

May 17, 2005, 12:04:22 PM5/17/05
to tphy...@gmail.com, perl6-c...@perl.org

No, Pugs is stand alone. No need for Parrot.
A pugs.exe file is produced by the Haskell compiler; it has no
dependencies except the provided libs.


Grégoire Péan aka PixiGreg

Nathan Gray

May 17, 2005, 4:49:12 PM5/17/05
to tphy...@gmail.com, perl6-c...@perl.org
On Tue, May 17, 2005 at 08:21:33AM -0700, tphy...@gmail.com wrote:
> 1) Do you need parrot to install PUGS 6.2.3 on windows, or is parrot
> optional?

I believe parrot is still optional (at least, you can compile without
embedded parrot).

> 2) I mainly want to play with perl 6 rules. If someone could point me
> to some simple programs that demonstrate perl 6 rules with pugs, that
> would be great.

If you want to use rules, parrot is not optional, since the rules engine
is parrot's PGE. You may want to look at these posts for examples:



Reply all
Reply to author
0 new messages