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