66

轻量可嵌入的 QuickJS 引擎重磅开源,它会是下一个 V8 吗?

 5 years ago
source link: https://www.tuicool.com/articles/222Mfeu
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

上周是这是 JavaScript 引擎的重要一周。在 Facebook 发布 Hermes 引擎之前, Bellard 以及 C 语言专家 Charlie Gordon 公开发布了 QuickJS。它是在 MIT 许可下发布的一个轻量可嵌入的 JavaScript 引擎,支持最新的 ES2019 语言规范。

正如 Twitter 上的一位网友所说“JavaScript 引擎很像公交汽车:你等了好几年都没来,然后两个闪亮新玩家一并出现!”

2iUV7nZ.png!web

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 在知乎上晒出了作者之前的伟绩:

iYnEvu2.png!web

图片来源: https://www.zhihu.com/question/334509855/answer/745753879

网友尝鲜

QuickJS 以其轻巧好用的特性被大家广为赞赏,一些网友已经开始尝试使用它了,感兴趣的朋友可以去看下:

QuickJS for IOS: https://github.com/siuying/QuickJS-iOS


Recommend

  • 34
    • blog.einverne.info 6 years ago
    • Cache

    Aviator 轻量 Java 表达式引擎

    Aviator 是一个轻量级、高性能的 Java 表达式执行引擎,它动态地将表达式编译成字节码并运行。 使用 <dependency> <groupId>com.googlecode.aviator</groupId> <artifactId>aviato...

  • 51

    作者 / 程梦玲 添加“好物点评团”板块,嵌入小红书内容,淘宝想要“牵手”小红书的意图,早在阿里今年5月份投资小红书之时,这一步大概已在规划中。 在不少业内人士看来,此次合作是双方“蜜月”的开始。是否...

  • 109
    • www.tuicool.com 5 years ago
    • Cache

    QuickJS JavaScript Engine

    QuickJS Javascript Engine News 2019-07-09:First public release Introduction QuickJS is a small and embeddable Javascript engine. It supports the

  • 41

    QuickJS 2019年7月9日 Fabrice Bellard 开源了一款 JavaScript 引擎,使用 MIT 协议。 Fabrice Bellard 是一位计算机奇才,著名的多媒体播放器 FFmpeg 就是由他发起,一生中开源了很多项目,比如 QEMU 等。

  • 146
    • www.tuicool.com 5 years ago
    • Cache

    由 QuickJS 想到的

    前几天,一个叫 Fabrice Bellard 的大牛程序员发布了一个新的 JS 引擎:QuickJS,引起了业界轰动。QuickJS 的主要特点是小,嵌入式,完整支持 ES2019 语法,和其他小型嵌入式 JS 引擎比起来,速度也很快。 登上大...

  • 31
    • uxfeel.com 5 years ago
    • Cache

    尝试Quickjs | 帕奇的手札

    早上上班看到阮老师这个微博和评论后对Quickjs提起了兴趣。当我点进

  • 46

    QuickJS 是一个完全由C语言编写的极小型JavaScript引擎,作者是大名鼎鼎的FFmpeg和QEMU的创建者Fabrice Bellard以及C专家Charlie Gordon。 QuickJS采用开源MIT协议,不限制商业用途。它是一个“小而完整的JavaScript引...

  • 13

    缘起 研究ART JVM的时候,我一直有一个遗憾,总感觉对Java语言的理解不深刻,从而我个人觉得自己对JVM的理解还处于相对初级的阶段——只能顺着代码里的执行流程去看。这个水平的话,改点小bug或许没问题,但如果将来Java加了新的语言...

  • 13
    • zhuanlan.zhihu.com 4 years ago
    • Cache

    QuickJS 引擎一年见闻录

    QuickJS 引擎一年见闻录doodlewind雪碧 | github.com/doodlewind时间过得真快,转眼间...

  • 1

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK