Rust est un langage de programmation compilé multi-paradigme conçu et développé par Mozilla Research depuis 2010. Il a été conçu pour être "un langage fiable, concurrent, pratique", supportant les styles de programmation purement fonctionnel, modèle d'acteur, procédural, ainsi qu'orienté objet sous certains aspects.
Du fait de la politique de Mozilla, Rust est entièrement développé de façon ouverte et sollicite les remarques et contributions de la communauté. La conception du langage est graduellement améliorée au travers des retours de l'équipe et la majorité des contributions proviennent de la communauté.
Les nouveaux contributeurs sont essentiels aux projets open source. Sans eux, le projet finira par s'atrophier et devenir inactif, ou ses contributeurs expérimentés biaiseront les orientations futures du projet. Cependant, les nouveaux contributeurs peuvent également présenter un risque plus élevé d'introduire un code vulnérable. Pour les projets qui ont besoin à la fois d'implémentations sûres et d'une communauté de contributeurs forte et diversifiée, ce conflit est une question urgente.
L'une des pistes envisagées pour atteindre cet objectif consiste à réécrire des éléments de code C ou C++ en Rust, un langage conçu pour s'appliquer aux mêmes domaines que le C et le C++, mais avec des garanties de sécurité accrues. Afin de déterminer si Rust peut contribuer à empêcher les nouveaux contributeurs d'introduire des vulnérabilités et, par conséquent, à alléger le fardeau des mainteneurs, nous examinons le projet Oxidation de Mozilla, qui a remplacé des composants du navigateur web Firefox par des équivalents écrits en Rust.
Nous utilisons les données disponibles de ces projets pour dériver les paramètres d'une nouvelle application des courbes d'apprentissage, que nous utilisons pour estimer la proportion de modifications qui introduisent des vulnérabilités de la part de nouveaux contributeurs d'une manière qui est directement comparable.
Nous constatons qu'en dépit des préoccupations relatives à la facilité d'utilisation, les nouveaux contributeurs aux projets Rust sont environ 70 fois moins susceptibles d'introduire des vulnérabilités que les nouveaux contributeurs aux projets C++.
Nous avons également constaté que le taux de nouveaux contributeurs augmentait globalement après le passage à Rust, ce qui implique que cette diminution des vulnérabilités de la part des nouveaux contributeurs ne résulte pas d'une plus petite réserve de développeurs plus compétents, et que Rust peut en fait faciliter l'arrivée de nouveaux contributeurs.
Dans le même temps, nous analysons qualitativement les vulnérabilités Rust dans ces projets, et mesurons l'efficacité de l'algorithme commun SZZ pour identifier les commits induisant des bogues à partir de leurs correctifs.
L'une des pistes envisagées pour atteindre cet objectif consiste à réécrire des éléments de code C ou C++ en Rust, un langage conçu pour s'appliquer aux mêmes domaines que le C et le C++, mais avec des garanties de sécurité accrues. Afin de déterminer si Rust peut contribuer à empêcher les nouveaux contributeurs d'introduire des vulnérabilités et, par conséquent, à alléger le fardeau des mainteneurs, nous examinons le projet Oxidation de Mozilla, qui a remplacé des composants du navigateur web Firefox par des équivalents écrits en Rust.
Nous utilisons les données disponibles de ces projets pour dériver les paramètres d'une nouvelle application des courbes d'apprentissage, que nous utilisons pour estimer la proportion de modifications qui introduisent des vulnérabilités de la part de nouveaux contributeurs d'une manière qui est directement comparable.
Nous constatons qu'en dépit des préoccupations relatives à la facilité d'utilisation, les nouveaux contributeurs aux projets Rust sont environ 70 fois moins susceptibles d'introduire des vulnérabilités que les nouveaux contributeurs aux projets C++.
Nous avons également constaté que le taux de nouveaux contributeurs augmentait globalement après le passage à Rust, ce qui implique que cette diminution des vulnérabilités de la part des nouveaux contributeurs ne résulte pas d'une plus petite réserve de développeurs plus compétents, et que Rust peut en fait faciliter l'arrivée de nouveaux contributeurs.
Dans le même temps, nous analysons qualitativement les vulnérabilités Rust dans ces projets, et mesurons l'efficacité de l'algorithme commun SZZ pour identifier les commits induisant des bogues à partir de leurs correctifs.
Et vous ?
Quel est votre avis sur le sujet ?
Selon vous, les conclusions de cette recherche sont-elles crédibles et pertinentes ?
Voir aussi
Plus de 90 % des répondants à l'enquête du projet Rust se sont identifiés comme des utilisateurs de Rust, 47 % le font quotidiennement, soit une augmentation de 4 % par rapport à 2021
Rust, réalité et fiction : 5 leçons tirées de l'expérience Rust de Google en 2022, selon l'enquête de Lars Bergstrom et Kathy Brennan
La version 1.72.0 de Rust, le langage de programmation multi-paradigme, est disponible, et intègre plusieurs améliorations ainsi que des API stabilisées