Day 101: Pugs 6.2.3 released!

autrijus on 2005-05-12T18:22:54

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), and 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:

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:

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: method foo ($self: $x) and topicalized as $_
    • 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 work 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


Compilation problem on OS X

pjm on 2005-05-13T01:28:59

The last couple of pugs releases have failed to build on my OS X box: all's well it seems until the linking phase, when I get


Compiling Main ( src/Main.hs, src/Main.o )
Linking ... /usr/bin/ld: Undefined symbols:
___DISCARD__
collect2: ld returned 1 exit status
make: *** [pugs] Error 1


So close, and yet so far... Anyone else seen this, and/or have a solution|suggestion to remedy it?

Thanks,
Paul

Re:Compilation problem on OS X

autrijus on 2005-05-13T10:20:22

Please gcc_select back to 3.3; GCC 4.0 is not yet well-supported by GHC.

Re:Compilation problem on OS X

pjm on 2005-05-14T06:49:12

Beautiful, thanks very much. I hadn't realised that 4.0 was the default now. A clean compilation with 3.3 worked perfectly.

Paul