WebAssemblyに正式対応した「LLVM 8.0」がリリース
一般に「コンパイラ」と呼ばれるソフトウェアは、あるプログラミング言語で書かれたソースコードをコンパイルし、ターゲットとなるプラットフォームで実行可能なバイナリに変換する機能を備えています。
例えばCコンパイラならC言語をコンパイルし、FortranコンパイラならFortran言語をコンパイルして、ターゲットとなるOSやハードウェア、例えばx86用のLinuxや、あるいはメインフレームなどで実行可能なバイナリを生成するといった具合です。
「LLVM」はこうしたコンパイラを開発するための、基盤となるソフトウェアを開発するオープンソースプロジェクトといえます。LLVMは基本的にはClangと呼ばれるフロントエンドを用いてC/C++/Objective-Cなどをソースコードとして読み込み、LLVM IRと呼ばれる実行環境に依存しない中間表現を生成。そこからLinuxやWindows、FreeBSD、PowerPC、ARMなどさまざまなターゲットに最適化された優れたバイナリを高速に生成できる機能を用意しています。
LLVMを用いた実例として、例えばアップルはiOSやmacOSなど同社のすべてのOSをLLVMベースのコンパイラを用いて開発しているとされています。また、Kotlinのソースコードからネイティブバイナリコードを生成するKotlin/NativeでもLLVMベースのコンパイラが用いられているとされています。
最近はあまりアップデートされていないようですが、高速なRuby実行環境を目指したLLVMベースの「Rubinius」というプロジェクトもあります。
そのLLVMの最新版として発表されたLLVM 8.0では、ターゲットとして生成されるバイナリとして正式にWebAssemblyに対応しました。
WebAssemblyはWebブラウザ上で高速に実行できるバイナリ形式として、すでにChromeやFIrefox、Edge、Safariなどが対応を済ませています。
2015年にWebAssemblyの開発スタートが発表された時点で、マイクロソフトやMozilla、Googleなど主要ブラウザの開発者とともに、LLVMも対応に前向きな姿勢を表明していました。
その後LLVMのWebAssembly対応は実験的対応として機能が実装されていましたが、ようやくこのLLVM 8.0で正式対応となりました。
現在、Mozillaが昨年発表したWebAssembly用の統合開発ツール「WebAssembly Studio」は、バックエンドにLLVMを採用していると説明されています。LLVM 8.0の登場で、今後さらにLLVMを用いてWebAssemblyを生成可能が開発ツールやコンパイラの登場が期待されます。
(追記 2019/4/8:本文中でGraalVMがLLVMを一部採用していると書いておりましたが、誤りでしたので本文から削除しました)
あわせて読みたい
オフィスや外出先などネットワーク環境に応じ、ネットワーク設定からプリンタ、壁紙まで各種設定を自動切替。情シスのトラブル対応を大幅削減する「NCSwitch 4」[PR]
≪前の記事
テスト作業も、画面キャプチャによるエビデンス取得も自動化してくれて、Jenkinsとの連動も可能。Web、デスクトップ、モバイルに対応するテスト自動化ツール[PR]