Rust製の組み込み可能なJavaScriptエンジン。ECMAScript仕様を幅広くサポートするlexer、parser、interpreterを提供します。
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
リポジトリをクローンする
git clone https://github.com/stencil-hq/dquickts - 2
プロジェクトディレクトリに移動する
cd dquickts - 3
qjs、qjsc、libquickjs.a をビルドする
make - 4
qjs で TypeScript ファイルを実行する
./qjs hello.ts
使う前に知っておきたいこと
- ライセンスは自動検出されませんでした。使用前にリポジトリのライセンス条項を確認してください。
- スナップショットファイルとセッションファイルは、それらを書き出したものと同じ qjs ビルドでのみ読み込めます。
- 永続 REPL では std モジュールと os モジュールを利用できません。
トピック
よくある質問
- 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 の数値は毎日更新されます。
関連プロジェクト
ClangとLLVMを基盤とする対話型C++インタープリター。REPLでC++コードを1行ずつ実行できます。
アプリにスプレッドシート、ドキュメント、プレゼンテーションの編集機能を組み込めるオープンソースのTypeScript SDK。エージェント向けのヘッドレスなNode.jsサポートも備えています。
PyTorch(libtorch)の C++ API を Rust から呼び出せるようにするバインディングで、Rust コードからディープラーニングモデルの構築、学習、実行ができます。
暗号化・重複排除に対応したスナップショットを作成し、CLIやWeb UIから参照・復元できるオープンソースのバックアップエンジン。
Memcache、Redis/Valkey、HTTP、Postgresのプロトコルに対応し、単一のCファイルとして組み込める、低レイテンシなC製キャッシュサーバーです。