WebAssembly.compileStreaming()

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.

* Some parts of this feature may have varying levels of support.

WebAssembly.compileStreaming() 関数は WebAssembly.Module を直接、基礎的なソースのストリームからコンパイルします。この関数はモジュールをインスタンス化する前にコンパイルする必要がある場合に役立ちます(そうでない場合は、WebAssembly.instantiateStreaming() 関数を使用してください)。

メモ: 厳格なコンテンツセキュリティポリシー (CSP) のあるウェブページでは、 WebAssembly のコンパイルやモジュールの実行がブロックされることがあります。 WebAssembly のコンパイルと実行を許可することについての詳しい情報は、 CSP の script-src を参照してください。

構文

js
WebAssembly.compileStreaming(source)

引数

source

ストリーム、コンパイルする .wasm モジュールのソースコードを表す Response オブジェクト、またはそれで履行されるプロミスです。

返値

Promise で、コンパイルされたモジュールを表す WebAssembly.Module に解決します。

例外

  • sourceResponse でも Response に解決する Promise でもなかった場合、プロミスは TypeError で拒否されます。
  • コンパイルに失敗した場合、プロミスは WebAssembly.CompileError で拒否されます。
  • sourcePromise が拒否された場合、プロミスはエラーで拒否されます。
  • sourceResult にエラーがあった場合(MIME タイプが不正であるなど)、プロミスはエラーで拒否されます。

ストリーミングのコンパイル

次の例 (Github上のデモ compile-streaming.html と、動作例を参照してください) では、ソースから直接 .wasm モジュールをストリームして、 WebAssembly.Module オブジェクトにコンパイルしています。compileStreaming() 関数は Response オブジェクトを渡すプロミスを受け取るので、直接 fetch() の呼び出し結果を渡すことができます。

js
const importObject = { imports: { imported_func: (arg) => console.log(arg) } };

WebAssembly.compileStreaming(fetch("simple.wasm"))
  .then((module) => WebAssembly.instantiate(module, importObject))
  .then((instance) => instance.exports.exported_func());

結果として受け取ったモジュールインスタンスはその後 WebAssembly.instantiate() を使用してインスタンス化され、エクスポートされた関数が実行されます。

仕様書

Specification
WebAssembly Web API
# dom-webassembly-compilestreaming

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
compileStreaming() static method
compileOptions parameter

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

関連情報