LLVM Project、LLVM 3.0をリリース

 LLVM Projectは12月1日、コンパイラ環境の最新版「LLVM(Low Level Virtual Machine) 3.0」を公開した。同時にCフロントエンドの「Clang 3.0」もリリースされている。4月にリリースされた2.9以来のメジャーリリースで、2.9をベースに改良を加えたものではあるが、多数の変更が加えられている。

 LLVM 3.0での大きな変更点として、まずGCCベースのCフロントエンドであるllvm-gccがサポートされなくなった点がある。開発チームでは、llvm-gccの代わりに、オリジナルのCフロントエンドであるClangや、GCCフロントエンドの別実装であるDragonEggへの移行を推奨している。

 また、LLVM中間コードでアトミックなメモリ操作がフルサポートされた。これはC/C++の新規格であるC1xおよびC++11のメモリモデルをサポートするためのものとなる。例外処理や型システムについても再デザインおよび再実装されている。レジスタアロケータの変更やMIPSバックエンドの改良、最適化機構やコードジェネレータにおけるgprofおよびgcov形式のプロファイル情報サポートなども行われている。

 C/C++/Objective-CフロントエンドのClangも大きく改善され、C++アプリケーションのビルドについて、安定性や診断メッセージが大幅に改善されたほか、C++ 2011(C++0x)サポートの改良、策定中のC言語の新標準規格C1xサポート強化などが行われた。

 C++標準ライブラリも変更され、ライセンスが制限の緩いMITライセンスおよびUIUCライセンスのデュアルライセンスとなった。従来はGCCに含まれるGPLのlibstdc++が使用されていた。

 また、LLVM 3.0ではLLVM 2.8以前のバイトコードファイルや.llファイルの読み込みをサポートしなくなった。LLVM 3.1ではLLVM 2.9のファイルについてもサポートを減らす予定だそうだ。LLVM 3.0で作成されたファイルについては、今後のバージョンでのフルサポートが継続されるとのこと。

LLVM Project
http://llvm.org/