BuckleScript面向OCaml的JavaScript
Bloomberg開源了BuckleScript,這是一個面向OCaml的JavaScript后端。按照Bloomberg的說法,BuckleScript旨在為任何JavaScript執(zhí)行引擎帶來OCaml類型安全及高性能的代碼。
BuckleScript最初是以名稱OcamlScript發(fā)布的,后來為了避免同另一個項目混淆而改名。BuckleScript由Bloomberg Labs開發(fā),旨在推動大規(guī)模JavaScript編程。按照Bloomberg的說法,OCaml的工業(yè)級強(qiáng)類型系統(tǒng),配以一個快速編譯器和離線編譯時優(yōu)化器,讓這成為可能。
據(jù)其主要作者介紹,BuckleScript受js_of_ocaml啟發(fā),但目標(biāo)不同。尤其是,BuckleScript的設(shè)計讓其更容易與其他現(xiàn)有的JavaScript系統(tǒng)集成,這意味著可以從一個普通的JavaScript模塊調(diào)用一個定義在BuckleScript中的函數(shù)。之所以能夠這樣做,是因為每個BuckleScript模塊都會翻譯成一個ES6模塊(TypeScript也提供了這個被稱為單獨(dú)編譯的概念),而且沒有使用名字重整,這也讓生成可調(diào)式的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;
}
據(jù)Bloomberg的工程師說,在特定情況下,BuckleScript的性能可以超過仔細(xì)實現(xiàn)的JavaScript庫。尤其是,F(xiàn)acebookimmutable庫的BuckleScript實現(xiàn)顯現(xiàn)出了2倍的性能提升以及代碼長度的大幅縮減。
BuckleScript尚處于早期階段,已提供Linux和Mac OS X版本,Windows支持正在開發(fā)中。
