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 deWebAssembly.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'unModule
. Les objetsInstance
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 objetWebAssembly.Module
. WebAssembly.compileStreaming()
-
La fonction
WebAssembly.compileStreaming()
compile unWebAssembly.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 unModule
et sa premièreInstance
. WebAssembly.validate()
-
La fonction
WebAssembly.validate()
valide un tableau typé de code binaire WebAssembly donné. WebAssembly.Memory()
-
Un objet
WebAssembly.Memory
est unArrayBuffer
redimensionnable qui contient les octets bruts de la mémoire accédée par uneInstance
. WebAssembly.Table()
-
Un objet
WebAssembly.Table
est un tableau typé redimensionnable de valeurs opaques, comme des références de fonctions, auxquelles accède uneInstance
. 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
- WASMSobel
- Consultez notre dépôt webassembly-examples pour de nombreux autres exemples.
Spécifications
Compatibilité des navigateurs
>webassembly.api
Loading…
webassembly.BigInt-to-i64-integration
Loading…
webassembly.bulk-memory-operations
Loading…
webassembly.exception-handling
Loading…
webassembly.extended-constant-expressions
Loading…
webassembly.fixed-width-SIMD
Loading…
webassembly.garbage-collection
Loading…
webassembly.multiMemory
Loading…
webassembly.multi-value
Loading…
webassembly.mutable-globals
Loading…
webassembly.non-trapping-float-to-int-conversions
Loading…
webassembly.reference-types
Loading…
webassembly.sign-extension-operations
Loading…
webassembly.tail-calls
Loading…
webassembly.threads-and-atomics
Loading…