一个小型但完整的JavaScript引擎

2020-10-25 04:54:51

QuickJS是一个小型的、可嵌入的Javascript引擎。它支持ES2020规范,包括模块、异步生成器、代理和BigInt。它可选地支持数学扩展,如大十进制浮点数(BigDecimal)、大二进制浮点数(BigFloat)和运算符重载。主要特点:体积小,易于嵌入:只需要几个C文件,没有外部依赖性,210KiB的x86代码就可以实现一个简单的hello world程序。

启动时间非常短的快速解释器:在台式PC的单核上运行ECMAScript测试套件的69000个测试,运行时间约为95秒。运行时实例的完整生命周期在不到300微秒内完成。

几乎完全支持ES2020,包括模块、异步生成器和完整的附件B支持(传统Web兼容性)。

在选择ES2020功能时,几乎100%通过ECMAScript测试套件测试。摘要可在测试262报告中获得。

垃圾收集使用引用计数(以减少内存使用并具有确定性行为)和周期删除。

可以在numcalc.com上获得QuickJS引擎及其数学扩展的在线演示。它是用Emscripten从C编译成WASM/asm.js的。可以在JSLinux中运行qjs和qjscalc。QuickJS文档:HTML版本、PDF版本。JS Bignum扩展规范:HTML版本、PDF版本。QuickJS Extras(包含重新构建Unicode表和BENCH-V8基准所需的Unicode文件):Quickjs-Extras-2020-09-06.tar.xz。

QuickJS嵌入了以下可在其他项目中使用的C库:libunicode:支持案例转换、Unicode规范化、Unicode脚本查询、Unicode通用类别查询和所有Unicode二进制属性的小Unicode库。

Libbf:实现任意精度IEEE754浮点运算和精确舍入的超越函数的小型库。它作为一个单独的项目进行维护。

QuickJS是在麻省理工学院的许可下发布的。除非另有说明,否则QuickJS来源版权归FabriceBellard和Charlie Gordon所有。Fabrice Bellard-https://bellard.org/