Towards a second edition of the compiler

At least for C and Go, one aspect that probably helps a lot is that the type system is pretty much trivial. Rust's powerful generic types and trait system provide lots of benefits, but they also make type-checking and compilation a much harder problem.

The java compiler doesn't have to generate machine code; it targets JVM bytecode. That's a much simpler target, and also means it doesn't do many of the interesting (and expensive) analysis and optimizations that LLVM does -- with Java, these are done at run-time by the JIT of the JVM.

I don't know much about D, so I cannot comment on that.

2 Likes