生猛!FFmpeg 开发者徒手撸了一个 JS 引擎

(给程序员的那些事加星标linux

7 月 12 日,Hacker News 首页有个热门消息,是大佬 Fabrice Bellard 在 7 月 9 日发布的新做品:QuickJS  JavaScript 引擎。程序员


640?wx_fmt=png


JS 引擎是执行 JavaScript 代码的程序或解释器,它以某种形式将 JS 代码编译为字节码。有个你们熟知的 JS 引擎是 V8,由 Google 用 C++ 实现的。

QuickJS 是一个可嵌入的小巧 Javascript 引擎。它支持 ES2019 规范,包括模块、异步生成器和代理。它还支持数学扩展,好比大整数(BigInt)、大浮点数(BigFloat)和操做符重载。

QuickJS 的主要特性:

0、小巧可嵌入:仅几个 C 文件,没有外部依赖,简单的 Hello World 程序须要 190 KiB 的 x86 代码。;

一、启动时间很是短的快速解释器:在单核的桌面 PC 上,运行ECMAScript 测试套件的 56000 个测试大约在 100 秒内。运行时实例的完整生命周期在不到 300 微秒内。

二、几乎完整支持 ES2019 ,包括模块、异步生成器和完整的附录B支持(遗留web兼容性)。

三、100% 经过 ECMAScript 测试套件。

四、能够把 Javascript 源代码编译到可执行文件,没有外部依赖。

五、垃圾回收使用引用计数(减小内存使用并具备肯定性行为)和循环删除。

六、数学扩展:BigInt、BigFloat、操做符重载、bigint模式、数学模式。

七、命令行解释器,用 Javascript 实现上下文着色。

八、有一个小型的 C 内置标准库。
web


QuickJS 遵循 MIT 许可。浏览器


围观连接:https://bellard.org/quickjs/app


QuickJS 的测评结果异步


640?wx_fmt=png

(分数越高,表示越好)
测试


Fabrice Bellard 是什么样的大佬?ui


他是法国人,1972 年出生,著名的计算机程序员,因 FFmpegQEMU 等项目而闻名业内。精通 C 和 JavaScript。spa


640?wx_fmt=jpeg


在读高中时,就开发了著名的可执行压缩程序 LZEXE,这是当年 DOS 上第一个普遍使用的文件压缩程序。操作系统


在 2000 年,他开发了 FFmpeg。


在 2011 年,他使用 JavaScript 写了一个 PC 虚拟机 Jslinux,能够在浏览器中直接运行 Linux 或 Windows 操做系统。


640?wx_fmt=png

640?wx_fmt=png


640?wx_fmt=png


上面只是他的众多做品中少数几个。下面是维基百科上的介绍。


640?wx_fmt=png

640?wx_fmt=png

(截图来自维基百科)


网友评论


640?wx_fmt=png

还有什么东西是 Fabrice 不能作的么?个人意思是,FFmpeg 自己几乎就是一篇博士论文,他仍然设法找到时间来作 TinyC 和 QEMU,如今又还作了 QuickJS。


640?wx_fmt=png

这家伙就是个奇才。你也能够感谢他的 ffmpeg 和 qemu。我曾经工做过的一家公司试图聘请他作顾问,由于他在软件中实现了 LTE BTS。还有什么是他无法作的吗?



往期热文(点击图片便可阅读)


640?wx_fmt=png

640?wx_fmt=png


关注「程序员的那些事」加星标,不错过圈内事

640?wx_fmt=png

大佬的做品,你看到了么?