Repolode
stencil-hq

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

    Clone o repositório

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

    Acesse o diretório do projeto

    cd dquickts
  3. 3

    Compile qjs, qjsc e libquickjs.a

    make
  4. 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

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

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