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`, `@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
http://groups-beta.google.com/group/perl.perl6.compiler/browse_frm/thread/a28bef89de27ef42?hl=en
I'm going to go try this out.
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.
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.
Regards,
Grégoire
--
Grégoire Péan aka PixiGreg
www.pixigreg.com
m...@pixigreg.com
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:
http://groups-beta.google.com/group/perl.perl6.compiler/browse_thread/thread/6753b8a160f24afe/e5dff40ca9a698b6#e5dff40ca9a698b6
http://groups-beta.google.com/group/perl.perl6.compiler/browse_thread/thread/1f38571c074915e2/decc9726c8e8e5f2#decc9726c8e8e5f2
-kolibrie