- What Is LLVM?
- The Intermediate Representation
- Optimizers Everywhere
- Clang!
- The Code and the People
The Code and the People
LLVM is written in C++. Regular readers will know that I consider C++ to have almost no redeeming features, and a load of hacks piled on to make up for fundamentally flawed underlying semantics. That said, LLVM is not bad by C++ standards. The developers claim that it’s written in a "tasteful subset" of C++, which is fairly accurate.
In spite of my dislike for the language, and the fact that it’s the embodiment of Greenspun’s Tenth Rule of Programming ("Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp"), it’s very easy to use. It took me four days between looking at the code for the first time and getting my first patch accepted, and for someone who hasn’t spent the last five years pretending C++ was just a bad dream it would probably take even less time. In contrast, every time I look at the GCC code, it takes two people to prevent me from clawing my eyeballs out.
The real make-or-break metric for any open source project is the community. LLVM’s community is very friendly, and it’s a lot of fun to participate. Even looking in the bug database, particularly at PR1000, gives you some idea of the kind of people you’ll find on the project. LLVM is generating interest from a number of companies, including Apple and Adobe, but is still officially an academic research project, maintaining a nice balance between corporate and academic interests and the greater open source community.