Day 105: More OO and more Parrot

autrijus on 2005-05-16T20:49:32

I spent almost all day chasing weird bugs after weird bugs for $work, that involves Perl 5.005, DB2, and Windows 2003 -- you really don't want to know the details. So, not much time left for Pugs; however the lambdacamels carried on as usual with amazing velocity.

Stevan and mugwump continued hacking on Perl 6's metamodel document, to a point that I can simply use it as specification for Pugs's OO framework. This is making my life too easy -- the specs and tests are written, so I can be a happy implementation monkey. :-)

Stevan also added a HOWTO on creating your own object model, explaining how to put all these abstractions to use, e.g. creating a thread-safe base class.

The last version of S29 from Rod Adams has been committed to docs/AES/ alongside other "community drafts" of Synopses and Apocalypses. I'm delighted that Aaron (ajs) will carry on with Rod's helpful coodination effort, and Patrick will act as "Cabal bridge" to merge them back to @Larry's official design. *applause*

Darren updated Locale::KeyedText to cleanup workarounds for yesterday's Pugs -- because they work today now. I'm sure tomorrow he will find more workarounds to obsolete.

eric256 updated wizards.p6 to exercise more on the new OO inheritance support, as part of his planning for a grand future. Hmm...

chromatic went into full gear and covered Test::Builder with many many tests. Amazingly, many of them actually passes. This, too, has made my life much easier.

jhorwitz continued to work on Parrot codegen, this time adding support for method invocations, and .namespace generation for modules, packages and classes. Once the rest of OO metamodel is in, we can start seriously align our model with Parrot's class support and see what's missing from either sides.

On more Parrot news, it seems that tewk is rekindling Pyrate, the Python-on-Parrot project. I sent him an invitation to the openfoundry system for free hosting of svn (and mailing list, RT, etc); we discussed briefly about boxed types and how to proceed from here. Now we have champions for Tcl, Python and Perl, I wonder if the Cardinal (Ruby on Python) project will somehow revive...

Leo mentioned he's been reading a lot of STM papers, and he thinks Parrot should support it, too. I'm very excited, as I think efficient support for composable concurrency in SMP settings is a distinct advantage for a VM -- and may even become a neccessity in the near future.

putter reports that with the latest GHC snapshot, x86_64 users can finally build Pugs without problems. Let's hope GHC 6.4.1 will be released soon.

iblech noticed the capitalize() function on S29, wrote test for it, then implemented it right away, so we can easily turn pUGS is cOOl! into the less-l33t Pugs Is Cool! now.

When adding tests for rand(), iblech discovered that foo() < 3 > -1 would parse as foo(){'3'} - 1, because function applications was globbing trailing spaces. It's now fixed.

putter found that not 4,3,2,1 evaluated to 0,3,2,1; that's a bug, because not is supposed to be list operator with low precedence. Perl 5 had it as 4,3,2,0, which is equally bizzare, so I asked p6l for clarification, and Larry responded with some rulings.

A long-standing (that's three days) OO bug has been closed: use Tree; Tree.new is no longer parsefail. Hence all the ::Tree.new workarounds can be eliminated.

iblech added various tests for $?SELF, $?CLASS, $?ROLE, submethods, and many more. He also ported Net::IRC to Perl 6 OO, which would be fully functional except for the missing submethod BUILD support. Warte nur, balde...

iblech also tweaked the Pugs live CD a bit, and added a ?check command to svnbot.p6 to force rechecking of new revisions. It is also worth mentioning that clkao's hack to make svnbot announce committer++ for each line of commit log has been very well received -- and detailed change logs are really helpful too.

Darren fixed Test.pm's style of $ALL_UPPERCASE for non-constant global variables.

masak noted that die "123\n" still incorrectly prints out the stack trace, then added a test for it.

scook0 added more Haddocks for Monads.hs, then added a test for next()'s misbehaviour in loop() blocks.

Corion unTODOed succeeding tests, and noted that map with multi-statement blocks now partially works, but still re-uses the pad for each loop.

Whew. That was a lot. See you tomorrow!