Fabrice Bellard 和他的 QuickJS JavaScript 引擎

llgoer
 llgoer
发布于 2019年07月14日
收藏 23

周二,FFmpeg和QEMU的创建者Fabrice Bellard以及C专家Charlie Gordon宣布QuickJS首次公开发布。在MIT许可下发布,它是一个“小而完整的JavaScript引擎”,支持最新的ES2019语言规范。

QuickJS JavaScript引擎中的功能
小而易于嵌入:引擎由几个C文件组成,并且没有任何外部依赖性。

快速解释器:解释器通过在100秒内从ECMAScript Test Suite1运行56,000次测试,并且在单核CPU上运行,显示出令人印象深刻的速度。运行时实例在不到300微秒的时间内完成其整个过程。

支持ES2019:几乎囊括全部对ES2019规范的支持,包括模块、异步生成器和完整的附件B支持(传统Web兼容性)。目前,它并不支持逻辑子域和尾部调用。

没有外部依赖:它可以在没有任何外部支持的情况下将JavaScript源代码编译为可执行文件。
 
命令行解释器:命令行解释器带有在Javascript中实现语境着色并完善的功能。

垃圾收集:它使用引用计数和循环删除来自动和确定地释放对象。这减少了内存使用并确保了JavaScript引擎的确定性行为。

数学扩展:您可以在'qjsbn'版本中找到所有数学扩展,它们与标准Javascript完全向下兼容。它支持大整数(BigInt)、大浮点数(BigFloat)、运算符重载,同时也附带'bigint'和'math'模式。

这个消息在Hacker News上引发了讨论,开发人员对Bellard和Gordon在该项目上的出色工作表示赞赏。
一位开发人员评论说:“哇。核心是一个1.5MB的文件,非常易读,几乎支持所有最新标准,Bellard甚至还添加了自己的扩展。它具有NaN-boxing或传统标记联合对象表示的编译时间选项,因此他不仅仅采用单一的最小实现(不像例如OTCC),而且甚至有时间和精力去探索一下。我喜欢这样的事实,它不是C99,但似乎是基本的C89,意味着非常高的可移植性。虽然我对JS的普遍厌恶主要是因为网站倾向于滥用它,但这个项目仍然令人印象深刻且非常鼓舞人心,并且人们想知道是否仍然存在“底层空间”,尤其是更小但功能更具竞争性的实施。”

另一位写道:“我迫不及待地想要解决这个问题,它看起来非常酷。我喜欢极简主义的做法。如果它真的符合规范,我将使用它来编译我编写的当前使用节点的一堆CLI脚本。

我倾向于坚持使用ECMAScript核心,并且避免使用NPM中的程序包,特别是那些具有二进制组件的程序包。很多时候我因为正在重写部分的库而减慢了我的速度,但是这里所有的东西都应该只需要一点点的OS交互层转译,这非常令人兴奋。“

要了解有关QuickJS的更多信息,请查看Fabrice Bellard的官方网站,通过QuickJS中文项目下载相关编译文件。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Fabrice Bellard 和他的 QuickJS JavaScript 引擎
加载中

精彩评论

Artrener
Artrener
太好了,终于可以有一个用C实现的最新标准的JS了,不用为移植到XP而头疼了。
KingofPapapa
KingofPapapa
从ffmpeg再到qemu再到jslinux最后是现在的quickjs。每次都是王炸。
代码强国
bellard 牛得一b
见异思迁
见异思迁
相信这个世界有神了.
衷于栖
衷于栖
我想应该能用wasm编译到web

最新评论(12

一只囧蟹
一只囧蟹
最崇拜的少数人之一!
h
hhf002
厉害,是不是可以作为产品的领域语言集成进来
sunday12345
sunday12345
想想编译V8,就头疼!
陈李雨声
陈李雨声
围观神仙
KingofPapapa
KingofPapapa
从ffmpeg再到qemu再到jslinux最后是现在的quickjs。每次都是王炸。
狍叔
狍叔
Fabrice Bellard我最佩服的牛人,用js写过虚拟机,他写的QEMU是几乎所有的虚拟化都要用的东西。他真的是牛的一B。
代码强国
bellard 牛得一b
衷于栖
衷于栖
我想应该能用wasm编译到web
Artrener
Artrener
太好了,终于可以有一个用C实现的最新标准的JS了,不用为移植到XP而头疼了。
淡漠悠然
淡漠悠然
FFmpeg 开发者
返回顶部
顶部