写点什么

Bloomberg 开源面向 OCaml 的 JavaScript 后端 BuckleScript

2016 年 3 月 23 日

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

BuckleScript 尚处于早期阶段,已提供 Linux 和 Mac OS X 版本,Windows 支持正在开发中。读者可以从 GitHub 上获取源代码,也可以通过基于Web 的REPL 试用。

查看英文原文: Bloomberg Open-sources BuckleScript, JavaScript Backend for OCaml

2016 年 3 月 23 日 19:001624
用户头像

发布了 1008 篇内容, 共 308.1 次阅读, 收获喜欢 272 次。

关注

评论

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

CentOS 6 升级 glibc

wong

centos glibc

半小时手工解决的活,让我意外学会了 python 的 pdfkit 库

Sicolas Flamel

Python python教程

识别代码中的坏味道(二)

Page

Java 面向对象 复杂代码优化 重构 CleanCode

用原理认知世界,用情绪驱动行为

史方远

职场 心理 成长

解决 Django 多进程下,logging 记录日志错乱问题

AlwaysBeta

Python django 编程 日志 log

Jenkins权限管理

kcnf

Live2D for Unity入门篇 4.x

波波

编程 游戏开发 Live2D Unity

Design Sprint 教你五天完成产品迭代

Yanel 说敏捷产品

产品 敏捷 设计 产品设计 团队

走进Golang之编译器原理

何磊

go golang 编译原理

汉字不能编程?别闹了,只是看着有点豪横!容易被开除!

小傅哥

spring 小傅哥 aop 汉字编程

Kotlin 协程实践(2)之 异步和Callback地狱

陈吉米

Java kotlin 协程

Deno 入门手册:附大量 TypeScript 代码实例

寇云

node.js typescript

如何发布一个npm包-创建,发布,更新,撤销及常见问题解决

Brave

npm

Dart 进阶 | 深入理解 Function & Closure

LitaVadaski

flutter dart

一文带你了解 HTTP 黑科技

cxuan

前端 HTTP

谈谈控制感(6):虚幻的控制感也好用

史方远

职场 心理 成长

中小企业如何做运维自动化?

Spug运维

运维 spug 运维自动化 jenkins ansible

谈谈控制感(7):底线思维与控制感

史方远

职场 心理 成长

英语学习中听和说的区别

七镜花园-董一凡

学习

Android | Tangram动态页面之路(三)使用

哈利迪

android

回“疫”录(20):世界从来不会欺负听话的人

小天同学

疫情 回忆录 现实纪录 纪实

Web3极客日报 #128

谢锐 | Frozen

区块链 开源 技术社区 Rebase Web3 Daily

Web3极客日报#127

谢锐 | Frozen

区块链 开源 技术社区 Rebase Web3 Daily

华为“补洞”:去年重新设计超过6000万行代码

罗燕珊

华为 实体清单

一想到有95%的问题还没解决,我就calm down了

赵新龙

科普 宇宙 后真相时代

MySQL事务解析

一个有志气的DB

MySQL 事务隔离级别 mysql事务

程序员的晚餐 | 5 月 18 日 瓠子,年少时的味道

清远

美食

从零开始制作一台计算机-概述

小兵

计算机基础

写在开头

宋胖子

PhotoShop切图,一篇文章就够用了

cwang

Web 工具 PhotoShop

新mac笔记本需要做的事情

好好学习

Mac

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

Bloomberg开源面向OCaml的JavaScript后端BuckleScript-InfoQ