Via Hacker News, VMKit is a demonstration of the LL (Low Level) nature of the LLVM project. Rightly or wrongly, I tend to think of the relationship between certain high level languages and LLVM like the one between certain lower level, compiled languages and GCC. In the effort to generalize and optimize across languages, some interesting features and capabilities arise that might not have with language specific VMs and compilers.
(My characterization, even after just a few minutes perusing the LLVM web site, is not entirely fair as it can also be used for static compilation. This doesn’t affect my point, below.)
VMKit is a research project at present. It is some way from being a drop in replacement for either the JVM or .Net’s CLI. Even with that caveat, the project seems to have made some considerable progress, noting that on the Java side it is quite capable of running some non-trivial projects like Tomcat and Eclipse.
VMKit in a way shows how LLVM can run circles around the JVM and .Net. Both of the latter two have projects for running languages other than the ones for which they were originally created. Looking at the projects based on LLVM and the sort of advanced research that makes use of it, VMKit’s choice of LLVM seems highly appropriate to me.
I tend to think that language choice is much more driven by developer preference than any objective difference. LLVM and VMKit make me wonder if the future of programming might see the objective differences genuinely fade away. I like the idea of optimization being targeted at LLVM well below the concern of popular languages while those same languages all enjoy the mutual benefit. I suspect there are still enough legitimate differences that this idealized common platform may never be completely practical. It would merely be nice to end at least one class of hacker religious wars by pointing out everything ultimately runs off the same low level code.