Sortie de uutils 0.11, variante des GNU Coreutils en Rust

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

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster