From: "Donal K. Fellows" Date: 2002-11-13T00:49:48+09:00 Subject: Re: A vision for Parrot Benjamin Goldberg wrote: > Considering that Jcl and Jython exist, it seems like a reasonable goal (JCL is something else. I'd rather not remember it thankyouverymuch.) > would be to make an interpreter which turns Java's .class files into > Parrot .pasm files. Once that tool exists, one could simply translate > Jcl and Jython into parrot... there would be no need to re-implement > them. > > And one day, in the distant future, there will be a Perl6 decompiler, > which will turn Parrot bytecode into Perl6. Then we'll be able to > convert the translated Jython and Jcl into Perl6 :) $10 says that only ever happens with a performance hit. The problem is that not all bytecodes are created equal. (And Jacl is an implementation of Tcl in Java more in the way that the usual form of Tcl is an implementation of the language in C. The fact that Java uses bytecodes is pretty much just a distraction here. We also have another way of integrating Tcl with Java that keeps Tcl implemented in C, but which integrates almost identically with the Java language.) > > This sort of thing tends to make me suspicious that this is little > > more than a pipe-dream, well, at least as far as Tcl's concerned. (I > > don't know the other languages nearly well enough to comment in a > > useful way.) [...] > Assuming you thouroughly understand Tcl's bytecodes, why not take a look > at Parrot, and see whether the set of bytecodes that parrot supports is > sufficient to do everything that Tcl's bytecodes do? I know a bit about Tcl bytecodes, and a key factor about them is that they are very tightly targetted towards implementing Tcl. Hmm. A quick scan through the documentation doesn't really raise my hopes. Or even leave me with a deep enough understanding of what's going on; is there any deeper description than http://www.parrotcode.org/docs/parrot_assembly.pod.html about? (OK, Tcl's bytecodes need documentation too, but I've already gone to the effort to understand those as part of my maintenance and development duties. I've just not got enough hours in the day.) Unfortunately, the bits that I'm most interested in seem to be the bits with least info (isn't that always the way with complex software systems?) First impressions: what is meant by "string" anyway? Character sequence? Byte sequence? UTF-8 sequence? ISO 8859-1 sequence? [FX: Reads docs] Oh, they carry about what their encoding is with them? That must make working with them fun. How does it handle things like the blecherous monstrosities[*] used for system encodings in the Far East? On a quite separate point, is there a strncmp() equivalent? That would make implementing Tcl much easier... More generally, Tcl would need to use PMCs throughout. The problem is that Tcl's value semantics (copy-on-write) do not line up well with that which Parrot seems to use (object-based) and which, IIRC from the discussions at the time when Parrot was being created, are closely based on those used in Perl even if not precisely coincident. Hence we'd be unable to use ground values except as part of the implementation of higher-level concepts. That'll impact badly on performance. It's at this point that I feel a round of "Stuff it. I'll stick to implementing in C." coming on. I've been quietly watching Parrot for a while now, and I still don't think that implementing Tcl in it is really a winning proposition. I'd love someone to prove me wrong, but proof is building a Tcl interpreter in or on top of Parrot and running the Tcl test suite on it (and getting a decent proportion of the tests passing.) BTW, how does Parrot handle calls to foreign code? The docs I've seen are on the hazy side, and integration with existing C, C++ and FORTRAN monoliths is (alas) all too important in particularly commercial development. Donal. [* The cluster of things known as "Shift-JIS" justifies this term. IMHO. ] -- Donal K. Fellows http://www.cs.man.ac.uk/~fellowsd/ donal.fellows@man.ac.uk -- The small advantage of not having California being part of my country would be overweighed by having California as a heavily-armed rabid weasel on our borders. -- David Parsons