Javascript VMは、今やどこにでもあり、増々速くなっている-この二つの特質は、言語設計者と実装者が好きなものである。JVMや.NETをターゲットにした言語には、非常に面白いものがあったが、最近は、多くの新しい言語やランタイムがJavascriptをターゲットにしている。
Javascriptの痛点は、言語そのものであるため、開発者は、Javascriptにコンパイルする新しい言語を作っている。
バージョン1.0をリリースしたばかりの CoffeeScriptは、新しい言語で、Javascriptをきれいにし、いくつかの役立つフィーチャを加えることを目標にしている。CoffeeScriptコンパイラーは、CoffeeScriptで書かれており、きれいで、美しいJavascriptにコンパイルする。
ブロックを区切るのに、中括弧を使わずに、かなりのホワイトスペースを使っている。これは、CSS3 extension Sass, Hamlなどのような他の最近の言語と同じであるが、ディスカッション フォーラムを賑わし続けている。
CoffeeScriptは、1年ぐらい経つが、いくつかの公開プロジェクトが使ったために、最近知られるようになった。ArsTechnicaの iPadアプリケーションは、HTMLとCoffeeScriptを使って書かれており、PhoneGapを使ったネイティブなアプリケーションとして、走る。 37Signalは、 Chalkを公開したが、これは、iPad上で走るホワイトボード アプリケーションで、Cache Manifest のようなHTML5のフィーチャ使ってオフラインで走る。これもCoffeeScriptを使っている。
StratifiedJSは、Javascriptのスーパーセットで、非同期プログラムの冗長さに対処するために、いくつかの並列性に関係したキーワードを追加している。もっと詳しいことは、StratifiedJSとそのブラウザ実装であるApolloの開発動機に関するインタビュー記事を見て欲しい。
Emscripten プロジェクトは、違ったアプローチを使っている。Emscriptenは、Javascript VMにLLVMコンパイラを持った言語を持ち込もうとしている。 LLVMが、バイトコードにコンパイルしたら、EmscriptenがJavascriptに翻訳する。マニュアルのメモリ割り当てがある程度サポートされている。Emscriptenは malloc
のカスタム バージョンによって管理されるヒープ配列を使って、それをエミュレートしている。
CとC++コードは、Emscriptenを使って翻訳でき、このプロジェクト サイトには、いくつかの翻訳されたCとC++ライブラリのデモがある。しかし、 Python そして Lua ランタイムの翻訳バージョンのデモもこのサイトにある。
これらの新しい言語や翻訳されたランタイムの次は、既存の言語もJavascriptにポーティングされている。例えば、 Haskellや Steve Dekorte氏の Io language、そして Skulpt projectによるPythonがある。
これらのアプローチのどれが成功して、役立つものになるかは、まだわからない。しかし確かなのは、Javascript VM, JIT そして GCの開発者は、Emscriptenのようなアプローチが人気を集めることを予想して、パフォーマンス改善に常に取り組んだほうがよい、ということである。
InfoQ ホームページ ニュース JavascriptVMに多数の言語: CoffeeScript 1.0, StratifiedJS, EmscriptenによるC/C++, Python