Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

WebAssembly

Baseline Large disponibilité *

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis octobre 2017.

* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.

L'objet JavaScript WebAssembly sert d'espace de noms pour toutes les fonctionnalités liées à WebAssembly.

À la différence des autres objets globaux, WebAssembly n'est pas un constructeur (ce n'est pas un objet fonction). Vous pouvez le comparer à Math, qui est également un objet espace de noms pour les constantes et fonctions mathématiques, ou à Intl, qui est l'objet espace de noms pour les constructeurs d'internationalisation et autres fonctions sensibles à la langue.

Description

L'objet WebAssembly est notamment utilisé pour :

Interfaces

WebAssembly.CompileError

Indique une erreur lors du décodage ou de la validation de WebAssembly.

WebAssembly.Global

Représente une instance de variable globale, accessible à la fois depuis JavaScript et importable/exportable entre une ou plusieurs instances de WebAssembly.Module. Cela permet le lien dynamique de plusieurs modules.

WebAssembly.Instance

Est une instance exécutable et avec état d'un WebAssembly.Module

WebAssembly.LinkError

Indique une erreur lors de l'instanciation d'un module (autre que les pièges de capture (angl.) de la fonction de démarrage).

WebAssembly.Memory

Un objet dont la propriété buffer est un objet ArrayBuffer redimensionnable qui contient les octets bruts de la mémoire accessible par une Instance WebAssembly.

WebAssembly.Module

Contient du code WebAssembly sans état qui a déjà été compilé par le navigateur et peut être efficacement partagé avec des Workers, et instancié plusieurs fois.

WebAssembly.RuntimeError

Type d'erreur qui est levé chaque fois que WebAssembly définit un piège (angl.).

WebAssembly.Table

Une structure de type tableau représentant une table WebAssembly, qui stocke des références (angl.), telles que des références de fonctions.

WebAssembly.Tag

Un objet qui représente un type d'exception WebAssembly.

WebAssembly.Exception

Un objet d'exception WebAssembly qui peut être levé, capturé et relancé à la fois à l'intérieur et à travers les frontières WebAssembly/JavaScript.

Méthodes statiques

WebAssembly.compile()

Compile un WebAssembly.Module à partir de code binaire WebAssembly, laissant l'instanciation comme une étape séparée.

WebAssembly.compileStreaming()

Compile un WebAssembly.Module directement à partir d'une source sous-jacente en flux, laissant l'instanciation comme une étape séparée.

WebAssembly.instantiate()

L'API principale pour compiler et instancier du code WebAssembly, retournant à la fois un Module et sa première Instance.

WebAssembly.instantiateStreaming()

Compile et instancie directement un module WebAssembly à partir d'une source sous-jacente en flux, retournant à la fois un Module et sa première Instance.

WebAssembly.validate()

Valide un tableau typé donné de code binaire WebAssembly, renvoyant true si les octets sont un code WebAssembly valide ou false sinon.

Exemples

Diffuser un module WebAssembly puis le compiler et l'instancier

L'exemple suivant (voir notre démonstration instantiate-streaming.html (angl.) sur GitHub, et la voir en direct (angl.) également) diffuse directement un module WebAssembly depuis une source sous-jacente, puis le compile et l'instancie, la promesse étant résolue en un ResultObject. Comme la fonction instantiateStreaming() accepte une promesse pour un objet Response, vous pouvez lui passer directement un appel à fetch(), et elle transmettra la réponse à la fonction lorsque la promesse sera résolue.

js
const importObject = {
  my_namespace: { imported_func: (arg) => console.log(arg) },
};

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

On accède ensuite à la propriété .instance du ResultObject, puis on invoque la fonction exportée qu'elle contient.

Spécifications

Spécification
WebAssembly JavaScript Interface
# webassembly-namespace

Compatibilité des navigateurs

Voir aussi