LLVM 2.8 compiler infrastructure released
The LLVM developers have made version 2.8 of their Low Level Virtual Machine available to download. The new release comes nearly six months after the previous version, which was the first to release Clang C/C++ compiler capable of compiling itself and includes major improvements to Clang's C++ support making it "feature complete and quite usable". Other LLVM components include llvm-gcc and DragonEgg, which are modified versions of GCC for generating code in the languages supported by the GNU compiler.
Among the new LLVM 2.8 features, the developers highlight a drop-in system assembler, the support for writing object files (.o) directly from the compiler, an ARM disassembler, ARM tailcall support and extensive ARM code generation improvements, better support for debugging optimised code and performance improvements for X87 floating point numbers.
The announcement of the new version also says that two new sub-projects have joined the LLVM project; neither project has been integrated with the LLVM 2.8 release but may appear in future releases. The first is libc++, a new implementation of the C++ standard library. Primarily intended to work with Clang++, it's designed to be portable to other compilers and to support the new C++'0x standard once this standard has been finalised. The other sub-project is LLDB, a new modular debugger built to bring scripting and high performance to debugging large applications.
LLVM is a collection of libraries and tools for optimising compilers and just-in-time code generators. The developers call it an "infrastructure" that allows code to be generated almost in real time without having to introduce platform-specific code. Originally mainly intended to be used for C++ code, the infrastructure has since been given further front ends for Objective-C, Java bytecode, Microsoft's Common Intermediate Language (CIL) as well as implementations of Python and Ruby.
The project was launched at the University of Illinois but is now also supported by such IT heavy-weights as Apple and Adobe. In the release notes, the developers name a few examples where the new version of their infrastructure is already in use, for instance in the Pure and Clay programming languages; further LLVM users can be found here.