[关闭]
@chris-ren 2016-09-09T08:36:10.000000Z 字数 1809 阅读 1204

BuckleScript 1.0发布,面向OCaml的开源JavaScript编译器

BuckleScript


摘要

BuckleScript 1.0几乎完全兼容OCaml特性,同时改进了外部函数接口(FFI)以避免编写不安全的JavaScript存根。近日,InfoQ采访了BuckleScript作者张宏波。

正文

BuckleScript 1.0几乎完全兼容OCaml特性,同时改进了外部函数接口(FFI)以避免编写不安全的JavaScript存根。近日,InfoQ采访了BuckleScript作者张宏波。

按照Bloomberg的说法,BuckleScript旨在通过以下几个方面,尝试解决用JavaScript构建的大型系统存在的问题:

与现有的其他JavaScript转译器比较,BuckleScript旨在提供更快的编译、可读和简洁的代码输出,保留和OCaml源码相同的模块结构。

InfoQ采访了张宏波以了解更多BuckleScript的现在和未来。

是什么原因促使BuckleScript从最初版本升级到1.0版本?

主要是稳定的外部函数接口设计和bug修复。由于BuckleScript生成可读的JavaScript代码,JavaScript调用OCaml函数时不需要做太多的工作。我们已经花费了好几个月时间斟酌外部函数接口的设计,以方便用户从OCaml调用JavaScript。我们的目标是把OCaml这种表现类型系统(有一些BuckleScript定制的属性)的优势在不需要编写任何存根代码的前提下直接引入到JavaScript库模型。

主要的亮点有:

  1. BuckleScript支持两种调用规范:uncurried(与JavaScript完全一样)和优化的curried调用规范(函数编程范式中使用)。

  2. 我们努力让JavaScript外部函数接口存在两种风格:一种是类似PureScript的功能性外部函数接口 ,另一种是对象外部函数接口,它采用OCmal表现对象类型系统实现。这允许我们严格模拟JavaScript结构类型。

  3. 我们还内置支持JavaScript this关键字的语义。

  4. OCaml中一些独特的特性,如用于模型事件监听器的多态变体(polymorphic variants)。相比TypeScript,这给我们提供了非常有力的类型安全保障。

大家可以在我们产品见面会的介绍上找到更多BuckleScript外部函数接口的详细信息。

你们最近正在努力的一个目标是整合Reason和BuckleScript。你能解释一下它是如何运作的吗?会给开发者带来什么好处呢?

Reason是由Facebook Jordan团队开发的,它是为OCaml提供的JavaScript类前端语法。由于OCaml的编译工具链是非常模块化的,我们的前端很容易从OCaml转向Reason。要强调的是,Reason不仅仅是语法。Reason团队也在努力改善OCaml中的工具,像构建系统、IDE等。我们一起共同努力。比如,BuckleScript外部函数接口的设计得到了Reason团队很多反馈。

BuckleScript的发展路线图是什么?

  1. BuckleScript把OCaml编译成JavaScript。所以,我们会跟进OCaml的最新发展,并升级到最新版本的编译器。最近OCaml中有很多令人兴奋的新特性,我们会从中受益。例如,Flambda的优化将会使我们的编译器更快。
  2. 我们将与其他的团队(Bloomberg内部的或外部的)合作,为BuckleScript提供更多的绑定(NodeJS、Electron和React)。
  3. BuckleScript的编译器也被编译成JavaScript,这意味着用户不仅可以在任意地方运行OCaml/Reason,同时也可以在任意地方写OCaml/Reason。我们将所有的东西都打包成一个JavaScript文件,用户可以快速上手不会遭遇JavaScript疲劳。同时,我们也将提高我们的playground,使之成为更好的Web IDE。

查看英文原文:Open-Source OCaml to JavaScript Compiler BuckleScript Hits 1.0

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注