[Mono-list] Hello all
Paul Harris
elegant_dice@yahoo.com
Tue, 2 Oct 2001 03:22:04 +0800
Hi Ximian + friends,
I'm new to the project and wanted to share my personal goal with you all and hopefully get some feedback :) (Its 3am so i'm gonna try and avoid long-windedness with pointform).
You guys are the experts in fresh-thinking compiler technologies, so hopefully you can help me out.
Motivation:
- I want to build a fast interpreter for many languages for linux.
- I want to build on existing tools like GCC and Mono.
- Mono is still a little young, I want results fast - this isn't my fulltime job.
- GCC can compile many languages well, but is far too slow.
- I looked around for existing interpreters (such as EiC), but they all seem incomplete and not suitable. Not good.
Questions:
- You guys are building your own compiler for C#. If you are not going to extend GCC, are you going to go on and build compilers for all the other languages?
- Did you really check out GCC a lot, or is this more a "fun" project, not a "this will last for decades" project like gcc?
- Is the compiler going to be always hand-crafted? Or based on a yacc/whatever parser-generator?
Ideas (these have many obvious flaws):
- Dump the trees in GCC, avoid RTL&optimisation and generate an interpreter via vmgen.
- Bad: building trees in gcc is slow too.
- Bad: vmgen means custom interpreter, and does not build on existing technologies like Mono.
- Dump the trees, convert them to CIL quickly - zero optimisation. Use Mono's interpreter.
- Bad: gcc part of cycle is still slow.
- Good: You get an emitter for gcc.
- Bad: You lose all gcc rtl optimisations.
- Redo gcc's parser(s) to generate CIL quickly, then build tree interface to CIL structures. Use mono's interpreter/JIT or compile natively.
- Good: You guys may be planning this already.
- Bad: Lots of work.
- Good: Gcc backend doesn't change.
- Good: Uses both mono and gcc.
Ideas? Opinions?
Thanks all, hopefully I'll hear from ya tomorrow, i neeeeed sleep now... good thing my work hours are really flexible ;)
Paul