Engine JavaScript incorporável, escrito em Rust, com lexer, parser e interpretador e amplo suporte à especificação ECMAScript.
stencil-hq/dquickts
Fork do QuickJS que suspende JavaScript em execução, salva todo o heap em um snapshot e retoma a execução em outro processo, com suporte nativo a TypeScript.
- Estrelas
- 482
- Forks
- 11
- Issues abertas
- 3
- Último commit
- há 4 dias
O que é?
dquickts é um fork do mecanismo embutível QuickJS, de Fabrice Bellard. Sua principal novidade é a execução durável: um programa em execução, até mesmo no meio de um loop síncrono, pode ser pausado, serializado em bytes e retomado depois em outro processo. Os snapshots capturam todo o runtime, incluindo objetos, closures, tarefas pendentes de promises, módulos carregados e a pilha de chamadas suspensa.
O fork também executa arquivos .ts, .mts e .cts diretamente. O parser remove as anotações de tipo durante o parsing, sem precisar de uma etapa separada de transpilation, e enums, namespaces, propriedades de parâmetros e decorators são compilados para bytecode comum. Um REPL `qjs --drepl FILE` salva a sessão após cada comando, preservando funções e variáveis entre reinicializações.
O projeto inclui bindings para Rust, em um port do rquickjs, que oferecem suporte a suspensão, snapshots e avaliação de TypeScript. Snapshots incrementais permitem que o host armazene apenas pequenos deltas em relação a uma base compartilhada.
Recursos principais
- 01Suspende JavaScript em execução em um ponto seguro e retoma a execução depois a partir da instrução exata.
- 02Grava snapshots completos, de base ou delta do heap e os lê em um runtime ou processo novo.
- 03Executa arquivos TypeScript diretamente, removendo os tipos durante o parsing e sem exigir um bundler.
- 04Chamadas duráveis ao host permitem que um script aguarde o resultado de uma função C que chega após uma reinicialização.
- 05Oferece um REPL durável, no qual o estado da sessão persiste entre saídas e reinicializações.
- 06Inclui bindings para Rust com suporte a suspensão, snapshots e TypeScript.
Casos de uso
- Hibernar scripts de longa duração ou ociosos para liberar memória e retomá-los depois.
- Criar workflows em que um script aguarda horas por um resultado externo e então continua em outro processo.
- Dividir uma computação longa em etapas executadas por diferentes processos worker.
- Incorporar um mecanismo de scripting a um aplicativo que precisa de TypeScript sem uma etapa de build.
Início rápido
- 1
Clone o repositório
git clone https://github.com/stencil-hq/dquickts - 2
Acesse o diretório do projeto
cd dquickts - 3
Compile qjs, qjsc e libquickjs.a
make - 4
Execute um arquivo TypeScript com qjs
./qjs hello.ts
Antes de usar
- Nenhuma licença foi detectada automaticamente. Verifique os termos da licença do repositório antes de usá-lo.
- Arquivos de snapshot e de sessão só podem ser carregados na mesma build do qjs que os criou.
- O REPL persistente não oferece os módulos std e os.
Tópicos
Perguntas frequentes
- O que é dquickts?
- Fork do QuickJS que suspende JavaScript em execução, salva todo o heap em um snapshot e retoma a execução em outro processo, com suporte nativo a TypeScript. dquickts é um fork do mecanismo embutível QuickJS, de Fabrice Bellard. Sua principal novidade é a execução durável: um programa em execução, até mesmo no meio de um loop síncrono, pode ser pausado, serializado em bytes e retomado depois em outro processo. Os snapshots capturam todo o runtime, incluindo objetos, closures, tarefas pendentes de promises, módulos carregados e a pilha de chamadas suspensa.
- dquickts é gratuito? Qual é a licença?
- dquickts é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
- dquickts ainda é mantido?
- Manutenção ativa. O último commit de dquickts foi em 3 de nov. de 2026.
- Para que posso usar dquickts?
- Hibernar scripts de longa duração ou ociosos para liberar memória e retomá-los depois. Criar workflows em que um script aguarda horas por um resultado externo e então continua em outro processo. Dividir uma computação longa em etapas executadas por diferentes processos worker. Incorporar um mecanismo de scripting a um aplicativo que precisa de TypeScript sem uma etapa de build.
- Como instalar dquickts?
- Clone o repositório: git clone https://github.com/stencil-hq/dquickts Acesse o diretório do projeto: cd dquickts Compile qjs, qjsc e libquickjs.a: make Execute um arquivo TypeScript com qjs: ./qjs hello.ts
- Onde consigo dquickts?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/stencil-hq/dquickts
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Um interpretador interativo de C++ baseado em Clang e LLVM, com um REPL para executar código C++ linha por linha.
Um SDK open source em TypeScript para incorporar a edição de planilhas, documentos e apresentações aos seus próprios apps, com suporte headless a Node.js para agentes.
Bindings Rust para a API C++ do PyTorch (libtorch), que permitem criar, treinar e executar modelos de deep learning em Rust.
Motor de backup open source que cria snapshots criptografados, deduplicados e verificáveis, que podem ser navegados e restaurados pela CLI ou pela interface web.
Servidor de cache de baixa latência escrito em C, compatível com os protocolos Memcache, Redis/Valkey, HTTP e Postgres, e que pode ser integrado como um único arquivo C.