After persistent nudges and veiled threats of dire consequences from various people, I'm finally back from YAPC::Asia and OSDC.tw (and their velocity-approaching-singularity hacking sessions), renewing the attempt to capture the past month's Pugs/Perl6 developments, up and including the exciting new concept of, well, Capture objects. :-)
So, here is a random list of potential things to recap about. Please do leave a comment if you'd like to see more coverage of a certain item, or suggest things that I've missed.
- The podcasts for perlcast interview and Introduction to Pugs (YAPC::Asia) are online; check them out for a quick refresh of the general development context.
- The Perl5-based lrep implementation, spearheaded by fglock, has seen many improvements: It now has a precedence parser, another CPAN release of the rule engine, a much revamped Perl 6 Grammar, and much more besides.
- The PGE-based implementation has received a flurry of commits from pmichaud recently, and simple expressions and basic conditionals are working! Before it can run Pugs's Test.pm, though, we really need a test harness so that it can share Pugs's sanity tests. Takers welcome!
- The Haskell-based implementation continued its role as a playground for experiments in new Perl 6 language designs -- both for verifying working ideas and exposing hidden flaws. Thanks to Larry (aka TimToady)'s continuous presences in #perl6, we have seen many experiments and refinements of this sort, such as the long dot, inline comments, sigil-casting operators, etc...
- During the Tokyo Hackathon, I worked with Larry to remove the concept of references from Perl 6, along with confusing concepts such as auto-enreferncing and auto-dereferencing. Now a Scalar holding an Array object is... well, just that.
- As a consequence, the \ form now captures an argument-list as an object, e.g:
\($obj: $pos, name => $named)
We've been talking about unifying this with Match objects into a Capture object -- I'll work with gaal tomorrow on detailing their consequences into something spec-ish, possibly to fill in the now-misnamed S08: References slot.
- Dan Kogai (the Encode.pm maintainer and fantastic host-of-hackathon) and I listed a series of findings about Good and Bad ideas from Perl5's text processing design, which will evolve into a more comprehensive S15: Unicode. In short: confusing byte-buffers and character-strings -- and providing APIs to propagate the confusion -- is bad, mmkay? ;-)
- Various perl5-as-a-Perl6-runtime efforts continued. Clkao's work on Data::Bind proved helpful in reconciling Perl5's "everything is a SV but only occasionally objects" model and Perl6's "everything is an object but some are immutable values" model.
- Also, Ingy is back to improve on Module::Compile, after a short detour with Damian and Larry into the land of S26: "Perl Document Object Model" (PDOM - note the "O" in POD is conspicuously missing this time).
- The quest for PIL2 -- the runtime-only, minimally desugared Perl 6 -- was rekindled, owing much to what I've learned from Matz and Sasada about Ruby/YARV's execution model. As fglock seems to be happy about the embed-perl6-in-rules way of implementing parser combinators (aka Parsec - cf. gaal's slides) for the self-hosting Perl 6 parser, and pmichaud expressed interest in sharing a common grammar base, the short-term goal for me would be coming up with such a BEGIN-free minilanguage suitable for writing AST-transforming programs and embed them into rules.
...hmm, what else. To convey more context, maybe I should start expanding these dense summaries in the next few entries. :-) Again, feel free to suggest more topics for me to write about. See you tomorrow!