Rust, le langage lancé par Mozilla en 2009, sera utilisé pour la première fois en production par l’éditeur avec Firefox 48. Une manière pour l’entreprise d’assurer de la visibilité pour la technologie, qui sert également de base à Servo, son projet de nouveau moteur de rendu.
Le projet Rust a été lancé initialement en 2009, mais il a fallu une longue maturation pour qu’il sorte enfin en version finale, en mai 2015. Multiparadigme, le langage s’oriente très clairement vers ceux qui manipulent habituellement le C ou le C++, dont il veut garder les performances tout en apportant aux développeurs des éléments de langage de plus haut niveau.
Depuis, plusieurs versions ont été diffusées, chacune enrichissant petit à petit le langage, qui s’est créé une véritable sphère d’utilisateurs. Pour d’autres, Rust est surtout connu pour être le langage qui sert de base à Servo, le projet de moteur de rendu sur lequel travaille Mozilla pour repartir sur des bases neuves. Une préversion est d’ailleurs disponible depuis peu, mais on ne sait pas encore s’il remplacera à terme Gecko, le moteur de Firefox.
Le parser MP4 passe au Rust
Gecko, justement, va recevoir pour la première fois du code écrit en Rust. Firefox 48, qui sortira prochainement, sera la première version du navigateur à embarquer un code écrit avec ce langage pour la production. Pour Dave Herman, directeur de la recherche chez Mozilla, c’est la preuve que l’orientation de Rust n’a pas évolué d’un iota, notamment comme alternative à C++, avec à la clé une meilleure sécurité, voire de meilleures performances (sur le parallélisme des instructions notamment).
Le premier composant développé en Rust sera un parseur pour les vidéos MPEG-4 (ISO Base Media Format). Selon Herman, il s’agit d’un début logique, les vidéos étant des contenus complexes où les problèmes de sécurité peuvent être légion. De nombreuses failles ont été exploitées de cette manière, en exploitant simplement des dépassements de mémoire tampon et autres types de faille. Rust étant notamment memory safe, le parseur MP4 était un bon candidat pour un premier composant en Rust.
Sous les projecteurs
Selon Mozilla, le nouveau composant remplace l’ancien sans rien changer aux performances. Il est surtout l’occasion de publier un code Rust dans un environnement de production et de le faire utiliser par « des centaines de millions de personnes ». La version 48 concernera en effet aussi les appareils sous Android, qui profiteront du même apport.
Comme on s’en doute, il ne s’agit que d’un début. Le directeur de la recherche confirme que d’autres composants arriveront plus tard, et il est intéressant d’imaginer un Firefox converti progressivement à Rust. Les composants critiques seront sans doute les premiers concernés, ne serait-ce que pour assurer une meilleure protection contre les failles liées à la mémoire. Certains imaginent même que la structure de Firefox pourrait passer entièrement en Rust, Servo venant s’y planter comme une fleur après une longue phase de stabilisation.
L’annonce est également (et peut-être surtout) l’occasion d’envoyer un signal au sujet de Rust : que les développeurs n’hésitent plus à l’intégrer dans des composants critiques puisque Mozilla le fait avec Firefox. Pour les utilisateurs de Firefox par contre, le changement sera invisible. La version 48 de Firefox, quant à elle, est attendue pour début août.