On behalf of the Pugs team, I am delighted to announce the release of Pugs 6.2.2, the first version with a thread-safe, deadlock-free internal storage, based on software transactional memory (STM).
Also, the performance is much, much better with this release; it is at least 10x faster than the default 6.2.1 build, and more than 2x faster than optimized 6.2.1 build for common applications. Because optimized build is now the default, compiling Pugs will take longer than before; please be patient. :-) You can download Pugs from a nearby CPAN mirror, or from pugscode.org: http://pugscode.org/dist/Perl6-Pugs-6.2.2.tar.gz SIZE = 786055 SHA1 = 0cda153c52590ea7ffc17b48195d413c8adc9e16 Much thanks to all the lambdacamels for making this release possible. It has been a wonderful three months working with you folks, and I look forward for many more months to come. Enjoy, /Autrijus/ == Changes for 6.2.2 - May 1, 2005 === Pugs Internals * Many performance speed-ups, including: ** New, much much faster implementation type for Pad ** Replace Data.HashTable with STM Map ** Restructured the Eval monad to be reusable on compilers and interpreters ** Position handling and statement reduction logic re-written ** Add strictness to core Monad and object structures * Functions declared as unary are now parsed as such * Global subroutine declaration is now visible in the whole file * Improved Parrot compiler backend support for mod_pugs * Much better error messages, tracking source file range for expressions * New loop control routines: `next` and `redo` * On Win32, `-s` and `-z` now work correctly * Optimized build is now default; use `make unoptimized` to turn it off * Pugs can now build on Cygwin * `#line 123` and `#line 123 "filename"` both work * `&infix:<%>` raises trappable exception when modulus is zero * `(undef, $x) = (1, 2)` is now supported * [EMAIL PROTECTED] implemented * `BEGIN {...}` blocks now work on both statement-level and term level * `for @a { say }` is now parsed as `for @a -> $_ is rw { say }` * `for @a -> () { ... }` now consumes one element at a time * `my $var ::= expr` works * `print (4)+4` now prints 8, because the whitespace is no longer skipped * `use Module;` supported and happens at `BEGIN` time * `|=` `^=` `&=` for junctions === Tests, Examples and Documentations * Many new tests and cleanup of older tests, we are now at 4600+ tests * API documentation available in `docs/haddock/` * Added an example of IRC bot into `examples/network` * Added simple POD parser into `ext/Pod-Stream-Parser` * Added support for generating Haskell documentation with `make haddock` * Added the tic-tac-toe game from perlmonks into `examples/games/` * Parallel `make smoke` when `%ENV<PUGS_TESTS_CONCURRENT>` is greater than 1 * Patched local `Test::Harness` to display number of TODO tests * Progressive powerset generator from perlmonks added to `examples/` * Smoke testing tool now includes timing data in YAML harness data * German talk /Perl 6, genau jetzt!/ finished === Bug Fixes * Constant references now automatically dereference when used in rvalue context * Junctive `^` should join junctions instead of autothread them * Lone block does not count as `simple expression` anymore * Repair single statements in shell to preserve lexical context * Repair the `list` context hinter * The dot in `123.ref` is now parsed correctly as `(123).ref` * `$_` in subroutine signatures is no longer slurpy by default * `$x = \$x` no longer causes an infinite loop * `NaN` calculations no longer causes infinite loop * `last if foo` now means `last() if foo()` instead of `last(if(foo()))` * `one(1,1).pick` bug fixed; it should return `undef` * `splice([], 1)` no longer causes division by zero errors
pgpTqoipiE5Ik.pgp
Description: PGP signature