BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Sergio De Simone 关注 17 他的粉丝 ,译者 任美芒 关注 0 他的粉丝 发布于 2016年9月12日. 估计阅读时间: 5 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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

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

  • OCaml的工业级强类型安全
  • 消除无效代码提升功能和模块级的性能,这要感谢成熟的OCaml类型系统
  • 编译时优化,以提高运行时性能
  • 支持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


感谢夏雪对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT