WebAssembly promu standard : le meilleur compagnon de JavaScript ?

webassembly-1-0

WebAssembly a récemment rejoint la liste des standards W3C. Objectif : compléter JavaScript pour améliorer l’exécution des applications web.

Un standard web de plus au portefeuille du W3C.

Le consortium a récemment publié la spécification portant sur le cœur de WebAssembly.

Ce langage de représentation intermédiaire (bytecode) exploite un format proche de l’assembleur.

Il sert de cible de compilation pour permettre l’exécution de langages de haut niveau (C, C++ et Rust pour le moment) dans les applications web à une vitesse proche du natif.

Le code ainsi créé est voulu universel et portable. De manière générale, il se charge et s’exécute plus rapidement dans les navigateurs que le JavaScript.

Ce n’est pas pour autant qu’un langage en remplace un autre. WebAssembly, qui n’est pas directement exécutable, fonctionne de concert avec JavaScript (il fait notamment partie de son compilateur). Il reprend ainsi le principe d’asm.js, mais avec un format binaire.

Au-delà des navigateurs

Les deux langages partagent aussi un même modèle de sécurité (exécution en bac à sable).

Cette propriété est à la base des travaux de la Bytecode Alliance.
Le groupement, qui comprend notamment Intel, Red Hat et Mozilla, pousse l’usage de WebAssembly hors des navigateurs. En l’occurrence, pour sécuriser les projets de développement. Ce en proposant une protection équivalente à celle que les OS garantissent à travers l’isolation des processus… mais avec une empreinte mémoire optimisée.

Du côté du W3C, on liste, parmi les chantiers à court terme :

– Ajouter la prise en charge du threading
– Permettre à du code de faire référence directement à des objets hôtes
– Activer les fonctions d’appel sans utiliser d’espace de pile supplémentaire
– Interagir avec JavaScript en chargeant les exécutables WebAssembly sous forme de modules ES6

À plus long terme, il est question d’intégrer un récupérateur de mémoire – ce qui permettra d’ouvrir WebAssembly à des langages comme Go et Python.

On surveillera aussi le projet WASI. Son objectif : créer une interface commune aux systèmes d’exploitation pour l’exécution de code WebAssembly.

Photo d’illustration © isaak55 – Shutterstock.com