JavaScriptを利用できる場面は広がっていますが、実行するためにはJavaScript実行エンジンたるv8などが必要です。また、スクリプト言語なので実行時に解釈されるため、実行速度は若干遅くなるでしょう。 今回紹介するjscはそんな限界を超えるかも知れないソフトウェアです。Rustで書かれたJavaScriptコンパイラーになります。

jscの使い方

サンプルのコードです。main関数を実行します。

$ cat example/hello_world.js 
function main() {
  console.log("hey there");
}

コンパイル後。コンパイルされたファイルを読み込んで実行します。

$ cat build/hello_world.js 
require("./build/Release/hello_world").jsc_main();

こちらは関数を使うデモ。

$ cat example/function_call.js 
function test() {
  return "hello from this function!";
}

function main() {
  console.log(test());
}

ちゃんと実行できます。

$ node build/function_call.js 
hello from this function!

jscはJavaScriptをコンパイルしてバイナリ化します。できあがったファイルはnodeから読み込んで使うこともできますが、ターゲットとしてはC++もあるようです。WebAssemblyのようにJavaScriptを高速化する手段にもなるかも知れません。

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

eatonphil/jsc: A Javascript compiler written in Rust targeting C++/V8