Repolode
stencil-hq

stencil-hq/dquickts

実行中のJavaScriptを一時停止してヒープ全体をスナップショット化し、別プロセスで再開できる、ネイティブなTypeScript対応のQuickJSフォーク。

スター
482
フォーク
11
未解決の Issue
3
最終コミット
4 日前

これは何?

dquicktsは、Fabrice Bellardの組み込み可能なQuickJSエンジンをフォークしたものです。主な追加機能は耐久実行です。同期ループの途中であっても、実行中のプログラムを一時停止してバイト列にシリアライズし、後で別のプロセスから再開できます。スナップショットには、オブジェクト、クロージャ、実行待ちのPromiseジョブ、読み込み済みモジュール、中断時のコールスタックなど、ランタイム全体が保存されます。

このフォークでは、.ts、.mts、.ctsファイルもそのまま実行できます。パーサーが解析時に型注釈を取り除くため、別途トランスパイルする必要はありません。また、enum、namespace、parameter property、decoratorは通常のバイトコードにコンパイルされます。`qjs --drepl FILE` REPLはコマンドごとにセッションを保存するため、再起動後も関数や変数を利用できます。

このプロジェクトには、rquickjsを移植したRustバインディングも含まれており、一時停止、スナップショット、TypeScript評価の機能を提供します。インクリメンタルスナップショットを使えば、共有ベースに対する小さな差分だけをホスト側に保存できます。

主な機能

  • 01セーフポイントで実行中のJavaScriptを一時停止し、後から正確に同じ命令位置から再開できます。
  • 02ヒープ全体、ベース、または差分のスナップショットを書き出し、新しいランタイムやプロセスで読み込めます。
  • 03TypeScriptファイルをそのまま実行でき、解析時に型を取り除くため、バンドラーは不要です。
  • 04耐久性のあるホスト呼び出しにより、再起動後に返ってくるC関数の結果をスクリプトで待機できます。
  • 05終了や再起動をまたいでセッション状態を保持する、耐久性のあるREPLを提供します。
  • 06一時停止、スナップショット、TypeScriptに対応したRustバインディングを同梱しています。

ユースケース

  • 長時間実行中、またはアイドル状態のスクリプトを休止してメモリを解放し、後から再開する。
  • スクリプトが外部からの結果を何時間も待ち、その後別のプロセスで処理を続けるワークフローを構築する。
  • 長い計算を小さな区間に分割し、異なるワーカープロセスで実行する。
  • ビルド手順なしでTypeScriptを使えるスクリプトエンジンをアプリケーションに組み込む。

クイックスタート

  1. 1

    リポジトリをクローンする

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

    プロジェクトディレクトリに移動する

    cd dquickts
  3. 3

    qjs、qjsc、libquickjs.a をビルドする

    make
  4. 4

    qjs で TypeScript ファイルを実行する

    ./qjs hello.ts

使う前に知っておきたいこと

  • ライセンスは自動検出されませんでした。使用前にリポジトリのライセンス条項を確認してください。
  • スナップショットファイルとセッションファイルは、それらを書き出したものと同じ qjs ビルドでのみ読み込めます。
  • 永続 REPL では std モジュールと os モジュールを利用できません。

トピック

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

よくある質問

dquickts とは?
実行中のJavaScriptを一時停止してヒープ全体をスナップショット化し、別プロセスで再開できる、ネイティブなTypeScript対応のQuickJSフォーク。 dquicktsは、Fabrice Bellardの組み込み可能なQuickJSエンジンをフォークしたものです。主な追加機能は耐久実行です。同期ループの途中であっても、実行中のプログラムを一時停止してバイト列にシリアライズし、後で別のプロセスから再開できます。スナップショットには、オブジェクト、クロージャ、実行待ちのPromiseジョブ、読み込み済みモジュール、中断時のコールスタックなど、ランタイム全体が保存されます。
dquickts は無料で使えますか?ライセンスは?
dquickts は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
dquickts は今もメンテナンスされていますか?
活発にメンテナンス中。dquickts の最終コミットは 2026年11月3日 です。
dquickts は何に使えますか?
長時間実行中、またはアイドル状態のスクリプトを休止してメモリを解放し、後から再開する。 スクリプトが外部からの結果を何時間も待ち、その後別のプロセスで処理を続けるワークフローを構築する。 長い計算を小さな区間に分割し、異なるワーカープロセスで実行する。 ビルド手順なしでTypeScriptを使えるスクリプトエンジンをアプリケーションに組み込む。
dquickts のインストール方法は?
リポジトリをクローンする: git clone https://github.com/stencil-hq/dquickts プロジェクトディレクトリに移動する: cd dquickts qjs、qjsc、libquickjs.a をビルドする: make qjs で TypeScript ファイルを実行する: ./qjs hello.ts
dquickts はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/stencil-hq/dquickts

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト

アプリにスプレッドシート、ドキュメント、プレゼンテーションの編集機能を組み込めるオープンソースのTypeScript SDK。エージェント向けのヘッドレスなNode.jsサポートも備えています。

2.3万+87 今週1925TypeScriptApache-2.0活発にメンテナンス更新 14 時間前