EN
en direct

Rust Coreutils 0.11 franchit 95 % du test suite GNU et soigne ses messages d’erreur

Le 31 août 2026, uutils publie Rust Coreutils 0.11, dont la compatibilité avec le test suite GNU dépasse 95 % et qui adopte des diagnostics façon compilateur pour chmod, cut, sort et tr. Le rewrite en Rust des utilitaires de base sort du stade expérimental.

Une rangée de pignons en acier identiques sur un établi sombre, l’un fraîchement usiné en ambre.

31 août 2026. Le projet uutils publie Rust Coreutils 0.11, la nouvelle version de sa réécriture en Rust des utilitaires GNU Coreutils. 95,33 %. C’est le taux de réussite au test suite GNU, qui franchit pour la première fois la barre des 95 %. Ariadne. C’est la bibliothèque Rust qui apporte des messages d’erreur façon compilateur aux commandes chmod, cut, sort et tr. Pourquoi c’est important : le rewrite en Rust des utilitaires de base de Linux n’est plus un prototype, et les distributions commencent à l’adopter.

Un seuil symbolique franchi : 95 % du test suite GNU

La métrique de référence du projet, c’est le test suite GNU : le même corpus de tests que les GNU Coreutils historiques. Rust Coreutils 0.11 passe désormais 95,33 % de ces tests, soit une hausse de 0,89 point par rapport à la version précédente, portée par huit tests supplémentaires. Le cap est symbolique — la barre des 95 % est franchie — mais il dit surtout que l’écart de compatibilité se resserre sur des cas réels, pas seulement sur des cas d’école.

Les 4,67 % restants sont tout sauf anecdotiques. Le test suite GNU est volontairement conservateur : il couvre des cas limites, des locales exotiques, des formats de date et des combinaisons d’options que peu d’utilisateurs rencontrent, mais dont dépendent des scripts d’init ou des paquets qui ne tolèrent aucune variation de comportement. Chaque point gagné correspond à des utilitaires qui se comportent, bit à bit, comme leurs équivalents GNU sur un corpus de plus en plus large. C’est exactement ce que regardent les distributions avant de substituer un utilitaire : un seul écart de sortie peut casser un pipeline de logs ou un script de déploiement.

Le projet uutils ne se présente pas comme un concurrent de GNU pour des raisons de sécurité en premier lieu. Sur son site, il rappelle que GNU Coreutils n’a connu que 17 CVE depuis 2003. L’argument central est ailleurs : moderniser un socle logiciel écrit en C pour qu’il soit maintenu par la génération suivante, avec la sûreté mémoire de Rust, une portabilité qui couvre Linux, macOS, Windows, Android, FreeBSD, NetBSD, OpenBSD, Solaris, Fuchsia et jusqu’à WebAssembly, et un outillage moderne — Cargo, crates.io, fuzzing différentiel et CI sur de nombreux couples système/architecture.

Des messages d’erreur qui se lisent comme ceux d’un compilateur

La nouveauté la plus visible de cette version est l’arrivée de la bibliothèque Ariadne, décrite comme un « outil de diagnostics et de rapport d’erreurs » pour les programmes Rust. Concrètement, chmod, cut, sort et tr produisent désormais des messages beaucoup plus informatifs en cas d’argument erroné ou d’erreur de syntaxe.

L’analogie assumée est celle du compilateur : au lieu d’un message sec du type « option invalide », l’utilisateur obtient un diagnostic structuré qui pointe l’endroit exact du problème et suggère une correction. Pour quelqu’un qui ne connaît pas par cœur les dizaines d’options de chaque utilitaire, c’est un gain réel de lisibilité. Le changement ne touche pour l’instant que quatre commandes, mais uutils annonce l’étendre aux autres utilitaires au fil des versions.

Ce choix mérite l’attention parce qu’il déplace l’ambition du projet : il ne s’agit plus seulement de remplacer GNU à l’identique, mais d’offrir une meilleure expérience là où les outils historiques sont restés volontairement sobres. La compatibilité reste la contrainte première, mais elle n’empêche plus l’amélioration.

La performance soignée dès le build

Côté performances, Rust Coreutils 0.11 active les builds avec Profile Guided Optimizations (PGO) pour Linux, macOS et Windows. Le PGO consiste à compiler une première fois, à exécuter des profils d’usage représentatifs pour collecter les chemins chauds, puis à recompiler en exploitant ces mesures. Le gain se joue sur les utilitaires les plus sollicités, là où la différence entre une implémentation Rust et une implémentation C se mesure au niveau des constantes de coût.

Il s’ajoute à un travail d’optimisation continu que uutils poursuit en parallèle de la chasse à la compatibilité. La promesse de performances « à parité ou meilleures que le C » est ancienne dans le projet, et l’activation du PGO par défaut dans les builds de release la rend plus vérifiable pour un utilisateur qui compile lui-même.

bash
# Essayer uutils coreutils 0.11 sans remplacer GNU
cargo install coreutils --locked
~/.cargo/bin/coreutils chmod 755 fichier

Où en est l’adoption réelle

L’adoption n’est plus théorique. uutils indique qu’Ubuntu adopte progressivement et délibérément son coreutils, que Debian pourrait suivre la même voie, et que Microsoft le propose également — un signal notable, puisque Windows n’a jamais eu d’équivalent GNU natif et que uutils comble ce vide avec un binaire unique multi-appel.

Le chemin vers un remplacement complet reste long. Remplacer GNU Coreutils sur une distribution, c’est toucher au socle sur lequel reposent les scripts d’init, les paquets et des décennies d’habitudes. La prudence des distributions est donc rationnelle : elles avancent par utilitaires, en vérifiant que chaque cas limite du test suite GNU est couvert avant de basculer. La barre des 95 % est un argument de plus dans ce processus, pas une fin en soi.

Pourquoi la sûreté mémoire devient un argument d’infrastructure

Le projet uutils prend soin de ne pas faire du rewrite en Rust un argument sécuritaire pur : il rappelle que GNU Coreutils n’a enregistré que 17 CVE depuis 2003, un chiffre faible pour un logiciel aussi ancien et aussi exposé. L’argument n’est donc pas « le C est dangereux », mais « la sûreté mémoire supprime une classe entière de bugs sans sacrifice mesurable de performance », et surtout « le socle doit pouvoir être maintenu par la génération suivante ».

Ce raisonnement a déjà gagné des batailles ailleurs. Le noyau Linux lui-même intègre du Rust depuis plusieurs cycles, et les mainteneurs les plus sceptiques ont fini par reconnaître que la mémoire non sûre est une source récurrente de failles d’exploitation. Pour des utilitaires de base qui traitent des entrées non fiables, des chemins de fichiers, des données binaires et des expressions régulières, l’enjeu est le même à une échelle plus modeste : chaque parseur réécrit en Rust est un parseur qui ne pourra plus être exploité par un débordement de tampon.

Le multicall binary ajoute un argument opérationnel. Un seul binaire qui regroupe toutes les commandes simplifie la distribution, réduit la surface des exécutables et facilite le déploiement sur des images immuables. C’est ce qui explique l’intérêt de Microsoft, qui n’a jamais eu d’équivalent GNU natif sous Windows, et des distributions qui voient dans uutils un socle commun multiplateforme plutôt qu’une simple copie de GNU.

Verdict

Si vous exploitez des serveurs Linux de production, restez sur GNU Coreutils : rien ne justifie un basculement aujourd’hui, et le risque de régression sur des scripts existants dépasse le bénéfice immédiat. Suivez néanmoins le projet, car l’adoption par Ubuntu et la perspective Debian feront basculer la question dans les deux prochaines années.

Si vous construisez des images minimales, embarquées ou immuables, testez uutils dès maintenant. Un binaire unique multi-appel, la sûreté mémoire de Rust et une portabilité qui couvre jusqu’à WebAssembly en font un candidat sérieux pour les environnements où chaque octet et chaque surface d’attaque comptent.

Si vous êtes développeur ou contributeur, la nouveauté Ariadne est un bon prétexte pour installer la 0.11 et observer ce que donnerait une génération d’utilitaires dont les erreurs se lisent comme celles d’un compilateur. C’est le signal le plus concret que le rewrite Rust ne se contente plus d’imiter GNU : il commence à l’améliorer.

Références

Le brief cyber, chaque mardi

Les failles qui comptent, les correctifs à appliquer, en dix minutes de lecture.

Pas de spam. Désinscription en un clic.
à lire ensuite

Sur le même sujet

Linux 7.3 abat jusqu’à 500 fois la contention de verrous en gestion mémoire

Deux optimisations fusionnées dans la fenêtre de merge de Linux 7.3 réduisent la contention de verrous en gestion mémoire : le pire temps de maintien d’un verrou anon_vma passe de 705 ms à 1,67 ms, et le chemin zsmalloc accélère jusqu’à 1,83 fois sur matériel modeste. Les équipes qui font tourner des JVM, des bases de données ou du KSM sous pression mémoire ont un gain de latence direct à l’upgrade.

← Retour au fil

Tapez au moins deux caractères.

naviguer ouvrir esc fermer