Chakra-core とは?
Microsoft Edge で利用されている JavaScript 処理系です。オープンソース化されて GitHub にて公開されています。
長らく Windows でしかビルドできませんでしたが、この度 Mac と Linux でもビルドできるようになりました。
JIT はまだ動かないようですが…
事前準備
必要なものは次の3つ
- XCode およびコマンドラインツール
- cmake
- icu4c
コンパイラ、ビルドツール、Unicode の国際化対応を行うためのライブラリです。
XCode は Apple のサイトからダウンロードしてください。コマンドラインツールは GUI からもインストールできますし、次のように xcode-select コマンドからもインストールできます。
$ xcode-select --install
cmake と icu4c は HomeBrew 経由でインストールします。
$ brew install cmake icu4c
ソースコードのダウンロード
レポジトリ からダウンロード、もしくは clone します。
ビルド
ソースコードが Chakra-core というディレクトリ以下に展開されている前提で、以下のコマンドを実行します。ディレクトリが異なる時は、1行目を適宜読み替えてください。
$ cd Chakra-core
$ ./build.sh --static --icu=/usr/local/opt/icu4c/include -j=2
--icu オプションは icu4c をインストールした際に導入されるヘッダファイルの位置を指定します。Homebrew でインストールした場合は、上記の場所にインストールされます。
-j オプションで、ビルドに利用する CPU の数を指定します。MacBook Pro だと 2 つぐらい割り当てておくと良いのではないでしょうか。
ビルドが成功すると BuildLinux/Relase/ch に実行可能ファイルができます。
Hello, World
次のような JS ファイルを作成します。ChakraCore は JavaScript インタプリタなので、ブラウザや node の提供する API を持っていません。console オブジェクトや、document オブジェクトも未定義です。そのため、出力にはデバッグ用の関数 print
を利用します。
const msg = "Hello, world!";
print(msg);
これを ch に与えて実行すると、コンソールに Hello, world! が出力されます。
$ ./BuildLinux/Relase/ch helloworld.js
Hello, world!
まとめ
ビルドは結構簡単です。build.sh がよしなに計らってくれます。
ChakraCore は単体だとほとんど何もできませんが、node や自分のアプリに組み込むことができるようです。ぜひそちらを試してみてください。