First, the bad news: A couple hours ago, while I'm busy hacking the infix "Y" (zipping) operator, there was a muffled "boom" inside my laptop's hard disk; then the disk is spinning like mad, and the screen is overflown with bad sector messages. Next thing I know, I'm left with a thoroughly broken disk that is sprinkled with some sort of white powder stuff, and nearly all sectors are unreadable. Sigh. So I'm stuck with this horribly slow iBook G3, at least until I can get the hard disk repaired.
But now, the really, really good news. The Pugs Development Team has 7 committers now -- alinbsp, bestian, hcchien, ingy, juerd, ycheng and yours truly -- and the speed of code churning has more than doubled. Wow.
Pugs also has its own site pugscode.org now, after the fashion of poniecode and parrotcode, hosted in a machine sponsored by xs4all. We also started a new IRC channel, irc.freenode.net #perl6, to coordinate daily (or, more likely, hourly) development tasks. All is welcome to join!
At the code front, lots happened today:
- Hash support has landed. There's a new caster that respect LValue context, and converts between List/Array/Hash/Scalar/Undef in a perlish fashion. Unfortunately it broke the slurpy scalar multisub in quicksort.p6; I'll fix it tomorrow.
- The ever-helpful viirya prompted me to check in the dynamic parser code that puts parseOp into the State monad -- that is, it dynamically rebuilds its unary/list prefix function table, and distinguish between their precedence levels. It also clears the path for user-defined precedence and associativities.
- "make test" on platforms with older perls should now work, thanks to clkao's prodding. The fun thing is that perl runs a
pugs -le 'print join qq[ ], @INC' before the actual test, and the solution is to simply implement join, qq and @INC in pugs. ;)
- Also fixed is the often-complained-about ReadLine dependency. It's now lifted unless you have Term::ReadLine::Gnu installed on your system. ingy also checked in fixes to make "make clean" happy.
- tbone suggested that we change the abstract in META.yml from "Perl6 User's Golfing system" to "A Perl6 Interpreter" to reduce confusion, which I promptly did.
- ycheng made the IO operations return false on error; he also added "rename", "chdir", "sleep" and fixed up "close", "open", "mkdir" and "rmdir".
- Some small primitive and constructs like "join", "split" and "unless".
- Juerd begins committing various real-worldish tests, as well as a "Dialect" test that will exercise the macro facility in the future.
- I have begun rework the Parsec Expr parser builder, to support nested unary prefix like "!!! 1", which now works, much thanks to Juerd's testing.
So, there you have it: A team, an IRC channel, and a homepage in one day. Can't ask for more. :-)