QuickJS 是一个轻量且可嵌入的 JavaScript 引擎,它支持 ES2019 规范,包括 ES module、异步生成器以及 proxies。除此之外,还支持可选的数学扩展,例如大整数 (BigInt)、大浮点数 (BigFloat) 和运算符重载。
选择 QuickJS 作为支撑 LLRT 的引擎本身就很有意义。作为一个采用 ECMAScript 2020 标准的紧凑型 JavaScript 引擎,它满足大多数现代 JavaScript 开发的需求。尽管 LLRT 并不追求全面的 Node.js api 支持,但它提供了足够的能力来解决服务器端开发问题。
LLRT 的最大特点之一是它注重快速启动和内存节约 。缺乏 JIT(即时)编译器意味着代码的运行时间更长,但带来了双重好处:
- 简化复杂性:JIT 复杂且庞大,增加了运行时的大小和复杂性。
- 更高的资源效率 :没有 JIT 开销,LLRT 可以节省 CPU 和内存,重新分配资源以加快应用程序启动速度。
主要特性
- 轻量且方便嵌入:QuickJS 只包含一些 C 语言文件,没有额外的依赖,运行一个简单的 hello world 只需要 190 KiB 的 x86 代码
- 拥有启动时间极短的快速解释器:在单核的台式 PC 上,运行 ECMAScript 测试套件的 56000 个测试大约在 100 秒内完成。一个 runtime
- 例的完整生命周期在不到 300ms 内完成
- 几乎完整的 ES2019 支持,包括 ES module、异步生成器和完整的 Annex B 支持(传统的 Web 兼容性)
- 完全通过了 ECMAScript 测试套件的测试
- 可将 JavaScript 源码编译为没有外部依赖的可执行文件
- 基于引用计数的 GC(以减少内存使用并具有确定性行为)
- 数学扩展:BigInt、BigFloat、运算符重载、bigint mode 和 math mode
- 使用 Javascript 实现的具有上下文着色功能(contextual colorization)的命令行解释器
- 包含使用 C 语言库封装的轻量级内置标准库
BTW,QuickJS 的作者是 Fabrice Bellard,知名开源项目 FFMPEG 和 QEMU 都出自他手。
链接: https://fly63.com/nav/4138