La plupart des sites et des applications Web sont écrits en JavaScript, ou du moins en quelque chose qui est converti en JavaScript. De nombreuses tentatives ont été faites au fil des ans pour changer cela, mais ne vous attendez pas à ce que JavaScript disparaisse complètement de sitôt.
Zaplib est une start-up qui a créé un cadre pour réécrire des parties d’applications Web basées sur JavaScript dans le langage de programmation Rust, qui s’exécuterait ensuite dans les navigateurs Web à l’aide de WebAssembly. Rust est un langage de programmation de bas niveau optimisé pour les performances et la sécurité, et de nombreuses applications ont utilisé Rust pour améliorer considérablement les temps de chargement et la réactivité. Mozilla a réécrit le moteur CSS du navigateur web Firefox en utilisant Rust en 2017, dans le cadre de la mise à jour « Firefox Quantum », qui a doublé les performances typiques de Firefox. WebAssembly permet aux sites d’écrire leur code dans des langages de programmation plus traditionnels, comme le C++, et de l’exécuter à l’intérieur d’un navigateur web tout comme JavaScript.
Zaplib espérait que la réécriture des applications Web en WebAssembly alimenté par Rust, section par section, permettrait de multiplier les performances par 10. Cependant, les fondateurs de l’entreprise ont déclaré dans un post-mortem que les bonds massifs ne se sont pas concrétisés. « Nous avions parié qu’il serait 10 fois plus ergonomique d’accélérer votre application, de manière incrémentielle, dans Rust. Cela n’a pas été le cas dans les implémentations réelles », a déclaré l’équipe.
Le groupe a noté quelques problèmes avec son plan. La plupart des entreprises hésitaient (ce qui est compréhensible) à réécrire leur code dans un langage que leurs ingénieurs ne connaissaient peut-être pas, mais surtout, il n’y avait pas de différence de vitesse significative entre un bon code JavaScript et un bon code Rust.
Zaplib a aidé une entreprise à porter un outil de simulation vers Rust, qui s’est avéré seulement 5 % plus rapide que la version JavaScript existante. Zaplib espérait également que son moteur de rendu 2D à accélération matérielle serait utile, mais l’essentiel de l’augmentation des performances provenait de WebGL, qui ne nécessite pas du tout Rust ou WebAssembly.
Cela ne signifie pas que WebAssembly est terrible ou inutile – Google Earth et Photoshop ont tous deux été portés sur les navigateurs Web grâce à WebAssembly, et des entreprises comme Microsoft construisent des cadres pour permettre à davantage de développeurs de faire la même transition. L’existence de WebAssembly est tout à fait justifiée, mais JavaScript a également beaucoup évolué au cours des dernières années.
Le moteur « V8 » qui gère le code JavaScript dans Chrome, Microsoft Edge et d’autres navigateurs basés sur Chromium est de plus en plus rapide. De récentes optimisations ont fait de Chrome le navigateur Web le plus rapide disponible sur Mac, selon Google, et d’autres changements ont accéléré les versions Windows et Android également.
WebAssembly apporte déjà une nouvelle vague d’applications sur le Web qui n’auraient pas pu exister il y a quelques années, mais ne vous attendez pas à ce que tout JavaScript disparaisse de sitôt. Zaplib a déclaré dans son billet qu' »il existe généralement des moyens plus simples de trouver des améliorations de performance que Rust [ou WebAssembly]. »