EDIT: Can't believe I used "it's" instead of "its".
EDIT: Can't believe I used "it's" instead of "its".
There already is a project to build a go compiler on top of llvm (https://github.com/axw/llgo).
> We also considered using LLVM for gc but we felt it was too large and slow to meet our performance goals.
Does this mean compilation speed, performance speed, or both? Or is this a hand-wavy excuse to use gcc instead due to Ian's expertise?
That being said, there is a project that builds Go on top of LLVM:
IIRC that remark related to using LLVM or GCC as the backends for the Go compiler, basically they found both backends to be too large and slow for their liking so they wrote their own full compiler from scratch.
I believe the GccGo project is mainly about leveraging all the architectures which GCC supports, many of which Go isn't ported to and possibly won't be ported to (as in maintained by the Go developers).
The other interesting thing is that this is only really an issue due to difficulty in properly parsing/semantically analyzing languages like C++.
For languages like Java, it simply isn't necessary, or in some cases, desirable.
Why would it not be desirable? Also, if I have an idea for a great tool, why should I have to write my own parser? I have more faith the actual compiler will have bugs fixed quicker in this regard.
In general, most languages are stable enough that you don't really get parsing/semantics bugs, so you wouldn't really need to worry about your last concern.
C++ is simply so complicated that the implementations end up with a bugs due to necessary complexity of implementation, but this is not generally true of languages.
With CLANG, same is true, but the license requirementa are fewer.