WASI
現在はプレビュー1と呼ばれる仕様の開発が完了
プレビュー1
POSIXとCloudABIに影響を受けている
WASIにおけるモジュールの制約
コマンドモジュール(実行用)
リアクターモジュール(インポートモジュール)
_start(エントリーポイント)のエクスポート
必要な場合はリソースのエクスポート(memory)
必要な場合はWASIモジュールのインポート
プレビュー2について
2024年1月に仕様の開発が完了
抽象度の高いAPIへの提供
ガベージコレクタ
コンポーネントモデル
POSIX
プレビュー1の課題
C言語指向のAPI
ソケットのサポートが不十分
機能ごとの仮想化が不十分
POSIX由来の APIはリソースの対象を意識しない
なので標準出力への書き込みは許可するが、ファイルへの書き込みは許可しないという制限を行う場合にランタイムに側の実装に異音してしまっていた
異なる言語で実装されたモジュールを組み合わせることが難しい
グルーコードによるデータ表現の変換をコンポーネントモデルで目指す
コンポーネントモデル
異なる言語で実装されたWasmを組み合わせて利用するためのABIの定義とインターフェースを提供するためのIDL(WIT)
従来のWasmコアモデルとはバイナリフォーマットも異なるので互換性がない
→メモリ上のデータの扱いなど言語ごとに異なるデータ構造の差異を吸収
プレビュー2の課題
非同期処理のサポート