Le langage JavaScript, conçu à l’origine pour exécuter des scripts basiques du côté des navigateurs, est malheureusement, malgré tout ses défauts, devenu le langage dynamique universel du Web, aussi bien du côté client que souvent du côté serveur.

Tous les éditeurs de navigateurs ont donc investi des ressources considérables pour optimiser son utilisation avec des moteurs d’exécution toujours plus rapides et sophistiqués.

Aujourd’hui, Google, Microsoft et Mozilla annoncent WebAssembly, un format binaire intermédiaire pour délivrer des applications à vitesse plus proches des vitesses natives, pour les langages C et C ++. Dans un futur plus ou moins lointain, d’autres langages pourraient être supportés.

Les fichiers WebAssembly auront le suffixe .wasm.

Les trois géants du Web souhaitent que WebAssembly devienne un standard du W3C.

Les programmes WebAssembly fonctionneraient dans des navigateurs Web, mais pas exclusivement. Ils devront pouvoir fonctionner dans des environnements d’exécution minimum, pour être par exemple testés sur des serveurs dans des centres de traitement de données.

Comme cas d’utilisation dans les navigateurs, on peut citer les jeux, les éditeurs de vidéos et d’images ou la visualisation et la simulation scientifique.

En dehors des navigateurs, on peut imaginer un service de distribution de jeux, une application côté serveur, ou une application hybride sur un appareil mobile.

Le format WebAssembly a des avantages immédiats par rapport aux fichiers JavaScript, qui sont des fichiers de code source téléchargés : ils se compressent bien mieux, économisant de la bande passante et du stockage, et ils se décodent plus de vingt fois plus vite qu’il ne faut pour effectuer l’analyse syntaxique d’un fichier JavaScript.

C’est d’autant plus intéressant dans des environnements à capacités limitées comme les smartphones.

Google avait déjà tenté d’investir ce terrain avec le projet ouvert Native Client, sans grand succès. Asm.js, le projet de Mozilla, cherche aussi à définir un sous-ensemble de JavaScript compilable en code très rapide, mais il se heurte aussi au coût de son analyse syntaxique.

Pour limiter les coûts initiaux de cette nouvelle technologie (maintenance, surface d’attaque, taille du code), WebAssembly est conçu de manière à pouvoir être effectué par le moteur JS d’un navigateur.

Pour les navigateurs qui n’auront aucun support pour WebAssembly, il sera possible d’utiliser un polyfill (un plugin qui apporte un support manquant) efficace.

Dans l’immédiat, les compilateurs de WebAssembly seront des dérivés de clang/LLVM comme Emscripten et PNaCI.

Les créateurs du projet pensent que JavaScript demeurera le langage dynamique numéro un du Web, et affirment que WebAssembly ne cherche pas à le remplacer. Si le projet est couvert de succès, WebAssembly pourrait toutefois remplacer des pans entiers de code JavaScript.

Ce qui serait souhaitable de l’avis même de Brendan Eich, le créateur de JavaScript, car tout le monde y trouve son compte.