WebAssembly : comment le langage assembleur du Web a conquis les développeurs

Va-t-il réussir là où le Java a échoué ? WebAssembly ne semblait être qu’une solution pour faire tourner du C/C++ dans le navigateur web, une technologie qui séduit et qui pourrait bien avoir un impact majeur dans le développement d’application.

S’il est possible d’écrire du WebAssembly natif, un langage de bas niveau, c’est bien la capacité de compiler de multiples langages en Wasm qui constitue la grande force de la solution.

En décembre 2019, le W3C faisait de WebAssembly un standard du Web, au même titre que les HTML et JavaScript. Ce que certains appellent par un raccourci un peu rapide le langage «assembleur du Web» doit donc être implémenté dans tout navigateur web digne de ce nom. Une solution technique qui ouvre la voie au déploiement facile d’applications C/ C++ ou Rust dans le navigateur web avec une performance proche du code natif, mais pas seulement. Non seulement les compilateurs de nombreux langages sont en train d’être adaptés pour générer du bytecode WebAssembly, mais celui-ci brise déjà les frontières du navigateur.

WebAssembly a séduit les développeurs les plus puristes

Beaucoup de jeunes développeurs l’ont aujourd’hui perdu de vue, mais il fut une époque où le seul moyen pour développer une application performante était de coder en C et en assembleur. L’assembleur, c’était l’assurance de pouvoir tirer la quintessence du processeur, de créer l’application la plus rapide qui soit. Par la suite, l’arrivée de compilateurs ultra-optimisés a quelque peu brouillé les cartes et l’assembleur est devenu un sport d’élite.

Néanmoins, WebAssembly ravive cette flamme du code ultra compact chez les codeurs même s’il ne s’agit pas, stricto sensu d’un retour de l’assembleur estime Antoine Viau, architecte logiciel et développeur freelance : « J’ai trouvé l’approche intéressante. Écrire en WebAssembly natif comme à une certaine époque est possible – via le format WAT, WebAssembly Text Format), mais ça n’a que peu d’intérêt car les compilateurs produisent aujourd’hui un code plus performant qu’un humain ne peut le faire. Dire que c’est du langage assembleur pour le Web n’a pas tellement de sens, c’est un abus de langage. C’est avant tout un format d’instructions binaire. »

L’idée de WebAssembly est de compiler un code proche du natif qui va s’exécuter de manière très rapide dans le navigateur. WebAssembly ne se pose pas en rival de JavaScript, mais comme un langage compagnon pour les parties de l’application qui nécessitent une grosse performance. « Si on veut développer une application de montage vidéo dans le navigateur, par exemple, les filtres que l’on va appliquer aux flux vidéo seront développés en WebAssembly à partir d’un langage adapté (C, Rust), mais tout ce qui est interface, gestion de la souris, l’interface utilisateur dans son ensemble sera développée en HTML, CSS et JavaScript. »