Major LLVM Release!
Developers will need to wait for Clang's C++ support to improve beyond its current alpha-quality, but C and Objective-C compiling in Clang is considered production-ready. Hardware support has been beefed up in this release. LLVM's support for ARM processors is now considered beta-quality. NEON, the ARM vector instruction set, has improved its code generation capabilities in this release. The Darwin and Linux ARM ABIs are newly supported in version 2.7.
One of the major new features in LLVM 2.7 is the new MicroBlaze target, a soft processor core that operates on field-programmable gate arrays (designed for Xilinx FPGAs). A new LLVM IR "extensible metadata" feature is available for high-level optimizations (devirtualization, type-based alias analysis, etc.). There's also new direct IR support for jumping to a block using its address (speeds up some interpreter loops by 20%). Final major features include significant progress on the MC Project (a new LLVM native code assembler) and initial support for APIs that assemble and disassemble machine code.
LLVM 2.7 vastly improves support for the VMKit, an implementation of a JVM and CLI (Common Language Infrastructure for .NET) virtual machines. It translates Java bytecode and MSIL in the LLVM IR and uses the LLVM framework for optimizations and JIT or static compilation. For garbage collection, it uses MMTk, which features improved performance. Significant progress has also been made in developing a plugin that uses LLVM-derived components to replace GCC's standard optimizers and code generators. The improvements to the Optimizer, Interpreter, JIT, Targeted Independent Code Generator, and hardware targets are numerous in this release.
Here are the projects that are known to work with LLVM 2.7:
- Icedtea6 1.8 and later
- Pure 0.43 and later
- Roadsend PHP
- Unladen Swallow
- TTA-based Codesign Environment (TCE)
- SAFECode Compiler
- LLVM-Lua 1.2
- Glasgow Haskell Compiler (GHC)
- The upcoming release of MacRuby 0.6
llvm.org has the the full release notes for LLVM 2.7.