Cette fonction est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

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.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.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.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

Dans cet exemple, on récupère le code WebAssembly grâce à la fonction fetch() puis on compile et on instancie le module grâce à la fonction WebAssembly.instantiate(). Lors de cette étape, on importe une fonction JavaScript dans le module WebAssembly. La promesse obtenue est résolue en un objet qui contient le Module compilé et un objet Instance. On appelle ensuite une fonction WebAssembly exportée exposée via l'instance.

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

fetch('simple.wasm').then(response =>
  response.arrayBuffer()
).then(bytes =>
  WebAssembly.instantiate(bytes, importObject)
).then(result =>
  result.instance.exports.exported_func()
);

Note : Voir le fichier index.html disponible sur GitHub (ainsi que la démonstration associée) pour un exemple qui utilise la fonction utilitaire fetchAndInstantiate().

Spécifications

Spécification État Commentaires
Web Assembly JavaScript API
La définition de 'WebAssembly' dans cette spécification.
Projet Brouillon de définition initiale.

Compatibilité des navigateurs

FonctionnalitéChromeEdgeFirefoxInternet ExplorerOperaSafari
Support simple5716522 Non4411
CompileError5716522 Non4411
Instance5716522 Non4411
LinkError5716522 Non4411
Memory5716522 Non4411
Module5716522 Non4411
RuntimeError5716522 Non4411
Table5716522 Non4411
compile5716522 Non4411
instantiate5716522 Non4411
validate5716522 Non4411
FonctionnalitéAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Support simple5757 (Oui)1522 Non ?11
CompileError5757 (Oui)1522 Non ?11
Instance5757 (Oui)1522 Non ?11
LinkError5757 (Oui)1522 Non ?11
Memory5757 (Oui)1522 Non ?11
Module5757 (Oui)1522 Non ?11
RuntimeError5757 (Oui)1522 Non ?11
Table5757 (Oui)1522 Non ?11
compile5757 (Oui)1522 Non ?11
instantiate5757 (Oui)1522 Non ?11
validate5757 (Oui)1522 Non ?11

1. , this feature is behind the Experimental JavaScript Features preference.

2. Disabled in the Firefox 52 Extended Support Release (ESR).

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,