WebAssemblyに正式対応した「LLVM 8.0」がリリース

2019年3月26日

一般に「コンパイラ」と呼ばれるソフトウェアは、あるプログラミング言語で書かれたソースコードをコンパイルし、ターゲットとなるプラットフォームで実行可能なバイナリに変換する機能を備えています。

例えば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を一部採用していると書いておりましたが、誤りでしたので本文から削除しました)

このエントリーをはてなブックマークに追加
follow us in feedly




カテゴリ

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed


最新記事10本