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é la semaine dernière lors de l'édition 2023 du FOSDEM. L'effort appelé uutils est maintenant packagé par de nombreuses distributions Linux et est également utilisé par un célèbre réseau social 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 paquet du projet GNU qui contient de nombreux outils de base nécessaires pour les systèmes d'exploitation de type Unix: cp (copier un fichier ou un répertoire), mkdir (créer un répertoire), etc. Un développeur propose une réimplémentation dans le langage Rust.

Un des objectifs : rendre le package utilisable sur d'autres systèmes d'exploitation: Windows, macOS, Android, FreeBSD, etc. L'initiative vient relancer le débat sur la question de savoir s'il faut continuer à démarrer de nouveaux projets en C et C++ ou simplement opter 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 Google, dont la publication est parue au troisième trimestre de l'année précédente, est arrivé à la conclusion de que le système de type C++ ne se prête pas à un tel exercice. Et pour que la sécurité de la mémoire en C++ peut être atteinte avec des contrôles pendant l'exécution du programme. En d'autres termes, c'est avec du 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.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.