Mitch Pronschinske is the Lead Research Analyst at DZone. Researching and compiling content for DZone's research guides is his primary job. He likes to make his own ringtones, watches cartoons/anime, enjoys card and board games, and plays the accordion. Mitch is a DZone Zone Leader and has posted 2578 posts at DZone. You can read more from them at their website. View Full User Profile

Major LLVM Release!

04.28.2010
| 14279 views |
  • submit to reddit
After a solid six months of development, the next version of the Low-Level Virtual Machine (LLVM) compiler infrastructure is live and ready to download.  The new release showcases core infrastructure improvements along with better debug information and code generation.  In 2.7, the LLVM front-end, Clang, is now able to bootstrap itself, which is a big deal for any compiler.

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.