Day 82: 6.2.1 released!

autrijus on 2005-04-23T22:59:50

I am happy to announce the availability of Pugs 6.2.1 on CPAN, with totally rewritten Context and Type code, a new OO core, call-by-values bindings, as well as a huge number of other improvements and fixes.

Perl6-Pugs-6.2.1.tar.gz
SIZE = 732656
SHA1 = eba45bf9c2ddbe4d207ee32b5f90ae2c30cd6b48

Thanks to everyone who have tried out 6.2.0 and contributed helpful suggestions; 6.2.1 is, I hope, a much more stable release for people who are writing real-world programs in it.

Again, my utmost gratitude to all our lambdacamels for making this release possible and enjoyable.

Cheers!
/Autrijus/

Changes for 6.2.1 - April 24, 2005

Pugs Internals

  • Unification of the quoting code, most quoting constructs now works:
    • <<>> now works
    • Regular expressions are parsed as qq//, but without backslash protection
    • Hash subscripts using <> or <<>> are parsed as general quotations
    • This means interpolation, etc. is done just like q:w or qq:ww
    • $<delim> not interpolate in quoting constructs
    • $), $], $# and $<ws> do not interpolate in rx:P5// constructs
  • Assigning a List into a Scalar now vivifies it into an Array
  • Assigning to pairs now works as expected
  • Autoextracted $_ is now rw by default
  • Better handling for size extensions and exists() for negative indices
  • Bindings implemented for multiple variables
  • Experimental support for eval_haskell() builtin
  • First stab at a lexical $*CWD variable
  • Index in slices now defaults to List: @a[func_returns_array()] now works
  • Initialize readline properly in interactive shell
  • Junctive types in subroutine signatures sub foo (Str|Array)
  • New builtins: >>~<<, kill(), splice, readdir() (list context only)
  • Pairs are now always objects and never values
  • Passing too many slurpy arguments is now an exception
  • Regexps now support :P5 and :Perl5 as well as :perl5
  • Storing into negative array elements now works
  • The Any parameter type no longer inhibits juctive autothreading
  • Variables in rvalue context no longer returns its references
  • %h<> now acts just like %h{} in both lhs and rhs
  • %h<x> now mean %h{'x'} instead of %h{'x',}
  • 'key' => val now works as named param just like key => val did
  • (sub {3} | sub {2})() implemented
  • :P5 flags now work as :P5<imsgx> and :i :g works too
  • :l filename no longer needs double quotes in the Shell
  • <> (list quoting) is now always in list context
  • is rw and is copy implemented in full
  • list() now actually imposes list context
  • want() has been implemented, returning a simple string
Tests, Examples and Documentations
  • Many new tests and cleanup of older tests, we are now at 4500+ tests
    • removed all usages of todo_* functions since the are now deprecated
  • Added isnt(), unlike(), skip_rest, throws_ok functions to Test.pm
  • Added some Perl 6 related talks in docs/talks
  • Added the make smoke target to Makefile
  • Additions and improvements to the util/catalog_tests.pl scripts
  • Improvements to examples/network and added README file
  • Improvments to the util/p5_to_p6.pl script
  • Major refactoring of the Test.pm module (see ext/Test/ChangeLog for details)
  • Memory game, first web application written in Perl 6
  • New Perl 6 tutorial generator ported to Pugs in examples/tutorial_gen/
  • New naive baysian text classifier add in examples/naive_bayesian
  • New quote generator script in examples/motd
  • Params are now loaded on-demand in CGI.pm to take advantage of encoding
  • Several new additions to the Perl 6 Cookbook
  • Svn graphing script added to util/
  • Test smoke scripts converted to use Test::Tap::Model
  • The fp.p6 file has been broken into seperate files in examples/fp/
  • UTF-8 URL decoding added to CGI.pm
Bug Fixes
  • Accessing @array[1000] (without setting it) no longer extends @array
  • Code blocks as subroutine arguments now results in correct arity
  • Code objects now returns the correct subtypes
  • Comma is no longer flattened as arguments for infix and postfix functions
  • Corrected chmod prototype
  • Fixed infinite bug when evaluating +((1|2).values)
  • Fixed passing references into bound variables in subroutines
  • Fixed segfault with :r in interactive shell
  • Hyper operators now extends to the longer, not shorter, lists
  • Inf/NaN handling for ** now works
  • Manpage for Perl6::Pugs now generated correctly
  • RValues at the right hand of array assignment are flattened to prevent loops
  • Restore %h<str> = want() to impose string context on rhs
  • Setting $*CWD to invalid directory is no longer fatal
  • Slurpy params now applies *-flattening to its arguments
  • $x = 1|2; $x = 3 no longer treats 1|2 as a constant
  • %h<a> or %h{'a'} no longer eats trailing spaces interpolated strings
  • (1,(2,3)) in scalar context is now [1,[2,3]]
  • ** no longer truncates the exponent to integer
  • = now assigns correct slurpy context to rhs
  • =cut without a newline at EOF is now parsed correctly
  • return() if 1 now works correctly