BloombergはOCamlのJavaScriptバックエンドであるBuckleScriptをオープンソース化した。これはOCamlの型安全でハイパフォーマンスなコードをJavaScript実行エンジンにもたらすという。
BuckleScriptはもともとOcamlScriptという名前でリリースされたが、別のプロジェクトとの混同を避けるため改名された。これはBloomberg Labsで開発されたもので、大規模JavaScriptプログラミングを可能にするのが狙いだ。Bloombergによると、これはOCamlの非常に強力な型システムと、高速コンパイラおよびオフラインすなわちコンパイル時オプティマイザとを組み合わせることで実現されている。
主な開発者らによると、BuckleScriptはjs_of_ocamlに触発されたものだが、ゴールが違うという。特に、BuckleScriptは既存のJavaScriptシステムと簡単に統合できるように作られている。BuckleScriptで定義した関数は素のJavaScriptモジュールから呼び出すことができる。これは各BuckleScriptモジュールをES6モジュールに変換すること(分割コンパイルとして知られており、TypeScriptでも利用できる)、名前修飾(name mangling)が使われておらず、デバッグ可能なJavaScriptを生成することもできること、により実現されている。
たとえば、以下のOCamlコードは、
let sum n =
let v = ref 0 in
for i = 0 to n do
v := !v + i
done;
!v
次のように変換される。
function sum(n) {
var v = 0;
for(var i = 0; i<= n; ++i){
v += i;
}
return v;
}
Bloombergのエンジニアによると、BuckleScriptは特定のケースにおいて、慎重に実装されたJavaScriptライブラリをしのぐという。具体的に、FacebookのimmutableライブラリのBuckleScript実装は、2倍のパフォーマンス改善およびコードサイズの劇的削減を示している。
BuckleScriptはまだ初期段階だがLinuxとMac OS Xで利用でき、Windowsのサポートは作業中だ。ソースコードはGitHubから入手できる。ウェブベースのREPLでも試すことができる。
Rate this Article
- Editor Review
- Chief Editor Action