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()
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()
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 aus dem WebAssembly Binärcode, wodurch die Instanziierung als separater Schritt durchgeführt werden kann.
WebAssembly.compileStreaming()
Kompiliert ein WebAssembly.Module direkt aus einer Streamingquelle, wodurch die Instanziierung als separater Schritt durchgeführt werden kann.
WebAssembly.validate()
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()
Erzeugt ein neues WebAssembly Global Objekt.
WebAssembly.Module()
Erzeugt ein neues WebAssembly Module Objekt.
WebAssembly.Instance()
Erzeugt ein neues WebAssembly Instance Objekt.
WebAssembly.Memory()
Erzeugt ein neues WebAssembly Memory Objekt.
WebAssembly.Table()
Erzeugt ein neues WebAssembly Table Objekt.
WebAssembly.CompileError()
Erzeugt ein neues WebAssembly CompileError Objekt.
WebAssembly.LinkError()
Erzeugt ein neues WebAssembly LinkError Objekt.
WebAssembly.RuntimeError()
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() 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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid WebviewChrome für AndroidFirefox für AndroidOpera für AndroidSafari auf iOSSamsung InternetNode.js
WebAssemblyChrome Vollständige Unterstützung 57Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
IE Keine Unterstützung NeinOpera Vollständige Unterstützung 44Safari Vollständige Unterstützung 11WebView Android Vollständige Unterstützung 57Chrome Android Vollständige Unterstützung 57Firefox Android Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android Vollständige Unterstützung JaSafari iOS Vollständige Unterstützung 11Samsung Internet Android Vollständige Unterstützung 7.0nodejs Vollständige Unterstützung 8.0.0
CompileErrorChrome Vollständige Unterstützung 57Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
IE Keine Unterstützung NeinOpera Vollständige Unterstützung 44Safari Vollständige Unterstützung 11WebView Android Vollständige Unterstützung 57Chrome Android Vollständige Unterstützung 57Firefox Android Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS Vollständige Unterstützung 11Samsung Internet Android Vollständige Unterstützung 7.0nodejs Vollständige Unterstützung 8.0.0
GlobalChrome Vollständige Unterstützung 69Edge Keine Unterstützung NeinFirefox Vollständige Unterstützung 62IE Keine Unterstützung NeinOpera Keine Unterstützung NeinSafari Keine Unterstützung NeinWebView Android Vollständige Unterstützung 69Chrome Android Vollständige Unterstützung 69Firefox Android Vollständige Unterstützung 62Opera Android Keine Unterstützung NeinSafari iOS Keine Unterstützung NeinSamsung Internet Android Vollständige Unterstützung 10.0nodejs Keine Unterstützung Nein
InstanceChrome Vollständige Unterstützung 57Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
IE Keine Unterstützung NeinOpera Vollständige Unterstützung 44Safari Vollständige Unterstützung 11WebView Android Vollständige Unterstützung 57Chrome Android Vollständige Unterstützung 57Firefox Android Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS Vollständige Unterstützung 11Samsung Internet Android Vollständige Unterstützung 7.0nodejs Vollständige Unterstützung 8.0.0
LinkErrorChrome Vollständige Unterstützung 57Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
IE Keine Unterstützung NeinOpera Vollständige Unterstützung 44Safari Vollständige Unterstützung 11WebView Android Vollständige Unterstützung 57Chrome Android Vollständige Unterstützung 57Firefox Android Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS Vollständige Unterstützung 11Samsung Internet Android Vollständige Unterstützung 7.0nodejs Vollständige Unterstützung 8.0.0
MemoryChrome Vollständige Unterstützung 57Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
IE Keine Unterstützung NeinOpera Vollständige Unterstützung 44Safari Vollständige Unterstützung 11WebView Android Vollständige Unterstützung 57Chrome Android Vollständige Unterstützung 57Firefox Android Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS Vollständige Unterstützung 11Samsung Internet Android Vollständige Unterstützung 7.0nodejs Vollständige Unterstützung 8.0.0
ModuleChrome Vollständige Unterstützung 57Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
IE Keine Unterstützung NeinOpera Vollständige Unterstützung 44Safari Vollständige Unterstützung 11WebView Android Vollständige Unterstützung 57Chrome Android Vollständige Unterstützung 57Firefox Android Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS Vollständige Unterstützung 11Samsung Internet Android Vollständige Unterstützung 7.0nodejs Vollständige Unterstützung 8.0.0
RuntimeErrorChrome Vollständige Unterstützung 57Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
IE Keine Unterstützung NeinOpera Vollständige Unterstützung 44Safari Vollständige Unterstützung 11WebView Android Vollständige Unterstützung 57Chrome Android Vollständige Unterstützung 57Firefox Android Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS Vollständige Unterstützung 11Samsung Internet Android Vollständige Unterstützung 7.0nodejs Vollständige Unterstützung 8.0.0
TableChrome Vollständige Unterstützung 57Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
IE Keine Unterstützung NeinOpera Vollständige Unterstützung 44Safari Vollständige Unterstützung 11WebView Android Vollständige Unterstützung 57Chrome Android Vollständige Unterstützung 57Firefox Android Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS Vollständige Unterstützung 11Samsung Internet Android Vollständige Unterstützung 7.0nodejs Vollständige Unterstützung 8.0.0
compileChrome Vollständige Unterstützung 57Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
IE Keine Unterstützung NeinOpera Vollständige Unterstützung 44Safari Vollständige Unterstützung 11WebView Android Vollständige Unterstützung 57Chrome Android Vollständige Unterstützung 57Firefox Android Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android Vollständige Unterstützung 43Safari iOS Vollständige Unterstützung 11Samsung Internet Android Vollständige Unterstützung 7.0nodejs Vollständige Unterstützung 8.0.0
compileStreamingChrome Vollständige Unterstützung 61Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 58IE Keine Unterstützung NeinOpera Vollständige Unterstützung 47Safari Keine Unterstützung NeinWebView Android Vollständige Unterstützung 61Chrome Android Vollständige Unterstützung 61Firefox Android Vollständige Unterstützung 58Opera Android ? Safari iOS Keine Unterstützung NeinSamsung Internet Android Vollständige Unterstützung 8.0nodejs Keine Unterstützung Nein
instantiateChrome Vollständige Unterstützung 57Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
IE Keine Unterstützung NeinOpera Vollständige Unterstützung 44Safari Vollständige Unterstützung 11WebView Android Vollständige Unterstützung 57Chrome Android Vollständige Unterstützung 57Firefox Android Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS Vollständige Unterstützung 11Samsung Internet Android Vollständige Unterstützung 7.0nodejs Vollständige Unterstützung 8.0.0
instantiateStreamingChrome Vollständige Unterstützung 61Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 58IE Keine Unterstützung NeinOpera Vollständige Unterstützung 47Safari Keine Unterstützung NeinWebView Android Vollständige Unterstützung 61Chrome Android Vollständige Unterstützung 61Firefox Android Vollständige Unterstützung 58Opera Android ? Safari iOS Keine Unterstützung NeinSamsung Internet Android Vollständige Unterstützung 8.0nodejs Keine Unterstützung Nein
validateChrome Vollständige Unterstützung 57Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
IE Keine Unterstützung NeinOpera Vollständige Unterstützung 44Safari Vollständige Unterstützung 11WebView Android Vollständige Unterstützung 57Chrome Android Vollständige Unterstützung 57Firefox Android Vollständige Unterstützung 52
Hinweise
Vollständige Unterstützung 52
Hinweise
Hinweise Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS Vollständige Unterstützung 11Samsung Internet Android Vollständige Unterstützung 7.0nodejs Vollständige Unterstützung 8.0.0

Legende

Vollständige Unterstützung  
Vollständige Unterstützung
Keine Unterstützung  
Keine Unterstützung
Kompatibilität unbekannt  
Kompatibilität unbekannt
Siehe Implementierungshinweise.
Siehe Implementierungshinweise.

Siehe auch