WebAssembly

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.

L'objet JavaScript WebAssembly est un objet global qui agit comme un espace de noms (namespace) pour les différentes fonctionnalités JavaScript relatives à WebAssembly.

À la différence des autres objets globaux, WebAssembly n'est pas un constructeur (au même titre que Math qui agit comme un espace de noms pour les constantes et fonctions mathématiques ou comme Intl qui centralise les constructeurs et les opérations relatives à l'internationalisation).

Description

L'objet WebAssembly est notamment utilisé pour :

Méthodes

WebAssembly.instantiate()

La méthode qu'on utilisera la plupart du temps pour compiler et instancier du code WebAssembly, elle renvoie une promesse qui est résolue en une Instance ou en une Instance et un Module.

WebAssembly.instantiateStreaming()

Cette méthode permet de compiler et d'instancier un module WebAssembly à partir d'un flux source (streamed source). Elle renvoie à la fois un objet Module et sa première Instance.

WebAssembly.compile()

Cette méthode permet de compiler un WebAssembly.Module à partir de bytecode WebAssembly, l'instanciation doit alors être effectuée dans une autre étape.

WebAssembly.compileStreaming()

Cette méthode permet de compiler un module WebAssembly.Module à partir d'un flux source (streamed source). L'instanciation devra alors être réalisée avec une autre étape.

WebAssembly.validate()

Cette méthode permet de valider un tableau typé censé contenir du bytecode WebAssembly : elle renvoie true si les octets forment un code WebAssembly valide ou false sinon.

Constructeurs

WebAssembly.Global()

Ce constructeur permet de créer un nouvel objet WebAssembly Global.

WebAssembly.Module()

Ce constructeur permet de créer un objet WebAssembly Module.

WebAssembly.Instance()

Ce constructeur permet de créer un objet WebAssembly Instance.

WebAssembly.Memory()

Ce constructeur permet de créer un objet WebAssembly Memory.

WebAssembly.Table()

Ce constructeur permet de créer un objet WebAssembly Table.

WebAssembly.CompileError()

Ce constructeur permet de créer un objet WebAssembly CompileError.

WebAssembly.LinkError()

Ce constructeur permet de créer un objet WebAssembly LinkError.

WebAssembly.RuntimeError()

Ce constructeur permet de créer un objet WebAssembly RuntimeError.

Exemples

L'exemple suivant (cf. le fichier instantiate-streaming.html sur GitHub et le résultat obtenu) permet de récupérer le module WebAssembly via un flux depuis une source, de le compiler, puis de l'instancier. La promesse est résolue avec un objet ResultObject. La méthode instantiateStreaming() accepte une promesse pour l'argument Response, on peut lui passer directement un appel à fetch() qui passera ensuite la réponse à la fonction lors de la complétion de la promesse.

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

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

On accède alors à la propriété de l'instance ResultObject puis on appelle la fonction exportée.

Spécifications

Specification
WebAssembly JavaScript Interface
# webassembly-namespace

Compatibilité des navigateurs

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
api
CompileError
CompileError() constructor
Exception
Exception() constructor
options.traceStack parameter
Non-standard
Exception.getArg
Exception.is
Stack trace
Non-standard
Global
Global() constructor
Global.value
Global.valueOf
Instance
Instance() constructor
Instance.exports
LinkError
LinkError() constructor
Memory
Memory() constructor
shared flag
Memory.buffer
Memory.grow
Module
Module() constructor
compileOptions parameter
customSections() static method
exports() static method
imports() static method
RuntimeError
RuntimeError() constructor
Table
Table() constructor
Table.get
Table.grow
Table.length
Table.set
Tag
Tag() constructor
Tag.type
compileStreaming() static method
compileOptions parameter
compile() static method
compileOptions parameter
instantiateStreaming() static method
compileOptions parameter
instantiate() static method
compileOptions parameter
validate() static method
compileOptions parameter

Legend

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

Full support
Full support
No support
No support
Non-standard. Check cross-browser support before using.
See implementation notes.
User must explicitly enable this feature.

Voir aussi