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で作成されたファイルについては、今後の
バージョンでのフルサポートが継続されるとのこと。
http://sourceforge.jp/magazine/11/12/02/0956228