Day 25: Apocryphon 1!

autrijus on 2005-02-25T20:38:02

Today I completed the first installment of the Pugs Apocrypha -- Pugs Apocryphon 1: Overview of the Pugs project. If you are still wondering what Pugs was about, please read that document first. :-) Many thanks to people who have contributed questions; I have postponed the more technical ones to the next Apocryphon.

In this Apocryphon, I have stated my decision of not submitting a TPF grant for Pugs. Although Ingy mentioned some psychological factors, the real reason is that I think it would be more helpful to donate time to the Perl 6 project by hacking Pugs, rather than asking TPF for money to do the same thing.

So with Apocryphon out, I will finally get some time to hack Pugs code during my stay in Beijing for AOSS, between Feb 27th and Mar 6th. During that week, I'll also talk with perlchina folks about hcchien's initiative to translate Perl 6 documnents into various languages, as well as try to get more people to try out Pugs.

In other news, we have two more committers on board. viirya was the one who sent the first patch to pugs; after 3 days of work, he finally tracked down the hideously silly bug that caused undef(0) to be treated as nullary, and we promptly fixed that problem. Much kudo for his persistence.

Another committer is Luke Palmer (luqui), who threatened to implement Rules in Parsec, so he can use it to parse Perl 6 and rewrite Pugs in Perl 6. On his first day into learning Haskell, he made good on his threat by implementing qq[] with matching brackets, string interpolation and hash subscripting in the Pugs parser. Wow.

Stevan, bsmith and duff continues to polish the test suite, bringing the total number of tests up to an impressive 437 in a couple days. nnunley committed a particuarly nifty send+more=money solver into the examples/ directory, showcasing the use of junctions in Perl 6. It doesn't run yet, but will be soon.

Jesse Vincent (obra) plays the junior Perl 6 manager role pretty well: at his suggesion, I have moved tests for &?CALLER_CONTINUATION, a speculative implementation of escape continuations not found in Synopses, into a new t/unspecced/ directory. The idea is everything else in t/ and Perl6/lib/ can then be trivially shared between different Perl 6 implementations.

As I'd like to release 6.0.9 before I fly to Beijing, tomorrow I'll try to get all examples/ running, implement multidimensional (and hopefully sliced) array assignment needed for is_deeply(), and cut a release. Let's hope it go well. :-)

Oh, and I'm thrilled that ziggy is finding a use for Parsec on parsing domain-specific languages. It's nice to see Haskell improving camelfolk's lives. It's not only one direction, though. #perl6 is already talking about improving GHC's tool chain by writing a code coverage tool, based on pjcj's excellent Devel::Cover module, so we can identify untested conders in Pugs. 'Tsall good. :-)