Here's my attempt to summarize the issues in detail. Someone else suggested that it is far too early on the curve to be considering these questions, but I disagree. Three approaches: 1. Write perl6 in Perl5 2. Write perl6 in LCL, and translate that into C*. 3. Write perl6 in C*. Actually 1. has two sub-approaches, which are not mutually exclusive, but which may follow one from the other: 1a. Write perl6 in Perl5, and run that with perl5. 1b. Write perl6 in Perl5, and convert that into C* using some perl5 backend (i.e. perl compiler). Now the pros and cons: 1. Write perl6 in Perl5. Pros: . Implementation language is well known, stable, powerful, and ubiquitous. Cons: . There is very little real-world experience with this class of problem available to bring to bear. (However, it may be feasible to manually re-engineer some of perl5's C code into perl?) 1a. Write and run native Perl5. Pros: . Portability is a non-issue; anywhere perl5 can run, perl6 can run. . Not dependent on other project components; nothing to wait for. Cons: . Perl6 will require perl5, and thus Perl6 does not let Perl5 die a natural death. . Performance will be bad, in terms of both size and speed. 1b. Write Perl5 and compile into C*. Pros: . If perl5 is unavailable or undesirable on the target host, the C* code can be ported. . A natural bootstrapping path: the Perl5 source can be replaced with Perl6 once a working perl6 is available. . Resulting code should have decent performance. Cons: . Requires a perl5 backend to generate C* code, which as yet is vaporware, and may never be anything more. 2. Write perl6 in LCL which compiles into C*. The usual suggestion is to write the translator in Perl. Pros: . The implementation of Perl6 in LCL, and the implementation of the translator (in Perl), can proceed more or less independently. . Writing a language translator in Perl is not particularly hard. . As with (1b) above, building perl6 only requires perl5 and a C* compiler, which are both essentially ubiquitous. And the C* code could be distributed directly if necessary. . LCL, which is some hypothetical language construction language, is presumably independent of the other languages involved, i.e. a) the target language (C*) b) the translator language (Perl, ostensibly) c) the language being implemented (Perl6) Thus any of these could be replaced/improved in the future, including writing the translator in Perl6. (Bootstrap) Cons: . LCL has not been defined, and would constitute a significant chunk of the project's time and effort. And that's before we can even begin to implement Perl6 in LCL! 3. Write perl6 in C*. Pros: . No dependency on perl5. . No bootstrapping issues. . C* is well-known and ubiquitous (for some values of C*). . Better optimizations possible. . Not dependent on other project components, i.e. don't need to wait for a working perl5 compiler or for the LCL. Cons: . C*, being a LLL, requires great software engineering discipline to not f up. Please add any additions or corrections you think of. Particularly, the various pros and cons need to be weighed for their importance. Which cons are showstoppers? For example, I believe that the Cons of Approach #2 above is probably a showstopper. Bennett Todd wrote: > ...if we _do_ wish to > write perl6 in perl (or in other specification languages, themselves > implemented in perl), then I would argue that the dialect of perl > that we should write in should be perl5, at least until and unless > perl6 gets so far past the simple bootstrapping that time comes to > actually retire perl5. Eminently reasonable. -- John Porter Aus tiefem Traum bin ich erwacht.