Roberto Saccon氏がErlyJSと呼ばれる興味深いコンパイラの開発をはじめている。まだ開発は初期段階だが、発想がおもしろくかなり興味をひく。ErlyJS (JavaScript to Erlang compiler)はJavaScriptをErlang仮想マシン向けにコンパイルするコンパイラ。それ自身もErlang仮想マシンで動作する。
Erlangは並列処理に注力して開発されたプログラミング言語およびその実行環境。ErlyJSはJavaScriptをErlangで動作するコードにコンパイルするためのもので、クライアントアプリケーションの開発を目指している。Erlangで開発されたサーバ上で、ErlyJSを使ってコンパイルされたJavaScriptコードがクライアントアプリケーションとして動作するという寸法だ。
公開されている情報によればJavaScriptコードはErlang beamファイルにコンパイルされるほか、JavaScriptローカル変数はコンパイル時にErlang変数へコンパイル、JavaScriptのグローバル変数は実行時にErlangプロセスディクショナリに保持される仕組みになっている(このため外部変数は使わないようにとされている)。グラマにはLeex/Yeccベースのものが採用されている。
6日現在のErlyJSはコアとなるコンパイラがErlangで実装されており、試験用の簡単なJavaScriptコードが用意されているだけだ。ドキュメントはなく、あるのはソースのみ。現状でサポートされているのはJavaScriptのごく一部のサブセットだけだし、まだ開発ははじまったばかりだ。
ErlyJSが興味深いのは、JavaScriptで開発されたクライアントサイドのアプリケーションをそのままErlangへ変換して使えるという点にある。マルチコア/プロセッサ化が進み、効率的な並列処理の実現がスケーラビリティの高いシステム構築において欠かせない現状では、こうしたアプローチはひとつの方法として注目に値する。ErlyJSの開発ははじまったばかりだ。今後の展開に注目していきたい。