1. Fondamentaux
  2. Contexte
    1. Pourquoi Wasm ?
    2. Domaines d'application aujourd'hui
    3. Présentation de l'écosystème
  3. Wasm 101
    1. Modules, pile, types simples
    2. Variables globales, mémoire linéaire
    3. Flot de contrôle
    4. Différence entre le format binaire et textuel
    5. Écriture d'un module Wasm simple
  4. Premiers pas dans le navigateur ou l'hôte
    1. Compilation d'un programme C ou Rust simple vers Wasm
    2. Visualisation de modules binaires (wabt, wasm-tools)
    3. Wasmtime comme hôte
    4. Node comme hôte
    5. JavaScript comme ĥôte
  5. TP: jeu de la vie, calculatrice
    1. écriture d'un module qui effectue la majeure partie des calculs
    2. compilation, appel depuis JS ou WasmTime
  6. Wasm aujourd'hui
  7. Évolution du langage
    1. Le comité de standardisation
    2. Interprète de référence, spécification, sémantique
    3. La vie d'un proposal
  8. Wasm 102
    1. Data
    2. Bulk memory operations, Fixed-width SIMD, multiple memories
    3. Reference, Table, Element
    4. Tail call, exception, GC, threads, memory64, JSPI, JS String builtins
  9. Interopérabilité
    1. WASI
    2. Compilation d'un script avec I/O
    3. Component Model
  10. TP: TBA
    1. qqchose d'avancé avec des appels dans les deux sens, voire entre plusieurs modules Wasm
  11. Wasm avancé
  12. Écosystème avancé
    1. État de Wasm pour différents langages: C, C++, Rust, Zig, Go, Haskell, Java, Kotlin, Dart, OCaml, Guile
    2. Comparaison des toolchains (wasm-bindgen, wasm-pack, emscripten)
    3. no_std pour l'embarqué (C, Rust et Go)
    4. Déploiement dans le cloud (cloudflare, fastly)
  13. Optimisation de Wasm avec Binaryen et wasm-opt
    1. Utilisation simple
    2. wasm-merge
    3. Différentes passes, closed-world mode
    4. wasm-metadce
  14. Sécurité
    1. Garanties du langage
    2. Test de programmes Wasm
    3. Unikernels
  15. TODO
  16. compilation vers Wasm (shadow stack? exceptions lentes?)
  17. extism