Un motor de JavaScript integrable, escrito en Rust, con lexer, parser e intérprete y amplia compatibilidad con la especificación ECMAScript.
stencil-hq/dquickts
Un fork de QuickJS que puede suspender JavaScript en ejecución, guardar una instantánea de todo el heap y reanudarlo en otro proceso, con compatibilidad nativa con TypeScript.
- Estrellas
- 482
- Forks
- 11
- Issues abiertos
- 3
- Último commit
- hace 4 días
¿Qué es?
dquickts es un fork del motor integrable QuickJS de Fabrice Bellard. Su principal aporte es la ejecución durable: un programa en ejecución, incluso en medio de un bucle síncrono, se puede pausar, serializar en bytes y reanudar más adelante en otro proceso. Las instantáneas capturan todo el runtime, incluidos objetos, closures, tareas pendientes de promesas, módulos cargados y la pila de llamadas suspendida.
El fork también ejecuta directamente archivos .ts, .mts y .cts. El parser elimina las anotaciones de tipos durante el análisis, por lo que no hace falta un paso de transpilación independiente; además, los enums, namespaces, las propiedades de parámetros y los decorators se compilan a bytecode normal. Un REPL `qjs --drepl FILE` guarda la sesión después de cada comando, así que las funciones y variables se conservan al reiniciar.
El proyecto incluye bindings de Rust, un port de rquickjs, que exponen la suspensión, las instantáneas y la evaluación de TypeScript. Las instantáneas incrementales permiten que el host almacene solo pequeños deltas respecto de una base compartida.
Funciones clave
- 01Suspende JavaScript en ejecución en un punto seguro y lo reanuda más adelante desde la instrucción exacta.
- 02Escribe instantáneas completas, base o delta del heap y las carga en un runtime o proceso nuevo.
- 03Ejecuta archivos TypeScript directamente, eliminando los tipos durante el análisis y sin necesidad de un bundler.
- 04Las llamadas durables desde el host permiten que un script espere el resultado de una función C que llega después de un reinicio.
- 05Incluye un REPL durable cuyo estado de sesión persiste al salir y reiniciarlo.
- 06Incluye bindings de Rust con compatibilidad con la suspensión, las instantáneas y TypeScript.
Casos de uso
- Hibernar scripts de larga duración o inactivos para liberar memoria y reanudarlos más adelante.
- Crear workflows en los que un script espera horas un resultado externo y luego continúa en otro proceso.
- Dividir un cálculo largo en fragmentos que se ejecutan en distintos procesos worker.
- Integrar un motor de scripting en una aplicación que necesita TypeScript sin un paso de build.
Inicio rápido
- 1
Clona el repositorio
git clone https://github.com/stencil-hq/dquickts - 2
Entra en el directorio del proyecto
cd dquickts - 3
Compila qjs, qjsc y libquickjs.a
make - 4
Ejecuta un archivo TypeScript con qjs
./qjs hello.ts
Antes de usarlo
- No se detectó ninguna licencia automáticamente, así que consulta las condiciones de licencia del repositorio antes de usarlo.
- Los archivos de instantáneas y sesiones solo se pueden cargar en la misma compilación de qjs que los creó.
- El REPL persistente no incluye los módulos std ni os.
Temas
Preguntas frecuentes
- ¿Qué es dquickts?
- Un fork de QuickJS que puede suspender JavaScript en ejecución, guardar una instantánea de todo el heap y reanudarlo en otro proceso, con compatibilidad nativa con TypeScript. dquickts es un fork del motor integrable QuickJS de Fabrice Bellard. Su principal aporte es la ejecución durable: un programa en ejecución, incluso en medio de un bucle síncrono, se puede pausar, serializar en bytes y reanudar más adelante en otro proceso. Las instantáneas capturan todo el runtime, incluidos objetos, closures, tareas pendientes de promesas, módulos cargados y la pila de llamadas suspendida.
- ¿dquickts es gratuito? ¿Qué licencia tiene?
- dquickts es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿dquickts sigue mantenido?
- Mantenimiento activo. El último commit de dquickts fue el 3 nov 2026.
- ¿Para qué puedo usar dquickts?
- Hibernar scripts de larga duración o inactivos para liberar memoria y reanudarlos más adelante. Crear workflows en los que un script espera horas un resultado externo y luego continúa en otro proceso. Dividir un cálculo largo en fragmentos que se ejecutan en distintos procesos worker. Integrar un motor de scripting en una aplicación que necesita TypeScript sin un paso de build.
- ¿Cómo se instala dquickts?
- Clona el repositorio: git clone https://github.com/stencil-hq/dquickts Entra en el directorio del proyecto: cd dquickts Compila qjs, qjsc y libquickjs.a: make Ejecuta un archivo TypeScript con qjs: ./qjs hello.ts
- ¿Dónde consigo dquickts?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/stencil-hq/dquickts
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Intérprete interactivo de C++ basado en Clang y LLVM que ofrece un REPL para ejecutar código C++ línea por línea.
SDK de TypeScript de código abierto para integrar la edición de hojas de cálculo, documentos y presentaciones en tus aplicaciones, con compatibilidad headless para agentes en Node.js.
Bindings de Rust para la API de C++ de PyTorch (libtorch), que permiten crear, entrenar y ejecutar modelos de deep learning desde Rust.
Motor de backup de código abierto que crea snapshots cifrados, deduplicados y verificables, que puedes explorar y restaurar desde la CLI o la interfaz web.
Servidor de caché de baja latencia escrito en C, compatible con los protocolos Memcache, Redis/Valkey, HTTP y Postgres, que también puede integrarse como un único archivo C.