Today is the most productive day since Day 1... But you already know that. :-) Seriously, we reached a breakthrough today, because the first genuine Perl 6 module, Test.pm, now works correctly, and we are converting existing unit tests to use it. It should make writing unit tests much easier in the future.
In other news, we have three new committers today, bringing the count up to 10. Together we have hacked in these features:
- Closure are now closed under their creation site, not caller's site. This has the effect of making "my $x; sub { eval $_ }" always see the $x in the lexical scope, which differs from Perl5's treatment (which only sees $x if it is explicitly mentioned in the eval string). It may require a clarification, but I like the Pugs approach.
- Errors in assignments are now trapped; in general, the error propagation logic is now straightforward.
- push() and unshift() implemented.
- END block, @*INC, and ported %*ENV on win32.
- Lots and lots of tests for things resolved in the last few days.
- The very exciting "require" primitive.
- Parsing for pointy subroutines no longer conflicts with unary negation. Similarily, binary != is no longer blocked by unary !.
- undef in list context won't flatten into a null list now.
Oh, and finally, I have relicensed Pugs under the Artistic 2.0b5 license, as specified in RFC 346. It is still dual licensed under GPLv2, too.
That's it for today. See you tomorrow!