コンテンツにスキップ

0003. コアは wasm モジュール 1 つと loader としてだけ扱う

  • 状態:採用(2026-10-04)
  • 決めた人:実装の計画(ユーザーが承認)

コアは paludarium に置き換えます。コアが変わるたびに、ブラウザと Node.js のランタイムを作り直したくありません。

コアは、WebAssembly のモジュール 1 つと、それを読み込む loader として扱います(決めた時点では、ES モジュールの既定の export が factory になる Emscripten の MODULARIZE 形式)。ビルドしたものの場所や command line の組み立て方など、 コアに固有のことは runtime/core.ts の記述子だけに置きます。ゲストの入出力と、Node.js・ブラウザのランタイムは、 コアが提供するファイルシステムのインターフェースだけに依存します。

コアを paludarium に移してからは、loader はパッケージの index.mjs で、その createPaludarium({ wasmUrl }) が launcher(createFileSystem、run、dispose)を返します。コアに固有のこと(コアのファイルの一覧、SHA-256 の照合、起動)は、 今も runtime/core.ts だけにあります。

  • コアの置き換えは、runtime/core.ts に記述子を足し、そのビルドしたものを置けば済みます。
  • 新しいコアも、同じ形(モジュール、ファイルシステムのインターフェース、終了コード)を備えるか、 runtime/core.ts の adapter でその形を用意する必要があります。
  • 既存のテスト一式を、新しいコアの受け入れの条件として使えます。
  • blink 自体の API に合わせてランタイムを書く:コアが変わるたびにランタイムを作り直すことになる。