Repolode
stencil-hq

stencil-hq/dquickts

Форк QuickJS, который умеет приостанавливать JavaScript, сохранять весь его heap и возобновлять выполнение в другом процессе, а также поддерживает TypeScript без дополнительных инструментов.

Звёзды
482
Форки
11
Открытые issues
3
Последний коммит
4 дня назад

Что это?

dquickts — форк встраиваемого движка QuickJS, созданного Fabrice Bellard. Главное нововведение — поддержка устойчивого выполнения: работающую программу, даже посреди синхронного цикла, можно приостановить, сериализовать в байты и позже возобновить в другом процессе. Снимки сохраняют всё состояние runtime, включая объекты, замыкания, ожидающие выполнения задачи promise, загруженные модули и приостановленный стек вызовов.

Форк также запускает файлы .ts, .mts и .cts напрямую. Парсер удаляет аннотации типов во время разбора, поэтому отдельный этап транспиляции не нужен, а enum, namespace, свойства параметров и декораторы компилируются в обычный байткод. REPL `qjs --drepl FILE` сохраняет сессию после каждой команды, поэтому функции и переменные сохраняются после перезапусков.

В проект входят Rust bindings — порт rquickjs, предоставляющий доступ к приостановке выполнения, снимкам и обработке TypeScript. Инкрементальные снимки позволяют хосту хранить только небольшие дельты относительно общей базовой версии.

Ключевые возможности

  • 01Приостанавливает работающий JavaScript в безопасной точке и позже возобновляет его с той же инструкции.
  • 02Создаёт полные, базовые или дельта-снимки heap и загружает их в новом runtime или процессе.
  • 03Запускает файлы TypeScript напрямую: типы удаляются во время разбора, bundler не требуется.
  • 04Устойчивые вызовы хоста позволяют скрипту дождаться результата C-функции, который поступит после перезапуска.
  • 05Предоставляет устойчивый REPL, состояние сессии в котором сохраняется после выхода и перезапуска.
  • 06Включает Rust bindings с поддержкой приостановки, снимков и TypeScript.

Сценарии использования

  • Приостанавливать долгоживущие или простаивающие скрипты, чтобы освободить память, и позже возобновлять их.
  • Создавать workflows, в которых скрипт часами ждёт внешний результат, а затем продолжает работу в другом процессе.
  • Разбивать длительные вычисления на части, выполняемые в разных worker-процессах.
  • Встраивать в приложение движок для скриптов, которому нужна поддержка TypeScript без этапа сборки.

Быстрый старт

  1. 1

    Клонируйте репозиторий

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

    Перейдите в каталог проекта

    cd dquickts
  3. 3

    Соберите qjs, qjsc и libquickjs.a

    make
  4. 4

    Запустите файл TypeScript с помощью qjs

    ./qjs hello.ts

Что важно знать

  • Лицензия не была обнаружена автоматически, поэтому перед использованием ознакомьтесь с условиями лицензии репозитория.
  • Файлы снимков состояния и сеансов можно загрузить только в той же сборке qjs, в которой они были созданы.
  • В постоянном REPL модули std и os недоступны.

Темы

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

Частые вопросы

Что такое dquickts?
Форк QuickJS, который умеет приостанавливать JavaScript, сохранять весь его heap и возобновлять выполнение в другом процессе, а также поддерживает TypeScript без дополнительных инструментов. dquickts — форк встраиваемого движка QuickJS, созданного Fabrice Bellard. Главное нововведение — поддержка устойчивого выполнения: работающую программу, даже посреди синхронного цикла, можно приостановить, сериализовать в байты и позже возобновить в другом процессе. Снимки сохраняют всё состояние runtime, включая объекты, замыкания, ожидающие выполнения задачи promise, загруженные модули и приостановленный стек вызовов.
dquickts можно использовать бесплатно? Какая у него лицензия?
dquickts распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
dquickts всё ещё поддерживается?
Активно поддерживается. Последний коммит в dquickts — 3 нояб. 2026 г..
Для чего можно использовать dquickts?
Приостанавливать долгоживущие или простаивающие скрипты, чтобы освободить память, и позже возобновлять их. Создавать workflows, в которых скрипт часами ждёт внешний результат, а затем продолжает работу в другом процессе. Разбивать длительные вычисления на части, выполняемые в разных worker-процессах. Встраивать в приложение движок для скриптов, которому нужна поддержка TypeScript без этапа сборки.
Как установить dquickts?
Клонируйте репозиторий: git clone https://github.com/stencil-hq/dquickts Перейдите в каталог проекта: cd dquickts Соберите qjs, qjsc и libquickjs.a: make Запустите файл TypeScript с помощью qjs: ./qjs hello.ts
Где скачать dquickts?
Исходный код и инструкции по установке — на GitHub: https://github.com/stencil-hq/dquickts

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

SDK с открытым исходным кодом на TypeScript для встраивания редакторов таблиц, документов и презентаций в свои приложения, с поддержкой headless-режима в Node.js для агентов.

22,9 тыс.+87 за неделю1,9 тыс.TypeScriptApache-2.0Активно поддерживаетсяОбновлён 11 часов назад

Открытый движок резервного копирования: создает зашифрованные, дедуплицированные и проверяемые снимки, которые можно просматривать и восстанавливать через CLI или веб-интерфейс.

2,1 тыс.+9 за неделю103GoISCАктивно поддерживаетсяОбновлён 12 часов назад