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 に合わせてランタイムを書く:コアが変わるたびにランタイムを作り直すことになる。