Perl 6 on Parrot Roadmap Update

by chromatic

I announced last week the release of Parrot 0.5.0, a major milestone in the development of the Parrot virtual machine. The largest accomplishment in this release is the development of a powerful new object system which we believe is capable of serving as the foundation for several modern languages running atop Parrot, including Ruby and Perl 6.

This new object system -- known in Parrot circles as PDD 15 -- was a dependency for Parrot's compiler tools, specifically Parrot's AST.

With PDD 15 in place, well-tested, and stable, Patrick Michaud has in the past week made tremendous progress on Parrot's compiler tools. He's written a Perl 6 on Parrot ROADMAP.

An early milestone there is the completion of a language called NQP, which is a simplified version of Perl 6 built on Parrot which is powerful enough to use to build other compilers. Previously, the canonical way of writing a compiler for Parrot was to use PIR, Parrot's native high-level language. That worked, but PIR is a line-oriented assembly language despite some syntactic sugar, so it can occasionally lead to verbose code. You might remember that a few months ago, we made tremendous progress to make the Perl 6 implementation pass the Perl 6 sanity tests (see Adding a Feature to Perl 6 on Parrot); progress slowed when it was clear that NQP would improve our work tremendously.

As of yesterday, NQP is powerful enough to write real compilers. Within the Parrot source tree, languages/abc is an implementation of the Unix bc command written entirely with the Parrot compiler tools using NQP. Perl 6 is a more complex language, but abc uses enough features of NQP and the compiler tools to demonstrate that they are complete enough to use to write Perl 6.

What's next? Migrating the existing Perl 6 implementation from PIR to NQP. Then the fun begins.


2007-11-28 08:24:41
Congrats Anyway, I'm missing is: what's up with pugs? Was kp6 merged with NQP? What about the haskell parser/interpreter?
2007-11-28 12:47:45
@riffraff, I don't follow Pugs, but as I understand it there haven't been many Haskell hackers to make progress on that implementation recently. kp6 (Perl 6 on Perl 5 and other non-Parrot, non-Pugs backends) is still working. I believe the NQP connection is that both projects are looking into sharing a common AST representation.