「LLVM 8.0」登場、WebAssemblyを正式サポート
The LLVM Projectは3月20日、さまざまなプラットフォームに対応するコンパイラおよびツールチェーン集の最新版「LLVM 8.0」を公開した。
LLVMは再利用可能なコンパイラとツールチェーンを集めたコレクション。半年に一度最新版をリリースしており、LLVM 8.0は2018年9月に公開したバージョン7に続く最新版となる。
WebAssemblyコードを生成するWebAssemblyターゲットはこれまで実験的扱いだったが、本バージョンより正式に利用可能となった。オブジェクトファイルフォーマットとコアのC ABIも安定的と言えるレベルになったという。
Speculative Load Hardeningを導入した。SpectreやMeltdownといったCPUの投機的実行を悪用する攻撃への対策として導入した属性で、ファンクション本体でハードニングを有効化していることを示唆できる。
JIT APIでは、ORC(On Request Compilation)JIT APIで並行コンパイル機能をサポートした。これにより、既存の非並行ORCレイヤークラスと関連するAPIは非推奨になり、バージョン9で削除されるという。
このほか、AArch64、MIPS、PowerPC、X86などの各ターゲットで細かな強化が加わっている。
LLVM 8.0に合わせて、フロントエンドのClang、lld、Libc++などのサブプロジェクトもバージョン8.0となった。
特にClangでは、自動変数の初期化オプションが加わったほか、Clang-clでの事前設定済みのヘッダサポートの改善も加わった。また、プロファイルのリマッピングファイルを使用できるようになった。
LLVM 8.0はプロジェクトのWebサイトより入手できる。コンパイラはClang 3.5以上、Apple Clang 6.0以上、GCC 5.1以上、Visual Studio 2017以上などが最少要件となっている。
The LLVM Compiler Infrastructure
https://llvm.org/