Rust Coreutils 0.10 durcit la sécurité et rattrape GNU — vos scripts shell tournent désormais sans Rust dans le nom
La version 0.10 de Rust Coreutils atteint un niveau de compatibilité GNU suffisant pour remplacer les coreutils classiques sur des systèmes de production. Si vous maintenez une infrastructure Linux, c’est le moment d’évaluer le basculement.
5 août 2026 — Le projet uutils publie Rust Coreutils 0.10, une refonte intégrale des GNU Coreutils en Rust, avec un accent marqué sur le durcissement mémoire et la compatibilité GNU désormais suffisante pour un usage en production.
Le projet ne se contente plus de passer les tests unitaires de GNU. Cette version franchit un seuil : la couverture de la suite de tests GNU atteint un niveau où plusieurs distributions et mainteneurs d’infrastructure envisagent sérieusement le basculement. Rust Coreutils n’est plus une expérience académique — c’est un remplacement concret pour ls, cp, mv, cat et les 90 autres binaires que tout administrateur Linux utilise quotidiennement.
Pourquoi remplacer GNU Coreutils après 40 ans
Les GNU Coreutils sont écrits en C, un langage où les corruptions mémoire (buffer overflow, use-after-free, double-free) restent le vecteur numéro un de vulnérabilités critiques. En 2025, le projet CVE a recensé plus de 200 failles dans des bases de code C matures de moins de 100 000 lignes. Les coreutils GNU, avec leurs ~80 000 lignes de C, ne font pas exception : chaque cp ou dd qui traite un fichier malformé est une surface d’attaque potentielle.
Rust élimine cette classe entière de bugs au niveau du compilateur. Pas de unsafe superflu, pas de data race possible, pas de dangling pointer. Le résultat n’est pas théorique : Rust Coreutils 0.10 ajoute du sandboxing par processus et du renforcement des flags de compilation (PIE, RELRO, stack protector) sans effort manuel — le compilateur les applique par défaut.
Ce que 0.10 apporte concrètement
- Compatibilité GNU à 98 % sur la suite de tests. La version 0.10 passe la quasi-totalité des tests GNU disponibles pour
cp,mv,dd,ls,sort,uniqetwc. Les écarts restants concernent des options obscures (dd conv=sparseavec des combinaisons de flags rares) que la plupart des scripts shell n’utilisent pas. - Renforcement mémoire natif. Tous les binaires sont compilés avec
stack-protector-strong,-fPIE,-Wl,-z,relro,-Wl,-z,nowet tirent parti du modèle de propriété de Rust pour éliminer les use-after-free structurellement. - Nouveaux tests de fuzzing intégrés. La CI exécute désormais cargo-fuzz sur chaque PR pour
cp,dd,sortetsplit. - Performance équivalente ou supérieure. Sur les opérations de copie et de tri, Rust Coreutils est à parité avec GNU, et parfois plus rapide sur les gros volumes grâce à une meilleure exploitation du parallélisme via Rayon pour
sort.
La version 0.10 introduit également un mode --sandbox expérimental pour cp et dd, qui isole les appels système via seccomp — une première pour un remplacement de coreutils.
Ce qui bloque encore l’adoption généralisée
Deux obstacles subsistent avant de voir Rust Coreutils remplacer GNU sur une distribution majeure :
- Les scripts shell codent en dur
/bin/cp. Sur la plupart des systèmes,/bin/cpest un lien symbolique verscoreutils. Remplacer ce lien demande une transition coordonnée que seules les distributions peuvent orchestrer. Arch Linux et Fedora ont des discussions actives sur le sujet, mais aucune n’a encore franchi le pas en 2026. - La compatibilité
ddavec les périphériques bloc.ddde Rust Coreutils ne gère pas encore toutes les ioctls spécifiques aux périphériques (direct,syncsur block device), ce qui bloque son utilisation pour la copie de disques bruts.
Pour un usage en conteneur ou en CI, ces limitations sont inexistantes. AWS utilise déjà Rust Coreutils dans ses images Bottlerocket minimales, et Google les embarque dans certaines images Distroless.
Verdict
Rust Coreutils 0.10 est prêt pour la production, mais pas pour toutes les productions.
- Si vous déployez des conteneurs minimalistes ou des pipelines CI, basculez dès maintenant. Vous gagnez une surface d’attaque mémoire réduite de ~70 % sans changer une ligne de script —
alias cp='coreutils cp'suffit. - Si vous gérez des serveurs bare-metal avec des scripts shell historiques, restez sur GNU pour les 6 à 12 prochains mois, mais commencez à tester vos scripts avec l’alternative Rust. La bascule sera triviale quand les distributions l’officialiseront.
- Si vous écrivez du nouveau code qui appelle des coreutils, ciblez Rust Coreutils en priorité. La compatibilité est suffisante et le gain de sécurité est immédiat.
Le remplacement de GNU Coreutils n’est plus une question de « si » mais de « quand ». La version 0.10 transforme une promesse en produit.
Références
- Phoronix — Rust Coreutils 0.10 Released, 5 août 2026
- uutils/coreutils sur GitHub — Release v0.10.0, 5 août 2026
- uutils/coreutils — GNU test suite compatibility, consulté le 6 août 2026