La version 0.3.0 de uutils coreutils (Rust Coreutils) a été publiée, développant une alternative au paquet GNU Coreutils, écrite en Rust. Coreutils comprend plus de cent utilitaires, y compris sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln et ls. Le but du projet est de créer une implémentation alternative multiplateforme de Coreutils, capable de fonctionner sur des plateformes telles que Windows, Redox et Fuchsia.
Rust Coreutils est utilisé par défaut dans la version Ubuntu 25.10 et est intégré dans les distributions AerynOS (Serpent OS) et Apertis (développé par Collabora). Contrairement à GNU Coreutils, l'implémentation en Rust est distribuée sous une licence permissive MIT, plutôt que sous la licence copyleft GPL. De plus, la même équipe de développeurs travaille sur des analogues écrits en Rust des ensembles d'utilitaires util-linux, diffutils, findutils et procps, ainsi que sur les programmes sed et login.
Dans la nouvelle version de Rust Coreutils :
- Les performances de certains utilitaires ont été considérablement améliorées, par exemple, par rapport aux GNU Coreutils, l’utilitaire sort est désormais 3,72 fois plus rapide pour le tri standard et 1,46 fois pour le tri numérique, base64 est 1,2 fois plus rapide, expand 1,8 fois, unexpand 1,5 fois, nl 1,57 fois, fold 1,19 fois, et «uniq -c» 1,13 fois.
- Une infrastructure de suivi des performances a été créée sur la base de l’outil CodSpeed. Le système d'intégration continue garantit la détection des régressions de performance. Des tests de performance ont été ajoutés pour 15 utilitaires, dont sort, ls, uniq, du et base64.
- Pour les utilitaires rm, du, chmod et chgrp, un fonctionnement sécurisé avec des chemins de répertoires relatifs a été mis en œuvre, basé sur l'utilisation des fonctions openat et unlinkat.
- La sécurité a été renforcée grâce à l'utilisation du paquet crate nix au lieu d'appels unsafe à libc.
- La gestion des erreurs a été améliorée et se rapproche de celle de GNU Coreutils dans de nombreux utilitaires.
- La compatibilité avec Coreutils a été améliorée pour le traitement des chemins de fichiers, qu'ils contiennent ou non des caractères UTF8.
- La compatibilité avec le jeu de tests de référence GNU Coreutils a été améliorée, avec 532 tests réussis (contre 538 dans la version précédente), 68 (52) tests échoués, et 33 (27) tests ignorés. Le niveau de compatibilité annoncé est de 83,91 % (contre 87,06 %). La baisse du niveau de compatibilité est due à l’ajout de 16 nouveaux tests au jeu de tests.
- Dans l’utilitaire date, l'option «—reference=file» a été ajoutée pour afficher l'heure de modification d'un fichier. En raison de l'absence de cette option dans Ubuntu, le script de vérification automatique des mises à jour ne fonctionnait plus. De plus, la logique de parsing des temps a été consolidée dans date, la compatibilité avec GNU date pour l’option «-d» a été améliorée, et un drapeau «—resolution» a été ajouté pour fournir des données sur la précision de la mesure du temps.
- Des options ont été mises en œuvre : «basenc —base58», «id -a», «ls -f», «pinky —lookup», «realpath -E», «rm —progress».
- Les fonctionnalités ont été étendues, les problèmes résolus et des options manquantes ajoutées pour les utilitaires base64, basenc, chgrp, chmod, cksum, cp, csplit, date, df, dirname, du, expand, expr, fold, hashsum, hostname, id, install, ln, ls, mv, nl, nohup, numfmt, od, pinky, ptx, realpath, rm, seq, sort, stat, stdbuf, stty, tail, timeout, touch, tsort, unexpand, uniq, uname, wc, who, uucore.
Source : opennet.ru
