写点什么

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

  • 2016-09-11
  • 本文字数:1446 字

    阅读完需:约 5 分钟

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 )关注我们。

2016-09-11 19:002901
用户头像

发布了 31 篇内容, 共 10.3 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试学习笔记丨接口请求体-xml

测试人

软件测试

如何选择适合您团队的缺陷跟踪工具?

爱吃小舅的鱼

缺陷跟踪管理 缺陷管理软件推荐

InfoQ对话天润融通CTO|AI时代,开发者的机遇与挑战?

天润融通

人工智能

客户在哪儿AI让ToB全面了解竞争对手、赢得竞争

客户在哪儿AI

ToB营销 ToB增长 ToB销售

Microsoft NTFS for Mac by Tuxera 2022 for macNTFS磁盘格式读写

Mac相关知识分享

Mac软件 软件下载

Paste for Mac(剪切板历史管理工具) v4.1.2中文版

Mac相关知识分享

足球与AI,开创足球预测新纪元

Geek_a17c4b

数据挖掘 机器学习 深度学习 AI 足球

Linux多线程

不在线第一只蜗牛

Linux 运维 多线程 服务器

【YashanDB知识库】字段加上索引后,SQL查询不到结果

YashanDB

yashandb 崖山数据库 崖山DB

从IDC数据中心到云再到智算中心,苏州IDC决胜算力新时代

苏州服务器托管

数据中心

Sketch for mac(专业矢量绘图设计软件)v99.1中文版

Mac相关知识分享

设计工具

网络加速解决方案:实现企业网络高效访问

Ogcloud

网络加速 CDN加速 企业组网 海外网络加速

SD-WAN能否优化SaaS访问体验?

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

软件测试学习笔记丨Cookie处理

测试人

软件测试

闲鱼开发者必读:闲鱼商品详情数据接口完全指南

tbapi

闲鱼API 闲鱼商品详情数据接口 闲鱼商品数据采集 闲鱼平台API接口 闲鱼商品详情API

线程池遇到父子任务,有大坑,要注意!

快乐非自愿限量之名

数据库 线程池

Microsoft Remote Desktop Beta for Mac(微软远程连接工具

Mac相关知识分享

拼多多商品详情数据接口全解析:获取商品信息的高效途径

tbapi

拼多多 拼多多商品详情数据接口 拼多多API 拼多多商品数据采集

搭建安全测试演练环境:实操常见安全漏洞

测吧(北京)科技有限公司

测试

第59期|GPTSecurity周报

云起无垠

天润融通微藤大模型,如何助力市场部构建企业增长飞轮?

天润融通

ISP代理与住宅代理的主要区别

IPIDEA全球HTTP

技术 ISP 代理IP

Charles for Mac(HTTP协议抓包工具) v5.0b12版

Mac相关知识分享

软件测试学习笔记丨XML响应断言

测试人

软件测试

Sentieon | 应用教程:唯一分子标识符(UMI)

INSVAST

基因测序 基因数据分析 生信服务

常见接口安全测试工具介绍:ZAP、Burp Suite、SQLMap 等知名安全测试工具

测吧(北京)科技有限公司

测试

对话天润融通首席科学家:大模型的首要任务是为客户创造商业价值

天润融通

人工智能

【YashanDB知识库】用户密码带@字符时exp和imp无法使用

YashanDB

yashandb 崖山数据库 崖山DB

Burp Suite:黑客与白帽子最常用的安全测试工具详解

测吧(北京)科技有限公司

测试

开发国际化的体育直播平台:现成源码与定制开发的选择

软件开发-梦幻运营部

BuckleScript 1.0发布,面向OCaml的开源JavaScript编译器_JavaScript_Sergio De Simone_InfoQ精选文章