On behalf of the Pugs team, I am elated to announce the release of
Pugs 6.2.5, with much more comprehensive OO support, hyper and reduction
metaoperators on user-defined operators, as well as experimental
coroutine support.
Also of note is pugs.pm
and Inline::Pugs
, two Perl 5 modules that
lets you inline Perl 6 code in Perl 5 programs. The docs/quickref/
series of documents is also helpful as a companion to the Synopses.
You can download Pugs from a nearby CPAN mirror, or from pugscode.org:
Perl6-Pugs-6.2.5.tar.gz
SIZE = 1012358
SHA1 = a4442eb156b919ec139ab2b64e3ea9db47ed371c
A Pugs/Parrot live CD, contributed by iblech, is available as well:
pugs-livecd-6.2.5.iso
Amazingly, the project's velocity is still increasing, with 680 new
commits, compared to 507 from 6.2.3. The graph below shows the growth
of number of commits and committers:
pugs-svngraph-6.2.5.png
Again, my sincere gratitude to all lambdacamels for making this release
as exciting and enjoyable as it is. See you next week!
Thanks,
/Autrijus/
Changes for 6.2.5 (r3794) - May 24, 2005
Bundled Modules
- Fix one broken test from the
Set
module.
Changes for 6.2.4 (r3790) - May 24, 2005
Pugs Internals
- All infix operators now receive reduction forms, such as [+]
- All operators now receive hyperised forms, such as >>+<< and ~<<
- Dereferencers: @{...} and @$var
- Experimental support for coro { ... }, coro name { ... } and yield()
- Experimental support for lazy {...}
- External Parrot for Rules is now kept in a single process
- Inheritance: class Foo is Bar and class Foo does Bar
- Interactive shell commands normalised to always begin with :
- MMD handling is now more sophisticated, and $.chained.attr.methods works
- Much better error messages, with cascading stack trace
- New ./method syntax implemented
- Objects numify to a unique value accessible with $obj.id()
- Parrot compiler backend now handles namespaces and method calls
- Parsing of hierarchical return types: sub foo returns Hash of Str
- Private attributes: has $:foo now generates private accessors
- Private methods: method :foo () and $obj.:foo
- Switch to sum-of-inheritance-level distance for MMD dispatch on invocants
- Symbolic references: $::(...) and $::some::("var")::($bar)
- User-defined symbolic infix, postfix and prefix unary functions
- $?CLASS and $?PACKAGE works; $?ROLE currently works as $?CLASS
- &code.name and &code.arity added
- FIRST {...} and my $x = FIRST {...} support
- INIT {...} and CHECK {...} blocks in void context and as rvalues
- OUTER:: scope implemented
- do {...} literal added
- gather { ... } and take() implemented
- submethod BUILD is called for each parent class and class itself
- time() now returns a fractional number
- try {...} literal allowed at expression level
- warn(), uniq(), fail(), times() implemented
Bundled Modules
- Inline::Pugs and pugs module to inline Perl 6 into Perl 5 programs
- Locale::KeyedText re-added (this was our first contributed module)
- Net::IRC, OO version added
- Perl::MetaModel, prototype of Perl 6 OO meta-model in Perl 6 OO
- Set::Junction and Set::Hash added as implementation backends to Set
- Set now has many overloaded operators
- Test::Builder, with Perl 6 objects (parses, and mostly works -- see tests)
- Tree::Simple, renamed to Tree and converted to OO
- Test now gives better diagnostics to cmp_ok()
- fp module added for functional programming
Tests, Examples and Documentations
- Many new test and several tests refactored, we now have 5600+ tests
- Hangman IRC bot created from hangman.p6
- IRC logfile to HTML converter added
- Initial sketch of Pugs Apocryphon 2 as docs/02Internals.pod
- Much work on internal Haddock Haskell documentation
- OO Wizard RPG game added in examples/games/
- Parrot is now included in the Pugs Live CD
- Perl 6 quick reference documents added to docs/quickref
- Perl6::Rules test suite incorporated into t/rules/
- Removed usage of force_todo() in favor of :todo
Bug Fixes
- Bare blocks containing $_ is now executed correctly
- Correct parsing for user-defined nullary functions
- Hash and array sub parameters are read-only by default, same as scalars
- Post-term invocation in interpolation no longer eat trailing whitespace
- Slurpy hash parameters no longer count as nonslurpy during arity matching
- Type-to-type smartmatch, e.g. Int ~~ Num, now works
- $obj.method($arg1, $arg2) can now MMD dispatch over all arguments
- foo 3 and foo 4 is now parsed as two separate function calls
- loop (;0;) {...} will no longer execute the loop body
- map({...} @list) is no longer valid syntax
- next now re-evaluates condition in loop constructs
- returns Foo::Bar from subs/methods now works
- split// now attaches the submatches to the resulting list
- state $x = 42 now only assigns $x once
- system() returns proper exit codes