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 :
- Charger du code WebAssembly grâce à la fonction
WebAssembly.instantiate(). - Créer de nouvelles instances de mémoire et de tableau avec les constructeurs
WebAssembly.Memory()/WebAssembly.Table(). - Fournir des outils pour gérer les erreurs survenant dans WebAssembly avec les constructeurs
WebAssembly.CompileError()/WebAssembly.LinkError()/WebAssembly.RuntimeError().
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é
bufferest un objetArrayBufferredimensionnable qui contient les octets bruts de la mémoire accessible par uneInstanceWebAssembly. 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.Moduledirectement à 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
Moduleet sa premièreInstance. WebAssembly.instantiateStreaming()-
Compile et instancie directement un module WebAssembly à partir d'une source sous-jacente en flux, retournant à la fois un
Moduleet sa premièreInstance. WebAssembly.validate()-
Valide un tableau typé donné de code binaire WebAssembly, renvoyant
truesi les octets sont un code WebAssembly valide oufalsesinon.
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.
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 |