I'm happy to report that the intent of the licensing concerns was satisfactorily understood, and I'll be working with TPF and their lawyer to work out the details on implementing this change. (See this thread on chromatic's journal for some more details on the contextual background.)
Thanks a lot to the Perl 6 project manager, Jesse Vincent, for his tireless cat-herding skills. :-)
Prompted by Adam Kennedy's journal entry, I released the long-overdue YAML::Syck 0.42, with proper support for self-recursive data structures, as well as back compatibility with Perl 5.005. Porting that back to Pugs should be straightforward, and will allow us to serialize mutually recursive subroutine calls, as motivated by the recent S02 change on "provisional calls":
f(1,2,3); # &f is not declared so far
In Perl 5, this code is always valid with "perl -c", regardless of whether "sub f" gets declared later in the program. In Perl 6, TimToady recently decided that it now fails at CHECK time, if a &f cannot be located in that scope. This means that almost all function calls now bind to some lexical function, and we can prebind the calls with their lexpad entries in the AST, drastically reducing the amount of indirections involved.
In other news, the #haskell people are now discussing unicode strings, characters with limited unicode range (Char7, Char8, Char16, etc), fixed-sized buffers, encoding tags, and other fun text-processing facilities for Haskell-prime, the next version of Haskell.
I've submitted a modest proposal to detect UTF8/16/32 source code encoding; it's an improved version of S_swallow_bom in Perl 5's toke.c, with the explicit restriction that an unmarked source stream must never be considered ISO-8859-1. I plan to deploy this heuristics for Pugs itself in the near future, so we can recognize UTF-16 source code as well.
Perl 5's defaulting-to-latin1 has caused many subtle problems (in Tokyo, Jesse and I hit that problem with Mason's on-disk file cache), and I'd be happy if both Perl 6 and Haskell can move away from this trap.
I'm still working to unbreak the whitespace problems caused by recent refactoring to Pugs.Parser to make it predictive. Meanwhile, Ingy and I paired in realspace last night, on making a parser for Kwid-like syntax, which needs infinite lookahead (as it allows no parsefails), yet has to be executed in a reasonable time.
Thanks to Packrat, we can write in a rule-like syntax (see the bottom of Wiki.pappy), using the full backtracking and assertion power of regex, yet guarantees parse everything in linear time. Imagine that you can write /((.+)+)/-styled patterns freely, without worrying anything about performance!
Perl 6 is predictive (for human's sake, if not for computer's), so we're still going to use non-backtracking rules instead of backtracking regexes for the Perl 6 grammar. However, Packrat is really addictive... There is already an implementation in Java called Rats!, and I think the memoization technique is quite useful to any language that supports regular expressions.