Hypercritical


Avoiding Copland 2010: Hints of things to come?

Parts one, two, and three of this series discussed what Apple’s response (if any) would or should be to Microsoft’s CLR, Java’s JVM, and the general trend toward “managed” languages and runtimes. Those past discussions pointed to one publicly available hint about Apple’s future direction in this area.

A few days ago, an alert reader brought another one to my attention. It comes from a seemingly unlikely source: GNU’s gcc mailing list. It’s a post from Apple’s Chris Lattner proposing the use of LLVM in the back-end for gcc. LLVM stand for Low Level Virtual Machine. You can read more about it at the LLVM web site.

The email and ensuing thread may seem a bit impenetrable if you’re not familiar with the inner-workings (and politics) of the gcc project. The gist of it is:

So, what’s it all mean? To start, as far as I’m aware, this is the first public disclosure that the work Chris has been doing on LLVM is intended for consumption by—and supported by—Apple. Many of Apple’s developers have “alternate lives” as part of one or more open source projects, but it’s usually a mistake to assume that their work in that capacity has any particular applicability to Apple. In this case, Chris has made it clear that the LLVM/gcc integration is something that Apple wants. Put simply, Apple has been paying Chris to work on LLVM.

Another gcc mailing list subscriber, Mike Hearn, asks the inevitable follow-up question:

I’m curious as to why Apple is doing this. Is it simply that they think a GCC with LLVM merged in would be better and don’t care for the FSF politics of it all? Or is there some interest in using the LLVM IR as a CPU abstraction for software distribution (as was talked about in the context of autopackage on the LLVM list?).

Translated from tech-speak, he’s asking if Apple has any plans to use LLVM beyond gcc, perhaps as a more general-purpose virtual machine. Specifically, he asks whether Apple intends to distribute software using LLVM’s IR (intermediate representation) rather than native (but CPU-specific) binary code. Predictably, he received no answer.

I don’t have much else to add. I just wanted to briefly note that, yes, Apple has at least one project that involves a virtual machine. Will LLVM be used for anything beyond the gcc back-end? Right now, it’s not even certain that it’ll be used in that context.

Could LLVM be used as a starting point for Apple’s own CLR equivalent? Someone more intimately involved in the LLVM project would know better than I. My impression is that it’d be technically feasible, but quite a ways off the intended path of the project. On the other hand, corporate sponsorship often pushes open source projects in unexpected directions. If, as happened in the case KHTML/KJS, developers working on Apple-related projects become the most prolific, most productive, most motivated contributors to LLVM, anything can happen.


This article originally appeared at Ars Technica. It is reproduced here with permission.