WebAssembly

Baseline 2023

Newly available

Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Expérimental: 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.

WebAssembly est un nouveau type de code qui peut être exécuté dans un navigateur web moderne. C'est un langage bas niveau, semblable à l'assembleur permettant d'atteindre des performances proches des applications natives (par exemple écrites en C/C++) tout en fonctionnant sur le Web. WebAssembly est conçu pour fonctionner en lien avec JavaScript.

En résumé

WebAssembly représente une avancée fondamentale de la plateforme web. Il permet d'exécuter du code (éventuellement écrit depuis différents langages) sur le Web avec des performances similaires aux applications natives.

WebAssembly est conçu pour être utilisé de pair avec JavaScript. Grâce à l'API JavaScript WebAssembly, on peut charger des modules WebAssembly au sein d'une application JavaScript et partager des fonctionnalités entre les deux. Cela permet de tirer parti des performances de WebAssembly et de la flexibilité de JavaScript, même si on ne sait pas écrire du code WebAssembly.

WebAssembly est conçu comme un standard web par le groupe communautaire du W3C pour WebAssembly auquel participe les différents éditeurs de navigateur.

Guides

Les concepts de WebAssembly

Découvrez les concepts clés de WebAssembly : ce que c'est, son utilité, l'intégration dans le Web et comment l'utiliser.

Compiler du code C/C++ en WebAssembly

Du code écrit en C/C++ peut être compilé en WebAssembly grâce à des outils tels que Emscripten. Nous voyons ici comment cela fonctionne.

Charger et exécuter du code WebAssembly

Dans cet article, on aborde comment récupérer, compiler et instancier en associant l'API WebAssembly JavaScript avec les API Fetch ou XHR.

Mettre en cache des modules WebAssembly compilés

La mise en cache de grands modules WebAssembly côté client permet d'améliorer les performances au démarrage. Dans cet article, on voit comment utiliser IndexedDB pour cela.

Utiliser l'API JavaScript de WebAssembly

Une fois le module WebAssembly chargé, on souhaitera l'utiliser… Dans cet article, on verra comment utiliser WebAssembly grâce à l'API JavaScript associée.

Les fonctions WebAssembly exportées

Les fonctions WebAssembly exportées sont les représentations JavaScript des fonctions WebAssembly qui permettent d'utiliser du code WebAssembly depuis un script JavaScript. Cet article décrit leur fonctionnement.

Comprendre le format texte WebAssembly (en-US)

Cet article explique la composition du format texte de WebAssembly. Il s'agit d'une représentation bas-niveau du module .wasm tel que montré dans les outils de développement du navigateur.

Convertir un fichier texte WebAssembly en wasm (en-US)

Cet article détaille comment convertir un module WebAssembly rédigé dans un format texte en un fichier binaire .wasm.

Référence de l'API JavaScript

WebAssembly

Cet objet représente l'espace de nom encapsulant les fonctionnalités relatives à WebAssembly.

WebAssembly.Module

Un objet WebAssembly.Module contient du code WebAssembly, sans état, qui a déjà été compilé par le navigateur et qui peut être partagé dans les web workers, mis en cache dans IndexedDB et instancié à plusieurs reprises.

WebAssembly.Instance

Un objet WebAssembly.Instance est une instance exécutable (disposant d'un état) d'un Module. Les objets Instance contiennent toutes les fonctions WebAssembly exportées qui permettent d'utiliser du code WebAssembly via du code JavaScript.

WebAssembly.instantiate()

La fonction WebAssembly.instantiate() représente l'API principale pour compiler et instancier le code WebAssembly. Cette méthode renvoie un Module ainsi que sa première Instance.

WebAssembly.Memory()

Un objet WebAssembly.Memory est un tableau ArrayBuffer redimensionnable qui contient les octets de mémoire brute auxquels on peut accéder via une Instance.

WebAssembly.Table()

Un objet WebAssembly.Table est un tableau typé contenant des valeurs opaques et qui peut être redimensionné. On peut accéder aux valeurs via un objet Instance.

WebAssembly.CompileError()

Crée un nouvel objet WebAssembly CompileError.

WebAssembly.LinkError()

Crée un nouvel objet WebAssembly LinkError.

WebAssembly.RuntimeError()

Crée un nouvel objet WebAssembly RuntimeError.

Exemples

Spécifications

Specification
WebAssembly JavaScript Interface
# webassembly-namespace
Unknown specification
Unknown specification
Unknown specification
Unknown specification
WebAssembly Core: Garbage Collection
# garbage-collection①
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification

Compatibilité des navigateurs

webassembly.api

BCD tables only load in the browser

webassembly.BigInt-to-i64-integration

BCD tables only load in the browser

webassembly.bulk-memory-operations

BCD tables only load in the browser

webassembly.exception-handling

BCD tables only load in the browser

webassembly.extended-constant-expressions

BCD tables only load in the browser

webassembly.fixed-width-SIMD

BCD tables only load in the browser

webassembly.garbage-collection

BCD tables only load in the browser

webassembly.multiMemory

BCD tables only load in the browser

webassembly.multi-value

BCD tables only load in the browser

webassembly.mutable-globals

BCD tables only load in the browser

webassembly.non-trapping-float-to-int-conversions

BCD tables only load in the browser

webassembly.reference-types

BCD tables only load in the browser

webassembly.sign-extension-operations

BCD tables only load in the browser

webassembly.tail-calls

BCD tables only load in the browser

webassembly.threads-and-atomics

BCD tables only load in the browser

Voir aussi