Bloomberg 开源面向 OCaml 的 JavaScript 后端 BuckleScript

  • 2016-03-23
  • 本文字数:716 字

    阅读完需:约 2 分钟

近日,Bloomberg 开源了 BuckleScript ,这是一个面向 OCaml 的 JavaScript 后端。按照 Bloomberg 的说法,BuckleScript 旨在为任何 JavaScript 执行引擎带来 OCaml 类型安全及高性能的代码。

BuckleScript 最初是以名称 OcamlScript 发布的,后来为了避免同另一个项目混淆而改名。BuckleScript 由Bloomberg Labs 开发,旨在推动大规模JavaScript 编程。按照Bloomberg 的说法,OCaml 的工业级强类型系统,配以一个快速编译器和离线编译时优化器,让这成为可能。

据其主要作者介绍,BuckleScript 受 js_of_ocaml 启发,但目标不同。尤其是,BuckleScript 的设计让其更容易与其他现有的 JavaScript 系统集成,这意味着可以从一个普通的 JavaScript 模块调用一个定义在 BuckleScript 中的函数。之所以能够这样做,是因为每个 BuckleScript 模块都会翻译成一个 ES6 模块(TypeScript 也提供了这个被称为单独编译的概念),而且没有使用名字重整,这也让生成可调式的 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 上获取源代码,也可以通过基于Web 的REPL 试用。

查看英文原文: Bloomberg Open-sources BuckleScript, JavaScript Backend for OCaml