Repolode
stencil-hq

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. 1

    克隆仓库

    git clone https://github.com/stencil-hq/dquickts
  2. 2

    进入项目目录

    cd dquickts
  3. 3

    构建 qjs、qjsc 和 libquickjs.a

    make
  4. 4

    用 qjs 运行 TypeScript 文件

    ./qjs hello.ts

使用前须知

  • 自动检测未识别出许可证,使用前请先查看仓库的许可证条款。
  • 快照和会话文件只能被写入它的同一版 qjs 构建加载。
  • 持久化 REPL 不提供 std 和 os 模块。

标签

#javascript-engine#typescript#embeddable#snapshots#serialization#repl#rust-bindings#durable-execution#hibernation#interpreter

常见问题

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 数据每日更新。

相关项目