Day 134: Seventh day at Leo's: User-defined subs!

autrijus on 2005-06-17T23:38:57

After three day's work I've finally hunted down the register alligator, an IMCC bug that prevented full CPS transform with the current calling convention, because it will restore registers in the wrong place. The alligator was one of the main reasons why chip, leo and I are in favor of the new calling convention, as well as variable-sized register frames that would never spill.

Thanks to geoffb, we now have a set of sanity tests, gradually leading to the use of Test.pm itself. I'm glad to report that, with user-defined subs and basic control structures, all the sanity tests are working save Test.pm itself, which I hope to get working tomorrow.

In my copious spare time, I've also surveyed the implementation strategies of Boo and IronPython. I'm now fairly convinced that Parrot's design is sound, and the implementation glitches -- i.e. its uncanny ability of segfaulting an infinite loop in constant time -- can be ironed out with leo's patch monstery.

I'm grateful to #parrot people in irc.perl.org for helping me out; thanks also to putter, integral, iblech and other lambdacamels for crossing the bridge with me, filling in primitives, namespace support and generally getting parrot/pugs up to speed... Together we'll make this new ship fast and robust! :-)