TL;DR

WebAssembly Module を実行できる状態にしたもの。

仕組み

MDN によると、JavaScript の WebAssembly.Instance は、ステートフルで実行できる WebAssembly.Module のインスタンスである。JavaScript から WebAssembly のコードを呼び出すための、エクスポートされた関数をすべて含む。exports プロパティは、エクスポートされた関数をメンバーに持つ読み取り専用のオブジェクトを返す。

処理はサンドボックスの中で行われるので、ブラウザが持つリソースにはアクセスできない。たとえば JavaScript の変数にはアクセスできない。

例

MDN は、インスタンスを非同期で取得することを勧めている。JavaScript では WebAssembly.instantiateStreaming でモジュールをコンパイルし、インスタンス化する。戻り値の instance(WebAssembly.Instance)の exports から、export section で宣言された関数を呼べる。

const { module, instance } = await WebAssembly.instantiateStreaming(fetch("add.wasm"))
const four = instance.exports.add_two(2)

関連

出典