上周是这是 JavaScript 引擎的重要一周。在 Facebook 发布 Hermes 引擎之前, Bellard 以及 C 语言专家 Charlie Gordon 公开发布了 QuickJS。它是在 MIT 许可下发布的一个轻量可嵌入的 JavaScript 引擎,支持最新的 ES2019 语言规范。
正如 Twitter 上的一位网友所说“JavaScript 引擎很像公交汽车:你等了好几年都没来,然后两个闪亮新玩家一并出现!”
QuickJS 的特点
QuickJS 支持 ES2019规范, 包括模块,异步生成器和代理。同时可选地支持数学扩展,例如BigInt、BigFloat 和运算符重载。
主要特点:
小巧且易于嵌入:只需几个 C 文件,无外部依赖,x86 下一个简单的 hello world 示例程序仅 190 KB 的大小。
具有极低启动时间的快速解释器:在台式 PC 的单核上,在大约 100 秒内运行ECMAScript测试套件56000 次测试。运行时实例的完整生命周期在不到 300 微秒的时间内完成。
支持ES2019 ,包括模块、异步生成器和完整的 Annex B 支持(传统的 Web 兼容性)。
100%的通过了 ECMAScript 测试用例。
可以将 Javascript 源编译为没有外部依赖的可执行文件。
使用引用计数(以减少内存使用并具有确定性行为)的垃圾收集与循环删除。
数学扩展:BigInt,BigFloat,运算符重载,bigint 模式,数学模式。
在 Javascript 中实现的具有上下文着色的命令行解释器。
带有 C 库包装库构建的内置标准库。
能否取代 V8
这个消息一经发出便在 Hacker News、知乎等社区上引发热议。
Hacker News 上网友“Aissen”说:
我私下里见过 Fabrice 一次,他绝对是一个非常谦逊的人。当他告诉我们在大约一年前开始做这个项目时,他认为这不是什么大事,只是一个小型的 js 引擎,永远不会与 v8 竞争。在回答完我的几个问题之后,显然目标是实现最新的 ECMAScript 规范,包括所有好的东西。但它永远不会与 V8 成为竞争的关系。
知乎网友“龙泉寺扫地僧”说
又是 Bellard 大神的作品,此大神当年看他写的 QEMU 就惊为天人,现在终于对 JS 下手了。
V8 越来越大,最新版好像都快 10M 了,其实很多时候我就想带个小巧可用的 js 引擎而已,这次刚好可以填补这方面的空白(其他 js 引擎对标准实现的还不够完善)。要不是 Blink 和 V8 深度绑定,我真想把 V8 替换掉。
不过好像没有 JIT?那就有点遗憾了。毕竟 Bellard 大神就是做编译优化出身的,QEMU 里的能跑这么快就是靠动态翻译执行,希望后续能补上。
来源:https://www.zhihu.com/question/334509855/answer/746217029
一路开挂的作者
Fabrice 是一位法国著名的计算机程序员,因 FFmpeg、QEMU 等项目而闻名业内。他也是最快圆周率算法贝拉公式、TCCBOOT 和 TCC 等项目的作者。曾在国际 C 语言混乱代码大赛中两度获胜。
网友 justjavac 在知乎上晒出了作者之前的伟绩:
图片来源:https://www.zhihu.com/question/334509855/answer/745753879
网友尝鲜
QuickJS 以其轻巧好用的特性被大家广为赞赏,一些网友已经开始尝试使用它了,感兴趣的朋友可以去看下:
QuickJS for IOS:https://github.com/siuying/QuickJS-iOS
评论 3 条评论