llvm.jsはLLVMをJavaScript化したソフトウェアです。

LLVMはコンパイル時や実行時、リンク時などのあらゆる場面においてプログラミングを最適化するためのコンパイラー基盤です(via Low Level Virtual Machine - Wikipedia)。JVMと同じように中間コードを生成しますが、その中間コードをJavaScriptにコンパイルして実行できるのがllvm.jsです。

[![](http://images.moongift.jp/2013/01/スクリーンショット 2013-01-04 7.27.32_thumb.1357278593.png)](http://images.moongift.jp/2013/01/スクリーンショット 2013-01-04 7.27.32.1357278593.png)
中央にあるのがLLVMのコードです。

[![](http://images.moongift.jp/2013/01/スクリーンショット 2013-01-04 7.27.55_thumb.1357278598.png)](http://images.moongift.jp/2013/01/スクリーンショット 2013-01-04 7.27.55.1357278598.png)
その場でコンパイルしてJavaScriptになって評価されました。

速度で言えばJavaScriptでコンパイルしている分、相当遅いと言えます。llvm.jsはllvm-disとllvm-asというツールチェーンをEmscriptenを使ってC++からJavaScriptに変換しています。LLVMがより身近になるソフトウェアと言えるかも知れません。

llvm.jsはJavaScript製のソフトウェア(ソースコードは公開されていますがライセンスは明記されていません)です。

MOONGIFTはこう見る

LLVMを使って任意のプログラミング言語からJavaScriptを生成しようとする動きはありますが、コンパイルの時点からJavaScriptでやらせてしまおうという発想がユニークです。また、驚くべきは速度面はともあれちゃんと動くものに変換できるEmscriptenの存在でしょう。

llvm.jsは現状では実用的な速度とは言いがたいですが、将来的には改善されていくかも知れません。少なくともCoffeeScriptやTypeScript、JSXのように独自のコードからJavaScriptを生成するプログラミング言語も存在します。LLVMもその一つと考えられそうです。

Run LLVM Assembly In Your Browser

kripken/llvm.js · GitHub