La sortie du projet uutils coreutils 0.11.0 (Rust Coreutils), développant un équivalent du paquet GNU Coreutils écrit en Rust, a été publiée. Coreutils comprend plus de cent utilitaires, y compris sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln et ls. L'objectif du projet est de créer une implémentation alternative multiplateforme de Coreutils, capable de fonctionner sur les plateformes Windows, Redox et Fuchsia.
Rust Coreutils est utilisĂ© par dĂ©faut dans la distribution Ubuntu 25.10 et partiellement dans Ubuntu 26.04. Rust Coreutils est Ă©galement appliquĂ© dans les distributions AerynOS (Serpent OS) et Apertis (dĂ©veloppĂ© par Collabora). Contrairement Ă GNU Coreutils, l'implĂ©mentation en Rust est distribuĂ©e sous la licence permissive MIT, au lieu de la licence copyleft GPL. De plus, la mĂȘme Ă©quipe de dĂ©veloppeurs travaille sur des analogues en Rust des ensembles d'utilitaires util-linux, diffutils, findutils, procps et acl, ainsi que des programmes sed et login.
Dans la nouvelle version de Rust Coreutils :
- Le niveau de compatibilité avec la suite de tests de référence GNU Coreutils a atteint 95,33 % (contre 94,44 % auparavant). 653 tests ont été réussis, soit 8 de plus que dans la version précédente (645). 22 tests ont échoué (contre 29), et 15 tests ont été ignorés (comme auparavant).
- Un nouveau moteur de diagnostic basé sur la bibliothÚque ariadne a été intégré, fournissant des rapports d'erreurs visuels lors de l'exécution des utilitaires dans le terminal, indiquant les arguments de ligne de commande responsables du problÚme. La visualisation des erreurs est intégrée dans les utilitaires chmod, mkdir, mkfifo, mknod, install, tr, expr, sort, numfmt, cut, env, head, tail, truncate, split, shred, stdbuf, od, seq, dd, stat, join, csplit, ls, df et du. Une variable d'environnement UUTILS_DIAG est proposée pour désactiver les rapports de diagnostic.

- Lors de la compilation des versions, des optimisations basées sur les résultats de profilage de code (PGO - Optimisation guidée par le profil) ont été activées, permettant de générer un code plus optimal basé sur l'analyse des caractéristiques d'exécution du programme. Selon les développeurs, le gain de performance lors de certaines opérations a atteint jusqu'à 31 %.
- La performance des utilitaires cp (+32,93 %), join (2,5 fois plus rapide que GNU en raison de la dĂ©sactivation de comparaisons de locale inutiles), od, ptx (+4 %), nl, tail, expand, unexpand, numfmt et sort a Ă©tĂ© optimisĂ©e. Les situations oĂč les opĂ©rations sont exĂ©cutĂ©es nettement plus lentement que dans GNU Coreutils sont dĂ©sormais considĂ©rĂ©es comme des erreurs.
- Certaines divergences avec le comportement de GNU Coreutils dans les utilitaires pr, numfmt, join, id, mkdir, fold, sort, stat, od et date ont été corrigées.
- Des options spĂ©cifiques Ă GNU Coreutils ont Ă©tĂ© mises en Ćuvre : « uname -A », « uname âall-labeled », « cut -F », « cut âwhitespace-delimited », « pr âcolumns », « pr âjoin-lines », « pr -f ».
- Dans les utilitaires mv, cp, rm, chmod, stdbuf, des améliorations de sécurité ont été mises en place pour prévenir l'apparition de vulnérabilités causées par des conditions de course qui permettraient de modifier des données juste aprÚs la vérification de leur validité, mais avant l'exécution de l'opération les concernant. Par exemple, cela permettrait de substituer un fichier par un lien symbolique entre la fin de la vérification et le début de l'opération. Dans le cadre de l'utilisation des utilitaires cp, chmod et mv dans des scripts systÚme exécutés avec des droits root, de telles vulnérabilités permettent de copier ou d'écraser des fichiers arbitraires.
- Des travaux ont Ă©tĂ© rĂ©alisĂ©s pour corriger des arrĂȘts d'urgence dans les utilitaires split, yes, sort, stat, csplit, ls, od, nl, pr, csplit, dd, touch, tail, tac, who.
- Des versions des utilitaires kill et uptime pour Windows ont Ă©tĂ© mises en Ćuvre.
- L'utilisation des paquets byteorder, same-file, filetime, winapi-util, file_diff, mockstream, binary-heap-plus, compare, arrayref (récemment compromis), exacl et dns-lookup a été abandonnée au profit de fonctions provenant des bibliothÚques std, rustix et windows-sys.
- Les utilitaires ls et comm ont Ă©tĂ© mis Ă jour pour prendre en charge les propriĂ©tĂ©s de localisation 'collation', permettant de rĂ©aliser des comparaisons en tenant compte du sens des caractĂšres (par exemple, lors de la comparaison, l'accent peut ne pas ĂȘtre pris en compte).
- Le traitement des caractÚres multibytes a été amélioré dans les utilitaires nl et cut.
De plus, on peut noter que Canonical a publié deux images de conteneurs expérimentaux contenant des outils pour le développement de programmes en Rust, conformes à la spécification Dev Container. La premiÚre image inclut Rust 1.93, Cargo, rust-analyzer, Clippy, Rustfmt, Miri (un interpréteur pour déceler le comportement indéfini), cargo-auditable (audit des compilations), GCC, Clang, LLD, pkg-config, Just, Git, Vim, Helix, Ripgrep, Hyperfine, Bacon, xh et curl. La deuxiÚme image contient en plus des paquets pour le développement Ubuntu : git-buildpackage, sbuild, ubuntu-dev-tools, devscripts, dh-make, dh-cargo, autopkgtest, cargo-vendor-filterer.
Source : opennet.ru

