What we need is a new virtual machine! Tamarin is a virtual machine which is part of Mozilla's high-performance ECMAScript 4th edition implementation and was donated by Adobe (see the FAQ). Of course, you really want to see the opcodes - hey, it's real bytecode. Now how long will it be until Pugs targets Tamarin directly?
'cuz what the world really needed was yet another port of the most basic, procedural, declare-variables part of Perl 6 to yet another VM.
Re:Oh, Joy
audreyt on 2006-11-07T23:50:45
Well, all three backends of Pugs contains closures and object model support.The fourth backend, namely the Parrot one, indeed lacks in those features, and I'm sorry I haven't been been able to keep up with that backend.
Re:Oh, Joy
chromatic on 2006-11-08T00:12:30
I haven't been been able to keep up with that backend.I find it interesting to speculate where any single backend might be today if not for all of the duplicate work poured into all of the others.
Re:Oh, Joy
audreyt on 2006-11-08T00:31:31
But that is as feasible as having Guido, Matz and Larry working on one single language.:-) That is, fglock++ wouldn't find it fun to hack the Haskell backend; neither would I have as much fun hacking the JS1 backend as iblech++, who probably wouldn't have as much fun hacking on the Perl5 backend...
Re:Oh, Joy
chromatic on 2006-11-08T00:41:04
I would find it highly fun to have a usable, fairly complete Perl 6. I don't think I'm so alone among most of the other Perl programmers who are not you, fglock, and iblech.
It's nice that you're having fun, I suppose. Meanwhile, if it's not too much of a downer, would you mind finishing something? PIL or PIL^2 or whatever it is now would be nice. As I mentioned over a year ago, I was willing to work on a Parrot backend for Pugs if someone would have told me what it needed from Parrot.
Re:Oh, Joy
audreyt on 2006-11-08T11:41:25
Well, if you take the current PIL and emit to Parrot, as we've done nearly a year ago, that is sufficient to get you closures, object model, and more. Chip knew exactly what's needed from Parrot -- a stable API for namespaces, modules, calling convention, object construction and introspection, is all we need.If you look at PIL2JS, which is written in Perl 5, or even the now-bitrotten-by-Parrot-API-change PIL->PIR emitter written in Haskell, and fill in the bits to emit modern PIR, then that's more than enough to get a usable, fairly complete Perl 6 that corresponds to the 6.28.0 milestone.
So you don't need to wait for another intermediate language other than the existing PIL1 -- the idea is that each milestone is a complete sublanguage by itself, and we won't e.g. tackle the typed intermediate language until 6.2831.
There is a very good reason to that; the design space is large, and the spec does not help as much for the more fuzzy parts of the language. For the past year we've been collapsing the hand-wave function of the calling convention (6.2) and object model (6.28), and there is a very comprehensive model for both now in the form of MO/Moose, which has just been ported to the Haskell runtime.
However, if you expect us to collapse the design of intermediate languages for all the other milestones once, then I'm afraid it's beyond my ability.
In other words: We've finished 6.2.0 which is a sublanguage of Perl 6, as 6.28.0 will be. We will not finish the entire Perl 6 before each sublanguage is tested out in the wild and the next milestone is sufficiently collapsed.
Again, that is the only roadmap I find navigable given my very constrained ability. If you'd like to help, that'd be wonderful, but please don't expect me of something that is clearly beyond my capability.
On finishing something, and the motivation thereof
audreyt on 2006-11-08T12:02:39
While we are on the subject of completion and usability, nearly half a year ago you wrote:I appreciate that Parrot people are now working on regularizing the designs and the underlying APIs, as well as revamping Parrot's own intermediate languages. Those are highly needed tasks that will make Parrot more friendly as a target platform.> Where does Parrot fit in all of this?I am speaking for myself, not Audrey (or anyone else) here. I believe that it will be the most complete and most performant backend in the near and medium future.
However, it remains Parrot/Perl6 does not support subroutines, arrays and hashes to this day, which makes it even less expressive than Perl 1. It's futile to talk about completeness or performance -- there are few meaningful benchmarks you can run on a language without subroutines.
And as you have witnessed, several people working on Parrot finds it more fun to implement e.g. Lua and Tcl, as you did for Scheme; that is very much natural and healthy.
However, if you deem that multiple backends delays the development of Pugs mainline, then the same line of reasoning indicates that multiple frontends of Parrot rendered its Perl 6 implementation almost completely abandoned for the last 3 months, judging by the few commits went into it.
I do not support that line of reasoning; to me it is natural that people only work on projects when sufficient motivation is provided.
I hope to get as much people as possible working on Perl 6 by tying their motivation with the Pugs roadmap, but I refuse to tell my collaborators they must concentrate on some single subproject, and I never set a deadline. I think they are counterproductive to our task at hand, and time will tell if it works out better in the end.
Re:On finishing something, and the motivation ther
chromatic on 2006-11-08T18:23:58
I appreciate that you find it
-Ofun
to accuse me of hypocrisy, but the discussion was about Pugs, not Parrot.