Introduction à WASM
- À quelles problématiques répond WebAssembly ?
- Historique de WASM.
- Architecture.
- Portabilité, sécurité, performance.
- Organisation de la spécification.
- Documentation.
- WASI, Bytecode Alliance.
- Structure d'un module.
Travaux pratiques
Écriture de modules simples en WASM à l'aide de WAT. Compilation et exécution avec wat2wasm et node.
Le langage textuel WAT
- Description d'un environnement de développement en WAT.
- Extensions Visual Studio Code.
- Les différentes déclarations d'un module.
- Les commentaires, les S-expressions.
- Les fonctions et la pile d'instruction.
- Importer/exporter une fonction ou autre artefact.
- Les objets globaux.
- La mémoire linéaire.
- Les tables de pointeurs.
- Les différentes instructions : boucle, conditions, opérations, trap.
- Fonction de démarrage "start".
- L'interface JavaScript pour utiliser un module WASM.
Travaux pratiques
Écriture et compilation d'un module en WAT offrant quelques fonctions mathématiques de base (factorielle, Fibonacci, etc.). Exécution du fichier dans Node et dans un navigateur.
Runtimes WASM
- Prérequis d'un runtime.
- Liste des runtimes.
- Description de WASI.
- Installation de runtime.
- Exécution de programmes WASM avec des runtimes.
Travaux pratiques
Compilation en WASM d'un programme simple écrit en Rust et exécution sur plusieurs runtimes (wasm3, wasmtime, etc.)
AssemblyScript
- Installation du module Node AssemblyScript.
- Initialisation d'un projet avec asinit.
- Garbage collector et mémoire.
- Programmation avec des objets.
- Intégration d'une librairie WASM fabriquée en AssemblyScript.
Travaux pratiques
Écriture d'un module WASM en AssemblyScript calculant les couleurs des points d'une fractale de Mandelbrot et intégration de cette librairie dans un front end visualisant la fractale.
L'outil Emscripten
- Les langages pouvant être portés en WASM.
- Présentation générale de Emscripten.
- Historique.
- Installation officielle.
- Installation sous Debian/Ubuntu avec apt.
- Le compilateur emcc.
- Le fichier JavaScript d'enveloppe.
- Les options de compilation.
- Les stratégies d'appels depuis JavaScript (ccall, cwrap, etc.).
Travaux pratiques
Écrire un programme simple en C, le compiler en WASM et l'utiliser avec Node et dans un navigateur.
Portage de librairie
- Compiler et configurer avec Emscripten et Autoconf.
- Compiler et configurer avec Emmake et Emconfigure.
- Interaction avec les makefiles.
- Option de compilations MODULARIZE, EXPORTED_FUNCTIONS, EXPORTED_RUNTIME_METHODS.
- Le système de fichier virtuel.
- Les variables d'environnement.