Here are some questions for Larry before so I can ask when he wakes up:
- Why does BUILD bind named-style parameters at the end? If it bound at the beginning, I could do consistency/sanity checking on them within the body of BUILD. At the moment, I need to specify them in the signature of BUILD to do that, which is redundant.
That’s all for today (I may continue adding to this list).
Enter my very first purely Perl 6 post. I’ve been working on the PIL implementation in Perl 6. PIL is an intermediate, retargetable semantics tree that represents the basic calculus of Perl 6. We compile Perl 6 into PIL, and then we can target PIL to whatver. PIL is very simple: only one page of Haskell, three pages of Perl 6.
I wrote up the Haskell PIL spec in Perl 6 and now I am writing a Perl 5 backend for PIL. The PIL tree I will hand generate for now, and it should be pretty easy to translate Pugs’s PIL tree to mine (they’re exactly equivalent barring language barrier structures), so that Pugs can be my parser. It’s going pretty well (and very quickly), but I have to implement all Perl 6 operations as subs in Perl 5. It is unlikely that I will be able to convert to “canonical Perl 5”. But that’s okay, as long as I can run most of Perl 6 in Perl 5, and can use what I generate seemlessly from Perl 5.
Meanwhile, we decided that Perl 6 is back to zero-deref instead of infinite-deref, just like Perl 5. This broke half of Pugs, so I’m “assisting” Autrijus in finding all the bugs it created (by writing correct code). The extremely large test suite is not working very well here, because many tests assumed infinite deref.
See my progress here: Perl-Compiler.