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

WebAssembly est un type de code pouvant être exécuté dans les navigateurs web modernes. C'est un langage bas niveau, proche de l'assembleur, avec un format binaire compact qui s'exécute à des performances proches du natif et fournit aux langages comme C/C++, C# et Rust une cible de compilation pour qu'ils puissent fonctionner sur le web. Il est également conçu pour fonctionner aux côtés de JavaScript, permettant aux deux de collaborer.

WebAssembly est conçu pour compléter et fonctionner avec JavaScript — en utilisant les API JavaScript de WebAssembly, vous pouvez charger des modules WebAssembly dans une application JavaScript et partager des fonctionnalités entre les deux. Cela vous permet de profiter des performances et de la puissance de WebAssembly ainsi que de l'expressivité et de la flexibilité de JavaScript dans la même application, même si vous ne savez pas écrire de code WebAssembly.

WebAssembly a de grandes implications pour la plateforme web, non seulement parce qu'il permet à du code écrit dans plusieurs langages de s'exécuter sur le web à une vitesse proche du natif, mais aussi parce qu'il rend possible l'exécution sur le web d'applications clientes qui ne pouvaient pas l'être auparavant.

Encore mieux, il est développé comme un standard du web via le groupe de travail W3C WebAssembly (angl.) et le groupe communautaire (angl.) avec la participation active de tous les principaux éditeurs de navigateurs.

Guides

Les guides WebAssembly couvrent des sujets comme les concepts de haut niveau, la compilation depuis différents langages, la représentation textuelle du format binaire Wasm et la façon d'exécuter WebAssembly.

Concepts de WebAssembly

Commencez par lire les concepts de haut niveau derrière WebAssembly — ce que c'est, pourquoi c'est utile, comment il s'intègre à la plateforme web (et au-delà), et comment l'utiliser.

Compiler un nouveau module C/C++ vers WebAssembly

Lorsque vous avez écrit du code en C/C++, vous pouvez le compiler en Wasm à l'aide d'un outil comme Emscripten. Voyons comment cela fonctionne.

Compiler un module C existant vers WebAssembly

Un cas d'usage central de WebAssembly est de prendre l'écosystème existant de bibliothèques C et de permettre aux développeur·euse·s de les utiliser sur le web.

Compiler depuis Rust vers WebAssembly

Si vous avez écrit du code Rust, vous pouvez le compiler en WebAssembly ! Ce tutoriel vous guide à travers tout ce qu'il faut savoir pour compiler un projet Rust en Wasm et l'utiliser dans une application web existante.

Charger et exécuter du code WebAssembly

Une fois que vous avez un module Wasm, cet article explique comment le récupérer, le compiler et l'instancier, en combinant l'API WebAssembly JavaScript avec les API Fetch ou XHR.

Utiliser l'API JavaScript WebAssembly

Une fois le module Wasm chargé, vous voudrez l'utiliser. Cet article montre comment utiliser WebAssembly via l'API JavaScript WebAssembly.

Fonctions WebAssembly exportées

Les fonctions WebAssembly exportées sont les reflets JavaScript des fonctions WebAssembly, permettant d'appeler du code WebAssembly depuis JavaScript. Cet article explique ce que c'est.

Comprendre le format texte WebAssembly

Cet article explique le format texte Wasm. Il s'agit de la représentation textuelle bas niveau d'un module Wasm affichée dans les outils de développement du navigateur lors du débogage.

Convertir le format texte WebAssembly en Wasm

Ce guide explique comment convertir un module WebAssembly écrit en format texte en un binaire Wasm.

Référence API

Référence des instructions WebAssembly

Documentation de référence avec exemples interactifs pour l'ensemble des opérateurs WebAssembly.

Interface JavaScript WebAssembly

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

WebAssembly.Global()

Un objet WebAssembly.Global représente une instance de variable globale, accessible depuis JavaScript et importable/exportable entre une ou plusieurs instances de WebAssembly.Module. Cela permet la liaison dynamique de plusieurs modules.

WebAssembly.Module()

Un objet WebAssembly.Module contient du code WebAssembly sans état déjà compilé par le navigateur et pouvant être partagé efficacement avec des Workers, et instancié plusieurs fois.

WebAssembly.Instance()

Un objet WebAssembly.Instance est une instance exécutable et avec état d'un Module. Les objets Instance contiennent toutes les fonctions WebAssembly exportées permettant d'appeler du code WebAssembly depuis JavaScript.

WebAssembly.compile()

La fonction WebAssembly.compile() compile du code binaire WebAssembly en un objet WebAssembly.Module.

WebAssembly.compileStreaming()

La fonction WebAssembly.compileStreaming() compile un WebAssembly.Module directement à partir d'une source diffusée en continu.

WebAssembly.instantiate()

La fonction WebAssembly.instantiate() permet de compiler et d'instancier du code WebAssembly.

WebAssembly.instantiateStreaming()

La fonction WebAssembly.instantiateStreaming() est l'API principale pour compiler et instancier du code WebAssembly, renvoyant à la fois un Module et sa première Instance.

WebAssembly.validate()

La fonction WebAssembly.validate() valide un tableau typé de code binaire WebAssembly donné.

WebAssembly.Memory()

Un objet WebAssembly.Memory est un ArrayBuffer redimensionnable qui contient les octets bruts de la mémoire accédée par une Instance.

WebAssembly.Table()

Un objet WebAssembly.Table est un tableau typé redimensionnable de valeurs opaques, comme des références de fonctions, auxquelles accède une Instance.

WebAssembly.Tag()

L'objet WebAssembly.Tag définit un type d'exception WebAssembly pouvant être levée vers ou depuis du code WebAssembly.

WebAssembly.Exception()

L'objet WebAssembly.Exception représente une exception d'exécution levée de WebAssembly vers JavaScript, ou de JavaScript vers un gestionnaire d'exceptions WebAssembly.

WebAssembly.CompileError()

Crée un nouvel objet CompileError WebAssembly.

WebAssembly.LinkError()

Crée un nouvel objet LinkError WebAssembly.

WebAssembly.RuntimeError()

Crée un nouvel objet RuntimeError WebAssembly.

Projets d'exemple

Spécifications

Specification
WebAssembly JavaScript Interface
# webassembly-namespace
WebAssembly JavaScript Interface
# ref-for-syntax-numtype①⓪
WebAssembly JavaScript Interface
# dom-globaldescriptor-mutable
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
WebAssembly Core: Garbage Collection
# garbage-collection①

Compatibilité des navigateurs

webassembly.api

webassembly.BigInt-to-i64-integration

webassembly.bulk-memory-operations

webassembly.exception-handling

webassembly.extended-constant-expressions

webassembly.fixed-width-SIMD

webassembly.garbage-collection

webassembly.multiMemory

webassembly.multi-value

webassembly.mutable-globals

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

webassembly.reference-types

webassembly.sign-extension-operations

webassembly.tail-calls

webassembly.threads-and-atomics

Voir aussi