LLVM 3.1/Clang 3.1登場、C++11のコア機能をほぼサポート

 LLVM開発チームは5月22日、コンパイラ環境「LLVM(Low Level Virtual Machine) 3.1」を公開した。同時にC/C++フロントエンドの「Clang 3.1」もリリースされている。本リリースではC++11のサポートが強化され、ほぼすべての機能に対応した。

 LLVMはコンパイラを実装するためのインフラストラクチャを提供するもので、コアとなる「LLVM Core」と、LLVM Coreを使用する「Clang」などのコンパイラフロントエンド、オプティマイザや各種ライブラリなどから構成されている。

 LLVM 3.1は約6ヶ月に渡る開発期間を経てのリリースとなった。大きな特徴としては、C/C++向けの高速なメモリエラー検出「AddressSanitizer」の導入、MachineInstrのバンドルがある。また、ARMマクロアセンブラの統合によりARMコンパイルが高速化し、MIPSバックエンドも強化した。このほか、バグの修正と性能の改善も図られている。

 また、GCCのオプティマイザやコードジェネレータとしてLLVMを使用するためのGCCプラグイン「DragonEgg」はでGCC 4.7に部分的に対応し、またARMプロセッササポートやオプティマイザの改良なども行われている。

 一方、Cバックエンドの削除や、ビルドにPerlが不要となり、代わりにPythonが必要となった、という変更もある。Pythonバインディングも追加されているが、機能サポートについては完成にはほど遠いとしている。

 同時にリリースされたC/C++/Objective-CフロントエンドのClang 3.1では、C++11のサポートを強化し、ラムダ式、初期化リスト、constexpr、ユーザー定義リテラル、atomicなどが利用できるようになった。Objective Cのリテラルのサポートも拡大し、clangベースのスタンダロンツールの構築を容易にするツールライブラリが加わった。

 LLVM 3.1はプロジェクトのWebサイトより入手できる。

The LLVM Project
http://llvm.org/