This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The WebAssembly.compileStreaming()
function compiles a WebAssembly.Module
directly from a streamed underlying source. This function is useful if it is necessary to a compile a module before it can be instantiated (otherwise, the WebAssembly.instantiateStreaming()
function should be used).
Syntax
Promise<WebAssembly.Module> WebAssembly.compileStreaming(source);
Parameters
- source
- A
Response
object or a promise that will fulfill with one, representing the underlying source of a .wasm module you want to stream and compile.
Return value
A Promise
that resolves to a WebAssembly.Module
object representing the compiled module.
Exceptions
- If
bufferSource
is not a typed array, aTypeError
is thrown. - If compilation fails, the promise rejects with a
WebAssembly.CompileError
.
Examples
The following example (see our compile-streaming.html demo on GitHub, and view it live also) directly streams a .wasm module from an underlying source then compiles it to a WebAssembly.Module
object. Because the compileStreaming()
function accepts a promise for a Response
object, you can directly pass it a WindowOrWorkerGlobalScope.fetch()
call, and it will pass the response into the function when it fulfills.
var 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());
The resulting module instance is then instantiated using WebAssembly.instantiate()
, and the exported function invoked.
Specifications
Specification | Status | Comment |
---|---|---|
WebAssembly features for web embedding The definition of 'compileStreaming()' in that specification. |
Draft | Initial draft definition. |
Browser compatibility
Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | 61 | No | 58 | No | 47 | ? |
Feature | Android webview | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic support | 61 | 61 | No | 58 | No | ? | ? |