On Fri, 2006-01-27 at 09:25 -0500, Kaveh R. Ghazi wrote: > > ecj is written in java. This will complicate the bootstrap process. > > However, the situation will not be quite as severe as the Ada > > situation, in that it ought to be possible to bootstrap gcj using any > > java runtime, including mini ones such as JamVM -- at least, assuming > > that the suggested implementation route is taken. > > I would really hesitate to follow Ada in this regard. > > IMHO, writing your frontend in the same language it's intended to > compile causes it to be marginalized. It no longer becomes part of > the default bootstrap sequence and gets much less testing. You'll > find patches that were supposedly "bootstrapped and regtested" will > quite often break java because it didn't get tested as part of the > default.
It's a bit annoying but not really blocking: all GCC developpers do fix regressions in Ada when they're properly attributed to a patch, and do follow the project policy that exposing a latent bug elsewhere is not an excuse (and of course if it's traced back to dubious front-end behaviour, front-end maintainer do step in). The consequence is that you have to test separately trunk and your development tree and merge and submit patches only when they both work otherwise you might loose a lot of time to unrelated issues (and that means batch submitting if you do lots of development). Also I believe not allowing new languages for new front-ends might limit the increase of language front-ends in the GNU Compiler Collection: not everyone likes coding parsing and tree algorithms in C in 2006 and I assume a developper wanting to add a new language do like to use this new language :). Wether C++, Java or Ada, a new language requirement looks the same to me: having a good enough base compiler and runtime installed for the language, I do not see anything special to Java or Ada over C++ here. The base compiler I use for building GCC has only c,ada (4.0) because that's what is needed, if c++ is needed I'll add the recommanded c++ compiler, if java and some JVM is needed, I'll add java and the recommanded JVM, no big difference. Currently building trunk with --enable-checking and testing nearly all languages (c,ada,c++,fortran,java,objc,treelang, so excluding Objective C++) on a Pentium III 1GHz machine with 1GB of RAM takes between 11 and 12 hours. It could be more if some languages did have a more substantial testsuite, which is desirable when a front-end matures. Restricting the required number of languages for the default patch testing procedure is unavoidable if we leave it to individual developpers to run on their machine: in 12 hours, about 10 patches are commited to trunk on average. Laurent