Emscripten

Emscriptenは、CおよびC++ソースコードを、主にウェブブラウザ上で実行することを目的として、WebAssembly（または、2017年にWebAssemblyが登場するまで当初のターゲットであった、asm.jsとして知られるJavaScriptのサブセット）にコンパイルする、LLVM/Clangベースのコンパイラ。

Emscriptenを利用することで、CまたはC++で書かれたアプリケーションやライブラリを事前コンパイルして、ウェブブラウザ上で効率的に、特に動的にコンパイルされたあるいはインタプリタ実行されたJavaScriptと同等か、より速いスピードで実行することが可能になる。さらに最新のWebAssembly System Interface（WASI）の開発成果物とNode.js、Wasmtime、WasmerなどのWebAssemblyランタイムと組み合わせると、Emscriptenは非Web環境で実行するためのWebAssembly埋め込み用にコンパイルすることもできる。

 利用 
EmscriptenはC/C++コードベースをWebAssemblyに移植するために広く利用されており、代表例としてUnreal Engine 3、SQLite、MeshLabhttp://www.meshlabjs.net - Homepage of the experimental, client based, javascript, version of MeshLab that runs inside a browser、Bullet physics、AutoCAD.、Qt アプリケーションフレームワークのサブセットがある。Emscriptenを利用してWebAssemblyに移植されたソフトウェアの他の例としては、以下が挙げられる。

 ゲームエンジン 
Unity、Godot、UnrealゲームエンジンはHTML5にエクスポートする選択肢を提供しており、これにはEmscriptenが利用されている。

 フレームワークとツールキット 
openFrameworksはEmscriptenを利用してネイティブC++アプリケーションをHTML5にエクスポートできる。emscripten-qtはQtアプリケーションフレームワークを使用して書かれたアプリケーションをWebAssemblyにコンパイルすることを可能にする。

 ソフトウェアアーカイブ 
2014年12月にインターネットアーカイブは、多数のアーカイブされたMS-DOSプログラムとPCプログラムへのブラウザ上でのアクセスを提供するため、EmscriptenでコンパイルされたDOSBoxエミュレータをリリースしたEach New Boot a Miracle by Jason Scott (December 23, 2014)。

参考

 asm.js
 Google Native Client（PNaCl）
 Haxe
 WebAssembly

参照

外部リンク

 Project page on GitHub
 Emscripten Documentation
 Porting Examples and Demos
 A list of some WebAssembly runtimes

Category:JavaScript
Category:コンパイラ