Un développeur propose une réimplémentation de GNU Coreutils en Rust 

gnu-coreutils-rust

L'utilisation de Rust pour ce projet aidera à accélérer ce processus car de nombreux bogues potentiels sont complètement éliminés.

Sylvestre Ledru a commencé à travailler sur une réimplémentation de GNU Coreutils en Rust pendant la pandémie de COVID-19 et l'a présentée la semaine dernière à FOSDEM 2023. Le projet qui en résulte, appelé uutils, est maintenant intégré à de nombreuses distributions Linux et est également utilisé par un réseau social populaire via le projet Yocto.

Les comparaisons des langages Rust et C++ ont un fil conducteur : mettre en évidence la supériorité de Rust sur C++ en termes de sécurité mémoire. L'éditeur RisingWave explique pourquoi il a réécrit son SGBD Cloud natif à partir de zéro dans Rust après avoir quitté le projet C++.

« Rust garantit la sécurité de la mémoire et des threads au moment de la compilation en introduisant des règles de propriété. Cela va au-delà de RAII, un mécanisme de gestion de la mémoire couramment utilisé en C++. Il a deux avantages. La première est évidente : une fois que le compilateur Rust aura validé notre programme, nous n'aurons plus d'erreurs de segment ou de conditions de concurrence lors de l'exécution, ce qui nécessiterait des dizaines d'heures de débogage, en particulier dans une base de code hautement concurrente et majoritairement asynchrone. La seconde est plus subtile : le compilateur de Rust limite simplement les types d'échecs, ce qui réduit les extraits de code étroitement imbriqués qui peuvent provoquer un tel comportement défectueux. La réplication des erreurs est considérablement améliorée en utilisant une exécution déterministe. »

GNU Coreutils est un paquetage de projets GNU contenant de nombreux outils de base nécessaires aux systèmes d'exploitation de type Unix : cp (copie d'un fichier ou d'un répertoire), mkdir (création d'un répertoire), etc. Un développeur propose une réimplémentation dans le langage Rust.

L'un des objectifs est de rendre le logiciel utilisable sur d'autres systèmes d'exploitation : Windows, macOS, Android, FreeBSD, etc. Cette initiative relance le débat sur l'opportunité de continuer à démarrer de nouveaux projets en C et C++ ou d'opter simplement pour le langage Rust.

« Le langage Rust offre des garanties de sécurité par défaut en matière de gestion de la mémoire. Ce n'est pas le cas du C et du C++, dont l'utilisation dans Mozilla est à l'origine de problèmes de sécurité mémoire », souligne Sylvestre Ledru.

Cependant, Bjarne Stroustrup n'est pas d'accord sur le fait que les comparaisons entre Rust et C++ limitent la notion de sécurisation des logiciels à celle de sécurisation de la mémoire :

« Il n'existe pas de définition unique de la notion de « sécurité » et nous pouvons obtenir une variété de types de sécurité grâce à une combinaison de styles de programmation, de bibliothèques de support et en tirant parti de l'analyse statique. Bjarne Stroustrup suggère ainsi que ce que l'on peut obtenir du C++ en termes de sécurité logicielle dépend, entre autres, du développeur et, notamment, de la connaissance des outils que propose le langage, de sa maîtrise du compilateur, etc.

Les ingénieurs de Google, conscients de ce que le C++ leur offre comme possibilités, se sont lancés dans la création d'un vérificateur de prêt dans ce langage. C'est une fonctionnalité du compilateur Rust qui assure la sécurité de la mémoire grâce à la gestion de l'allocation des pointeurs mémoire.

L'équipe de Google, dont la publication date du troisième trimestre de l'année précédente, a conclu que le système de type C++ n'est pas adapté à un tel exercice. En effet, la sécurité de la mémoire en C++ ne peut être assurée que par des contrôles lors de l'exécution du programme. Autrement dit, c'est avec un code C++ lent qu'il est possible d'atteindre un niveau de sécurité équivalent à celui de Rust.

La sortie de l'éditeur RisingWave intervient alors que Rust se démarque des autres langages présentés depuis des années comme des alternatives au C et au C++. En fait, le noyau Linux s'ouvre de plus en plus au langage de programmation système de Mozilla.


Ajouter comme source préférée dans Google