Skip to content
0

quickJs

小而完整的 JavaScript 引擎

安装

$ brew install quickjs

使用

quickJs 提供了和 node 类似的命令行交互,通过 qjs 命令直接调用

$ qjs
QuickJS - Type "\h" for help
qjs > const a = 1
undefined
qjs > const b = 3
undefined
qjs > a + b
4
qjs >

或者是执行一个 JS 文件

$ echo "console.log('Hello quickjs')" > test.js
$ qjs test.js
Hello quickjs

使用 qjsc 可以编译 JS 到二进制文件

$ qjsc -o hello test.js
$ ./hello
Hello quickjs

特性

官网宣称的几个特性

  • 小巧且易于嵌入:只需几个 C 文件,无外部依赖性,一个简单的 hello world 程序只需 210 KiB
  • 快速解释器,启动时间极短:在台式电脑的单核上运行 ECMAScript Test Suite 的 75000 个测试仅需约 100 秒。运行时实例的整个生命周期不到 300 微秒。
  • 几乎完全支持 ES2020,包括模块、异步生成器和完整的附件 B 支持(传统网络兼容性)。
  • 可将 Javascript 源代码编译为可执行文件,无外部依赖性。
  • 使用引用计数进行垃圾回收(以减少内存使用量,并具有确定性行为),并可去除循环。
  • 命令行解释器,使用 Javascript 实现上下文着色。
  • 小型内置标准库,带 C 库封装。

安全地执行 JS

可以使用基于 quickjsjustjake/quickjs-emscripten。在 Javascript 中安全地执行不受信任的 Javascript

Released under the MIT License.