Goバインディングが加わった「LLVM 3.6」リリース

 LLVM Projectは2月27日、コンパイラ環境LLVMの最新版「LLVM 3.6」およびLLVMベースのC/C++/Objective-Cコンパイラ「Clang 3.6」をリリースした。Goバインディングが加わったほか、Clangではデフォルトの言語仕様がC99からC11となり、C++17のサポートも開始されている。

 LLVMはモジュラー形式で再利用可能なコンパイラとツールチェーンを集めたもの。ソースとターゲットに依存しないオプティマイザを備えるLLVM Coreライブラリ、LLVMネイティブで一定条件時にGCCより3倍高速というC/C++/Objective-Cコンパイラ、LLVMオプティマイザとコードジェネレーターをGCCパーサーに統合した「dragonegg」など多数のサブプロジェクトを擁する。ライセンスはBSDライセンスに似た「University of Illinois/NCSA Open Source License(NCSA)」。

 LLVM 3.6は、2014年9月に公開されたバージョン3.5に続く最新版となる。本バージョンでは、Googleの静的言語であるGo言語向けのバインディングが加わった。これにより、Go言語からLLVMを利用できるようになる。

 また、ガベージコレクションを強化し、セーフポイントを記述した実験的なメカニズムが加わった。まだこのメカニズムは完成しておらず、バージョン3.7で汎用向けとして提供することを目標にしているという。既存のgc.rootのサポートも継続する。

 さらに、ネイティブのオブジェクトファイルでのLLVM IRの利用が可能となり、comdatシンタックスが新しくなった。また、Python 3との互換性のためPython 2.7が最低要件となった。このほか、さまざまな最適化も図られている。

 MIPSターゲットの強化も行われた。MIPS-IIとMIPS-IIIのサポートが加わり、32ビットターゲット向けにLinuxカーネルのコンパイルが可能となっている。このほか、PowerPCターゲットも変更されている。

 Clangでは、Cサポートのデフォルトの言語モードがC99からC11に変更され、C++14のサポートが完成した。加えて、提案されているC++17機能のサポートも開始した。clang-formatでJavaコードフォーマット化をサポートし、ネイティブWindows互換性も改善されている。

LLVM Project
http://www.llvm.org/