Développement

Sortie de Wasm 3.0: zoom sur ce standard d’exécution de code multiplateforme

La publication récente de WebAssembly 3.0 offre l’occasion de faire le point sur ce standard en plein essor, conçu à l’origine pour exécuter à haute performance du code compilé dans les navigateurs, mais qui s’étend désormais aux environnements cloud, edge et serverless.

(Source: Nemuel Sereti / pexels.com)
(Source: Nemuel Sereti / pexels.com)

Le consortium WebAssembly (Wasm) a publié mi-septembre la version 3.0 de son standard, marquant une étape majeure pour cette technologie née d’un effort conjoint entre Mozilla, Google, Microsoft et Apple. WebAssembly est conçu pour exécuter du code compilé à très haute performance dans un environnement sécurisé. Pensé à l’origine pour le web, Wasm s’impose désormais aussi dans le cloud, où il permet d’exécuter des applications légères, portables et isolées sur une large variété de plateformes.

Selon l’annonce officielle, cette version constitue une mise à jour substantielle: «plusieurs grandes fonctionnalités, dont certaines en préparation depuis six ou huit ans, franchissent enfin la ligne d’arrivée», se félicitent les responsables du projet. Parmi ces évolutions: la prise en charge des mémoires et tables 64 bits, la gestion native des exceptions, de nouvelles instructions vectorielles destinées à améliorer la performance et la stabilité, ainsi qu’un modèle de typage étendu, permettant de représenter plus fidèlement les structures de données complexes issues des langages modernes.

Qu’est-ce que WebAssembly?

Comme le rappelle la documentation du Mozilla Developer Network (MDN), WebAssembly est un langage bas niveau, proche de l’assembleur, au format binaire compact, conçu comme cible de compilation pour des langages tels que C/C++ et Rust, et exécuté à des performances proches du natif dans les navigateurs modernes. Wasm fonctionne aux côtés de JavaScript, chacun pouvant appeler les fonctions de l’autre. 

Cas d’usage mis en avant par le projet

La page «Use Cases» du site officiel énumère des catégories d’applications gourmandes en calcul ou sensibles à la latence: édition d’image/vidéo, jeux vidéo, applications peer-to-peer, musique (streaming, caching), reconnaissance d’image, augmentation vidéo en direct, VR/AR, applications de conception assistée par ordinateur (CAO), etc. 

Au-delà du navigateur: cloud, edge et serverless

Le rapport The State of WebAssembly (2023) de la Cloud Native Computing Foundation (CNCF) note que, bien qu’une majorité d’utilisateurs emploient Wasm pour des applications web, une part non négligeable l’utilise aussi pour des services back-end, pour des scénarios d’edge computing et pour des applications serverless. L’essor de projets open source comme wasmCloud confirme cette tendance. Hébergé par la CNCF, wasmCloud permet de concevoir, déployer et orchestrer des applications composées de composants WebAssembly réutilisables, indépendamment du langage utilisé. La plateforme vise à exécuter ces composants sur n’importe quel cloud, cluster Kubernetes, datacenter ou environnement edge.  

Plusieurs présentations sur le site dédié à wasmCloud montrent comment cette initiative commence à transformer l’usage de WebAssembly dans des environnements cloud et industriels. Chez American Express, par exemple, wasmCloud contribue à faire évoluer leur plateforme multi-tenant Function-as-a-Service (FaaS), en améliorant la portabilité et la sécurité de l’exécution. Des représentants d’Adobe et d’Akamai décrivent pour leur part comment ils utilisent wasmCloud pour exécuter des composants WebAssembly sur des services cloud, des clusters Kubernetes et des environnements edge, illustrant la promesse du modèle «run anywhere» porté par Wasm. 
 

Webcode
wJnXQT74