「LLVM 5.0」リリース

 LLVM Projectは9月7日、「LLVM 5.0」を公開した。コンパイラ構築に必要なツールやライブラリ、これらを使って構築されたコンパイラなどを含むもので、本バージョンでは新たなライブラリやツールの追加などが行われている。

 LLVMは再利用可能なコンパイラとツールチェーン、モジュラーを集めたもので、イリノイ大学でスタートした研究プロジェクトが土台となっている。LLVM Coreライブラリのほか、ネイティブのC/C++/Objective-CコンパイラClangなどのサブプロジェクトも抱える。

 LLVM 5.0は3月に公開されたバージョン4に続く最新版。新しいライブラリ「BinaryFormat」が導入されたた。file_magic構造やidentify_magicなど、これまで「Support」に含まれていたコードが含まれており、DWARF、ELF、COFF、WASM、MachOファイルフォーマット向けの型定義や構造も含む。

 nullable値を処理する「WeakVH」が「WeakTrackingVH」にリネームされた。これとは別に、振る舞いが異なる「WeakVH」が新たに導入されている。PDBの操作や診断ツール「llvm-pdbdump」ツールも「llvm-pdbutil」に名称が変わっている。

 新しいツールとして「opt-viewer.py」が加わった。最適化のための情報をHTML形式で視覚化するツールとなる。clangを「-fsave-optimization-record」オプション付きで実行すると生成されるYAML形式ファイルを元データとして読み込める。

 CMake用の新たなマクロ「LLVM_REVERSE_ITERATION」が加わったほか、GNUスタイルの定義ファイルからライブラリをインポートする「llvm-dlltool」も加わった。一方で、2014年にリプレースされて使われていないという「BBVectorize」は削除されている。

これらに加え、ARM、MIPS、PowerPCなどターゲット別の変更も加わっている。X86向けでは、AMD Ryzenスケジューラ、Intel Goldmont CPUなどを新たにサポートした。

 Clang 5.0では、C++ coroutines TSの実装、C++17の正式対応、PythonバインディングでのPython 2/3の対応などの強化が加わっている。

LLVM
http://llvm.org/