BuckleScript

面向OCaml的JavaScript
授权协议 GPL
开发语言 JavaScript
所属分类 Web应用开发、 服务器端JavaScript
软件类型 开源软件
地区 国产
投 递 者 涂羽
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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库。尤其是,Facebookimmutable库的BuckleScript实现显现出了2倍的性能提升以及代码长度的大幅缩减。

BuckleScript尚处于早期阶段,已提供Linux和Mac OS X版本,Windows支持正在开发中。

  • BuckleScript 1.0几乎完全兼容OCaml特性,同时改进了外部函数接口(FFI)以避免编写不安全的JavaScript存根。近日,InfoQ采访了BuckleScript作者张宏波。\\ 按照Bloomberg的说法,BuckleScript旨在通过以下几个方面,尝试解决用JavaScript构建的大型系统存在的问题:\\\\ OCaml的工业级强类型安全 \\ 消除无效代码提升功能和

  • 近日,Bloomberg开源了BuckleScript,这是一个面向OCaml的JavaScript后端。按照Bloomberg的说法,BuckleScript旨在为任何JavaScript执行引擎带来OCaml类型安全及高性能的代码。\\ BuckleScript最初是以名称OcamlScript发布的,后来为了避免同另一个项目混淆而改名。BuckleScript由Bloomberg Labs开

 相关资料
  • OCaml Jupyter An OCaml kernel for Jupyter notebook. This provides an OCaml REPL with a great user interface such as markdown/HTML documentation, LaTeX formula by MathJax, and image embedding. Getting

  • 指针在OCaml OCaml有指针,而实际上他们无处不在。它们大部分隐式地使用,也有些时候显式使用会更方便些。 C中繁琐的指针操作在OCaml中消失了,更准确地说,指针完全被编译器自动处理了,因此OCaml程序员 可以忽略掉指针的存在而专注于程序本身,而不会带来额外的问题。 在一些极其罕有的情况,显式的指针是必需的(比如说用OCaml把指令式语言的算法翻译一遍), OCaml提供的引用已经相当成熟

  • OCaml MySQL Protocol 是 OCaml 实现的 MySQL 数据库协议,用于访问 MySQL 数据库。

  • This section is inspired by Ninety-Nine Lisp Problems which in turn was based on “Prolog problem list”. For each of these questions, some simple tests are shown—they may also serve to make the questio

  • 现在我们将从整体上观察一些OCaml程序。我将传授以下内容:局部和全局定义,何时使用;;而何时用;,模块,嵌套函数,以及引用。为此我们会见到很多现在还不理解意义的目前还未接触过的OCaml概念。不用担心这些细节,只要专注于程序的整体形状以及我指出的那些特性。 局部"变量"(实际是局部表达式) 我们来看C中的average函数并且加一个局部变量。 double average (double a,

  • 锈有一个线性系统。有没有(好的)方法可以在OCaml中模拟这种情况?例如,在使用ocaml lua时,我想确保只有在lua处于特定状态时(堆栈顶部的表等)才会调用某些函数。 编辑:这里有一篇关于资源多态性的最新论文,与这个问题有关:https://arxiv.org/abs/1803.02796 编辑2:还有一些关于OCaml中会话类型的文章,包括语法扩展,以提供一些语法方面的支持。