Perl 6 Progress

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[1] 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.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s