On Feb 7, 2006, at 15:31, Stevan Little wrote:
Now I am not as involved in Parrot as I am in Pugs so I might be way off base here, but from my point of view Parrot still has a long way to go before it runs Perl 6 code. Part of that is because the bridge between PIR/PMCs and Perl 6 just does not exist yet (either in code, or even conceptually). Having PGE parse Perl 6 code only gives us an AST, it does not give us running code. And even if we have a nicely massaged AST, running Perl 6 is not a matter of just walking the tree and evaluating it like it is in Perl 5 (of course, I am simplifying quite a bit here). We found (a few months ago) in Pugs that this model just isn't robust enough, and Perl 6 is going to need a more sophisticated "runtime" environment to support many of it's features. This "runtime" (or as we have been calling it in Pugs the "Object Space") will need to exist on top of Parrot too since it is far to Perl 6 specific to be implemented into the Parrot core. This is the kind of stuff that Yuval is talking about. The missing bits that need to exist in the nether-region between perl6-language and perl6-internals. We are building from the bottom-up (Parrot) and the top-down (Perl 6 - the language) and it seems (at least to many of us on the Pugs project) that there is a big hole somewhere in the middle.
You imply here that obstacles to implementing Pugs are necessarily obstacles to implementing Perl 6. That's not entirely accurate. The bootstrapping Perl 6-on-Perl 6 architecture does require a high degree of abstraction. The choice of architecture means there's a greater gap to fill between the abstraction and the core implementation. This was my original objection to Pugs, but I changed my mind. You all have demonstrated incredible skill and energy over the past year, and I'm confident you will figure out a way to do it.
But, there is another route, and we're working on it at the same time. From the Parrot perspective, PGE parses the source, its output is translated to an AST (or a couple of intermediate ASTs), and that is translated either to PIR, or directly to bytecode. I'm working on a prototype of this now in Punie, specifically so we can try out the whole path from source code to bytecode.
Perl 6 will get implemented. Allison