WebAssembly : un palliatif pour JavaScript ?
Google, Microsoft et Mozilla s’associent autour de WebAssembly, un langage intermédiaire destiné à contourner certaines limites de JavaScript.
Microsoft avec TypeScript, Google avec Native Client, Mozilla avec asm.js… Autant d’initiatives lancées ces dernières années pour apporter davantage de fonctionnalités au JavaScript ou encore accélérer son chargement sur les pages Web.
Ces trois projets sont appelés à converger au sein de WebAssembly, un nouveau format de fichier binaire qui doit permettre de compiler de nombreux langages (en tête de liste, C/C++) pour ensuite les exécuter dans les navigateurs sans affecter les performances globales.
Porté par Brendan Eich (fondateur du JavaScript et CEO éphémère de Mozilla), WebAssembly est un « bytecode », c’est-à-dire un code intermédiaire entre les applications Web et les instructions machine. Sa supervision est assurée par un groupe communautaire au sein du W3C (World Wide Web Consortium).
L’objectif n’est pas de remplacer JavaScript, mais de proposer une solution « complémentaire » qui soit « plus efficace » pour le rendu de certains éléments sur les pages Web.
Le code WebAssembly compressé serait en l’occurrence plus léger (confer le tableau ci-dessous). Et sa décompression serait jusqu’à 20 fois plus rapide par rapport à l’analyse de code asm.js – ce sous-ensemble de JavaScript exécutable à bas niveau après compilation en langage natif avec Emscripten.
JavaScript présentant l’avantage de fonctionner aussi bien sur les architectures ARM que x86, WebAssembly pourra, tout du moins dans un premier temps, y être implémenté pour exploiter ses différentes composantes, comme la sandbox pour la sécurité.
Pour assurer la transition le temps que la prise en charge de ce nouveau format soit assurée dans les principaux navigateurs Web du marché, les équipes impliquées sur le projet (PNaCl et V8 chez Google ; Edge chez Microsoft ; Emscripten et asm.js chez Mozilla…) projettent de lancer une bibliothèque qui convertira le code WebAssembly en JavaScript.
Les deux langages seront d’ailleurs sans doute – d’après Brendan Eich – amenés à coexister sur le long terme. Tout du moins jusqu’à ce que WebAssembly se soit véritablement répandu et ouvert à d’autres langages.
Crédit photo : mclek – Shutterstock.com