WebAssembly

Das WebAssembly JavaScript Objekt existiert als Namensraum für alle WebAssembly-bezogenen Funktionalitäten.

Anders als die meisten anderen globalen Objekte, ist WebAssembly kein Konstruktor (es ist kein Funktionsobjekt). Es kann mit Math verglichen werden, welches ebenfalls einen Namensraum für mathematische Konstanten und Funktionen bildet. Oder mit Intl, welches den Namensraum für die Internationalisierunges API mit sprachabhängigen Funktionen bildet. 

Beschreibung

Die primäre Verwendung des WebAssembly Objekts sind:

Methoden

WebAssembly.instantiate() (en-US)
Die primäre API für das Kompilieren und Instanziieren des WebAssembly Codes. Der Rückgabewert als Promise ergibt ein Module als auch die erste Instance.
WebAssembly.instantiateStreaming() (en-US)
Kompiliert und instanziiert ein WebAssembly-Modul direkt aus einer Streamingquelle, mit dem Rückgabewert als Promise ergibt sich ein Module als auch die erste Instance.
WebAssembly.compile()
Kompiliert ein WebAssembly.Module (en-US) aus dem WebAssembly Binärcode, wodurch die Instanziierung als separater Schritt durchgeführt werden kann.
WebAssembly.compileStreaming()
Kompiliert ein WebAssembly.Module (en-US) direkt aus einer Streamingquelle, wodurch die Instanziierung als separater Schritt durchgeführt werden kann.
WebAssembly.validate() (en-US)
Validiert das gegebene, typisierte Array eines WebAssembly Binärcodes. Gibt zurück, ob die Bytes validen WebAssembly Code darstellen (true) oder nicht (false).

Konstruktoren

WebAssembly.Global() (en-US)
Erzeugt ein neues WebAssembly Global Objekt.
WebAssembly.Module() (en-US)
Erzeugt ein neues WebAssembly Module Objekt.
WebAssembly.Instance() (en-US)
Erzeugt ein neues WebAssembly Instance Objekt.
WebAssembly.Memory() (en-US)
Erzeugt ein neues WebAssembly Memory Objekt.
WebAssembly.Table() (en-US)
Erzeugt ein neues WebAssembly Table Objekt.
WebAssembly.CompileError() (en-US)
Erzeugt ein neues WebAssembly CompileError Objekt.
WebAssembly.LinkError() (en-US)
Erzeugt ein neues WebAssembly LinkError Objekt.
WebAssembly.RuntimeError() (en-US)
Erzeugt ein neues WebAssembly RuntimeError Objekt.

Beispiele

Das folgende Beispiel (siehe instantiate-streaming.html Demo auf GitHub, siehe auch live) streamt ein .wasm Modul direkt aus einer zugrunde liegenden Quelle, um es dann zu kompilieren und zu instanziieren. Das Promise erfüllt sich mit einem ResultObject. Weil die instantiateStreaming() Funktion ein Promise für ein Response akzeptiert, kann ihr ein WindowOrWorkerGlobalScope.fetch() (en-US) direkt übergeben werden, welches die Antwort an die Funktion weitergibt, sobald das Promise sich erfüllt.

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

WebAssembly.instantiateStreaming(fetch('simple.wasm'), importObject)
.then(obj => obj.instance.exports.exported_func());

Auf die ResultObject Instanz wird damit zugegriffen und die beinhaltete, exportierte Funktion aufgerufen.

Spezifikationen

Specification Status Comment
WebAssembly JavaScript Interface
Die Definition von 'WebAssembly' in dieser Spezifikation.
Arbeitsentwurf Initial draft definition.

Browserkompatibilität

BCD tables only load in the browser

Siehe auch