Встраиваемый движок JavaScript на Rust с лексером, парсером и интерпретатором, поддерживающий значительную часть спецификации ECMAScript.
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
Клонируйте репозиторий
git clone https://github.com/stencil-hq/dquickts - 2
Перейдите в каталог проекта
cd dquickts - 3
Соберите qjs, qjsc и libquickjs.a
make - 4
Запустите файл TypeScript с помощью qjs
./qjs hello.ts
Что важно знать
- Лицензия не была обнаружена автоматически, поэтому перед использованием ознакомьтесь с условиями лицензии репозитория.
- Файлы снимков состояния и сеансов можно загрузить только в той же сборке qjs, в которой они были созданы.
- В постоянном REPL модули std и os недоступны.
Темы
Частые вопросы
- Что такое 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 обновляется ежедневно.
Похожие проекты
Интерактивный интерпретатор C++ на базе Clang и LLVM с REPL для выполнения кода построчно.
SDK с открытым исходным кодом на TypeScript для встраивания редакторов таблиц, документов и презентаций в свои приложения, с поддержкой headless-режима в Node.js для агентов.
Rust-привязки к C++ API PyTorch (libtorch), позволяющие создавать, обучать и запускать модели глубокого обучения на Rust.
Открытый движок резервного копирования: создает зашифрованные, дедуплицированные и проверяемые снимки, которые можно просматривать и восстанавливать через CLI или веб-интерфейс.
Низколатентный кэширующий сервер на C с поддержкой протоколов Memcache, Redis/Valkey, HTTP и Postgres, который можно встроить в программу как один C-файл.