用 Rust 编写、可嵌入的 JavaScript 引擎,包含词法分析、语法解析与解释器。
stencil-hq/dquickts
QuickJS 的分支,可挂起运行中的 JavaScript、保存整个堆快照,并在其他进程中恢复,原生支持 TypeScript。
- Star
- 483
- Fork
- 10
- 未关闭 Issue
- 3
- 最近提交
- 5天前
这是什么?
dquickts 是 Fabrice Bellard 的轻量嵌入式 JavaScript 引擎 QuickJS 的分支。核心新增能力是持久化执行:正在运行的程序,即使停在同步循环中间,也可以被挂起、序列化为字节,并在另一个进程中继续运行。快照会保存整个运行时,包括对象、闭包、待执行的 Promise 任务、已加载模块以及挂起时的调用栈。
该分支还能直接运行 .ts、.mts 和 .cts 文件。解析器在解析时擦除类型标注,无需单独的转译步骤;枚举、命名空间、参数属性和装饰器都会编译为普通字节码。`qjs --drepl FILE` 提供的 REPL 会在每条命令后保存会话,因此函数和变量在重启后依然保留。
项目还包含基于 rquickjs 移植的 Rust 绑定,暴露挂起、快照和 TypeScript 求值等能力。增量快照允许宿主只保存相对于共享基础快照的小型差量。
核心功能
- 01在安全点挂起正在运行的 JavaScript,之后从原指令处恢复。
- 02写出完整、基础或增量的堆快照,并在新的运行时或进程中读回。
- 03无需打包工具,直接运行 TypeScript 文件,类型在解析时擦除。
- 04持久化宿主调用让脚本等待 C 函数的结果,即使中间经历重启。
- 05提供持久化 REPL,会话状态可在退出和重启后保留。
- 06附带支持挂起、快照和 TypeScript 的 Rust 绑定。
适用场景
- 让长时间运行或空闲的脚本休眠以释放内存,之后再恢复执行。
- 构建脚本需等待数小时外部结果、随后在另一进程中继续的持久化工作流。
- 将长计算拆分为切片,分配给不同的工作进程执行。
- 在需要 TypeScript 且不想引入构建步骤的应用中嵌入脚本引擎。
快速上手
- 1
克隆仓库
git clone https://github.com/stencil-hq/dquickts - 2
进入项目目录
cd dquickts - 3
构建 qjs、qjsc 和 libquickjs.a
make - 4
用 qjs 运行 TypeScript 文件
./qjs hello.ts
使用前须知
- 自动检测未识别出许可证,使用前请先查看仓库的许可证条款。
- 快照和会话文件只能被写入它的同一版 qjs 构建加载。
- 持久化 REPL 不提供 std 和 os 模块。
标签
常见问题
- dquickts 是什么?
- QuickJS 的分支,可挂起运行中的 JavaScript、保存整个堆快照,并在其他进程中恢复,原生支持 TypeScript。 dquickts 是 Fabrice Bellard 的轻量嵌入式 JavaScript 引擎 QuickJS 的分支。核心新增能力是持久化执行:正在运行的程序,即使停在同步循环中间,也可以被挂起、序列化为字节,并在另一个进程中继续运行。快照会保存整个运行时,包括对象、闭包、待执行的 Promise 任务、已加载模块以及挂起时的调用栈。
- dquickts 可以免费使用吗?用的什么许可证?
- dquickts 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
- dquickts 还在维护吗?
- 活跃维护中。dquickts 最近一次提交是在 2026年11月3日。
- dquickts 适合用来做什么?
- 让长时间运行或空闲的脚本休眠以释放内存,之后再恢复执行。 构建脚本需等待数小时外部结果、随后在另一进程中继续的持久化工作流。 将长计算拆分为切片,分配给不同的工作进程执行。 在需要 TypeScript 且不想引入构建步骤的应用中嵌入脚本引擎。
- dquickts 怎么安装和运行?
- 克隆仓库: git clone https://github.com/stencil-hq/dquickts 进入项目目录: cd dquickts 构建 qjs、qjsc 和 libquickjs.a: make 用 qjs 运行 TypeScript 文件: ./qjs hello.ts
- 在哪里获取 dquickts?
- 源代码和安装说明在 GitHub 上:https://github.com/stencil-hq/dquickts
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
基于 Clang 和 LLVM 构建的交互式 C++ 解释器,提供逐行执行代码的 REPL 环境。
一款开源 TypeScript SDK,用于在自有产品中嵌入电子表格、文档和幻灯片编辑能力,并支持 Node.js 无界面运行。
PyTorch C++ API(libtorch)的 Rust 绑定,可用 Rust 构建、训练和运行深度学习模型。
开源备份引擎,生成加密、去重且可校验的快照,支持命令行和网页界面浏览与恢复。
用 C 语言编写的低延迟缓存服务,兼容 Memcache、Redis/Valkey、HTTP 和 Postgres 协议,也可作为单个 C 文件嵌入项目。