LLVM 3.1 Compiler Infrastructure released
The LLVM developers have released version 3.1 of their compiler infrastructure after an unannounced delay in their plans. The LLVM project has created and developed a complete set of compiler tools and toolchains and incorporates many sub-projects such as Clang, a C/C++/Objective C compiler, runtime compiler library compiler-rt, LLDB (Low level debugger), C++ standard library libc++, and VMKit, a JVM which uses LLVM for static and JIT compilation.
LLVM 3.1 now incorporates AddressSanitizer, a memory error detector for C and C++ that can find use-after-free errors, heap/stack/global buffer overflows and use-after-return flaws in code. Also new is a full-featured ARM macro assembler with support for Thumb1, Thumb2 and ARM modes. The developers have also made improvements to the IR (intermediate representation) code that LLVM uses, the optimiser and the machine code subsystem.
Clang 3.1, released alongside LLVM 3.1, also sees a number of changes. C11 support is improved with support for anonymous structs and unions from the new ISO standard, and the compiler now only accepts flags for C11 as
c11 rather than
c1x. Clang now supports most of the language features of C++11 too, with a number of features introduced in Clang 3.0 being declared "production quality" in 3.1. Objective-C in Clang now supports more literal expressions (numeric,array and dictionary) and access to arrays and dictionaries via the subscript operator.
The LLVM toolchain is being used by a number of companies and projects, including Apple and FreeBSD. The collection is licensed under the BSD-like University of Illinois/NCSA Open Source Licence, a permissive licence which allows commercial products to be derived from the LLVM project.