QuickJS是一个小型并且可嵌入的Javascript引擎,它支持ES2020规范,包括模块,异步生成器和代理器。
它可选支持数学扩展,例如大整数 (BigInt),大浮点数 (BigFloat) 以及运算符重载。
轻量而且易于嵌入:只需几个C文件,没有外部依赖,一个x86下的简单的“hello world”程序只要180 KiB。
具有极低启动时间的快速解释器: 在一台单核的台式PC上,大约在100秒内运行ECMAScript 测试套件1 56000次。运行时实例的完整生命周期在不到300微秒的时间内完成。
几乎完整实现ES2019支持,包括: 模块,异步生成器和和完整Annex B支持 (传统的Web兼容性)。许多ES2020中带来的特性也依然会被支持。
通过100%的ECMAScript Test Suite测试。
部分代码:
.版本 2
.支持库 spec
.程序集 qValue
.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用
.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用
.子程序 GetGlobalObject, 整数型, , 返回 jsValue指针
.参数 上下文, 整数型
返回 (q_GetGlobalObject (上下文))
.子程序 NewObject, 整数型, , 返回 jsValue指针
.参数 上下文, 整数型
返回 (q_NewObject (上下文))
.子程序 NewEFunction, 整数型, , 返回 jsValue指针
.参数 上下文, 整数型
.参数 子程序指针, 子程序指针
.参数 关联JS的方法名, 文本型
.参数 参数个数, 整数型
返回 (q_NewEFunction (上下文, 取子程序地址 (子程序指针), 关联JS的方法名, 参数个数))
.子程序 SetPropertyStr, 整数型
.参数 上下文, 整数型
.参数 目标对象, 整数型, , jsValue指针
.参数 属性名, 文本型
.参数 属性值, 整数型, , jsValue指针
.局部变量 run, 整数型
run = q_SetPropertyStr (上下文, 目标对象, 属性名, 属性值)
返回 (run)