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

BuckleScript 1.0发布,面向OCaml的开源JavaScript编译器相关推荐

  1. linux atom编辑器下载,Atom 1.7.0 发布下载,跨平台开源文本编辑器

    Atom 1.7.0 发布下载,作为目前全球范围内影响力最大的代码仓库/开源社区,GitHub 的程序员们并不满足于此.他们使用目前最先进流行的技术重新打造了一款称为"属于21世纪" ...

  2. PyCharm 3.0 发布,提供免费开源版本

    PyCharm 发布最新的 3.0 版本,该版本新特性详见: http://www.jetbrains.com/pycharm/whatsnew/index.html 该版本最主要的是提供了免费开源的 ...

  3. 马云获聘香港大学荣誉教授;马斯克预计 2 个月内再次尝试发射星舰;​Rust 1.69.0 发布|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  4. 苹果三星手机被诉辐射超标;淘集集启动破产清算;Drupal 8.8.0 发布 | 极客头条...

    整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  5. 携程回应突发故障:「bug已修复」;罗永浩再嘲iPhone11浴霸相机;React 16.10.0发布|极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

  6. Bloomberg开源面向OCaml的JavaScript后端BuckleScript

    近日,Bloomberg开源了BuckleScript,这是一个面向OCaml的JavaScript后端.按照Bloomberg的说法,BuckleScript旨在为任何JavaScript执行引擎带 ...

  7. .NET Core 1.0发布:微软开源跨平台大布局序幕

    在6月27日的红帽DevNation峰会上,微软正式发布了.NET Core 1.0.ASP.NET 1.0和Entity Framework Core 1.0,这些产品将全部支持Windows.OS ...

  8. 阿里开源物联网操作系统 AliOS Things 3.0 发布,集成平头哥 AI 芯片架构!

    阿里云智能产品管理部总经理.AIoT 事业部产品与解决方案总经理何云飞 作者 | 唐小引发自云栖小镇 出品 | CSDN(ID:CSDNnews) 阿里正式提出将 IoT 作为主赛道是在去年 3 月, ...

  9. 腾讯即将开源微信、QQ都在用的动画神器;Linux Mint与Mozilla达成合作;Apache Flink ML 2.0.0发布 | 开源日报

    整理 | 宋彤彤 责编 | 屠敏 开源吞噬世界的趋势下,借助开源软件,基于开源协议,任何人都可以得到项目的源代码,加以学习.修改,甚至是重新分发.关注「开源日报」,一文速览国内外今日的开源大事件吧! ...

最新文章

  1. 一个Demo学完Android中所有的服务
  2. QTP的那些事--调用外部的文件的方法
  3. 【研究】Metasploit自动攻击模块
  4. 蹭着 Java 热点出生的 JavaScript 已经 22 岁了!
  5. 联想笔记本那些有手写功能_联想笔记本如何使用vista自带的手写输入法tablet pc...
  6. linux tuxedo查看服务进程数,Tuxedo 运行监控命令
  7. PPT投影仪演示设置
  8. 小学计算机课flash的教案,信息技术flash教案
  9. YAWL工作流软件的介绍和使用
  10. python画彩虹圈_javascript – 如何使用HTML5画布生成彩虹圈?
  11. WeX5制作的app,界面模仿b站(哔哩哔哩弹幕视频网)客户端
  12. uniapp开发:uniapp之vue3.2开发页面传值的解决方案
  13. 需求与商业模式创新-需求9-原型
  14. 网络安全——Webshell管理工具
  15. 用数组+链表实现哈希表
  16. 前端云原生——微信小程序云服务配置
  17. 25章 SPI—读写串行FLASH
  18. BAT批量将CR2文件转化为JPG
  19. 做人要厚道,做技术更要如此
  20. 美国地质调查局DEM,需账户密码

热门文章

  1. python自学需要多久-自学Python多久能找到工作
  2. python快速入门答案-Python快速入门(一)
  3. python怎么导入文本-如何导入其他Python文件?
  4. 解决安装下载好的whl库包时,报错:zipfile.BadZipFile: File is not a zip file
  5. RequestParam注解在required设置为true时失效
  6. UVa1388 - Graveyard
  7. leetcode-字符串中的第一个唯一字符
  8. WPF ValidationRule的特点(默认目标-源才校验)
  9. phpstudy升级5.7
  10. Java新手问题 02 面向对象基本功