As you might have heard I started to work on my own vm, http://perl11.org/p2/ which is basically the potion vm, to replace parrot and to target perl5. Only steal from the best.
I see no way to fix the awful parrot calling convention, which was made worse and worse. And it's a good way to get out of the community mess, which broke more things than fixed. I believe p2 is already much better than parrot. Performance, tight and expressive data structures, object model, type support, jit, serialization, ... Just native threads and the GC need to take the one from parrot, because parrot's is the best I see around. (PS: Sorry diakopter, I have no idea why you bitch about parrot's threads and GC all the time. Even publicly. Your arguments that subtasks will lead to leaking proxies is worthless. We don't do subtasks, we thread away from the master thread.) And really, does anyone really believe that the jvm is a realistic perl6 vm? It's good like jruby, for server or long-running apps. But you cannot improve startup time. And you mess with Oracle. p2 runs circles around p5, parrot and the jvm, and has much better support for dynamic types. Currently I'm thinking about the parser. leg is nice, but has the limitation that I cannot easily add macros, because the leg packrat-based parser is just a static parser constructor. But I need a parsing library, where I can add non-terminals at compile-time (i.e. macro support). lua's Lpeg seems to be the best in this regard. Those grammers can also express the simplier perl-style regular expressions, so I don't have to link and maintain to the awful spencer mess. perl6 grammars are bit behind, and not practical to be bootstrapped from. Since the potion vm is very tightly coupled to lua, it should be quite easy to come up with lpeg for p2. http://www.inf.puc-rio.br/~roberto/lpeg/ http://www.inf.puc-rio.br/~roberto/docs/ry08-4.pdf For now macros and regex are left behind. If I don't get macros to work (dynamic parsing), I'm also thinking of the pir equivalent for the simplified vm language, used to implement some bootstrapping functionality. Such as the parser, object model translations and type-system adjustments. potion seems to be the natural fit, but something like nqp (not quite p2) might be a good idea also. -- Reini _______________________________________________ http://lists.parrot.org/mailman/listinfo/parrot-dev