astrid-runtime/sdk-js

JavaScript and TypeScript SDK for building Astrid capsules.

解決する課題

Rust の代わりに JavaScript と TypeScript を使用して「カプセル」(隔離されたポータブルなバイナリ)を構築する方法を提供します。これにより、開発者は使い慣れた Node.js ライクな API や TypeScript デコレータを使用して、ホスト ABI を変更することなく Astrid ランタイムカーネルによって実行可能なモジュールコンポーネントを作成できます。

仕組み

この SDK は、TypeScript コードを WebAssembly (Wasm) コンポーネントに変換するビルドパイプラインを使用します。プロセスには以下が含まれます:

  1. Typechecking: tsc が TypeScript を JavaScript にコンパイルします。
  2. Bundling: esbuild がコードと SDK を単一の ESM モジュールにバンドルします。
  3. Componentization: ComponentizeJS が StarlingMonkey を使用して、バンドルを wasm32-wasip2 コンポーネントに変換します。
  4. Packaging: Rust ベースのツールが、生成された Wasm ファイルと Capsule.toml 設定を .capsule アーカイブにパックします。

対象者

Astrid カプセルの構築に Rust よりも JavaScript や TypeScript のエルゴノミクスを好む開発者、および JS カプセルのバイナリサイズが Rust に比べて大きくなることを許容できるデーモンモードのワークロードを構築している開発者。

ハイライト

  • 使い慣れた API: node:fs/promisesnode:child_process、および WHATWG fetch を使用します。
  • TypeScript デコレータ: @capsule@tool@install などのデコレータを使用して、カプセルの動作とライフサイクルフックを定義します。
  • 言語に依存しない: Rust SDK と同じ .capsule アーカイブ形式および WIT コントラクトを生成するため、カーネルの観点からはバイナリを相互に入れ替え可能です。
  • 統合されたビルドツール: ソースコードから最終的なアーカイブまでのパイプライン全体を管理するビルドオーケストレーターが含まれています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト