Ausgabe der uutils coreutils 0.11.0 (Rust Coreutils) veröffentlicht, das ein Pendant zu dem GNU Coreutils-Paket darstellt, geschrieben in Rust. Die coreutils umfassen über hundert Dienstprogramme, darunter sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln und ls. Das Ziel des Projekts ist die Schaffung einer plattformübergreifenden alternativen Implementierung von Coreutils, die unter anderem auf Windows-, Redox- und Fuchsia-Plattformen funktioniert.
Rust Coreutils ist standardmäßig in der Veröffentlichung von Ubuntu 25.10 und teilweise in Ubuntu 26.04 aktiv. Rust Coreutils wird auch in den Distributionen AerynOS (Serpent OS) und Apertis (entwickelt von Collabora) verwendet. Im Gegensatz zu GNU Coreutils wird die Rust-Implementierung unter der permissiven MIT-Lizenz verbreitet, anstelle der copyleft-lizenz GPL. Zusätzlich entwickelt dasselbe Entwicklerteam Rust-basierte Entsprechungen der Dienstprogrammsammlungen util-linux, diffutils, findutils, procps und acl sowie der Programme sed und login.
In der neuen Version von Rust Coreutils:
- Der Kompatibilitätsgrad mit dem Referenz-Testset von GNU Coreutils beträgt 95,33 % (früher 94,44 %). Insgesamt wurden 653 Tests erfolgreich bestanden, was 8 mehr sind als in der vorherigen Version (645). 22 Tests sind fehlgeschlagen (früher 29), und 15 Tests wurden übersprungen (früher 15).
- Ein neuer Diagnose-Engine wurde integriert, basierend auf der Bibliothek ariadne, die beim Ausführen von Dienstprogrammen im Terminal visuelle Fehlermeldungen mit den Argumenten der Befehlszeile, die das Problem verursacht haben, ausgibt. Die Fehlervisualisierung ist in den Dienstprogrammen 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 und du implementiert. Zur Deaktivierung der diagnostischen Berichte wurde die Umgebungsvariable UUTILS_DIAG vorgeschlagen.

- Bei der Erstellung von Versionen wurden Optimierungen basierend auf den Profilierungsergebnissen des Codes (PGO - Profilguidierte Optimierung) aktiviert, die es ermöglichen, effizienteren Code basierend auf der Analyse des Programmverhaltens zu generieren. Laut Entwicklern betrug der Leistungszuwachs bei einigen Operationen bis zu 31 %.
- Die Leistung der Dienstprogramme cp (+32,93 %), join (2,5-mal schneller als GNU durch Deaktivierung überflüssiger Lokalisierungsv Vergleiche), od, ptx (+4 %), nl, tail, expand, unexpand, numfmt und sort wurden optimiert. Fehlerhafte Situationen wurden als solche betrachtet, wenn die Ausführung von Operationen deutlich langsamer war als in GNU Coreutils.
- Einzelne Abweichungen im Verhalten der Dienstprogramme pr, numfmt, join, id, mkdir, fold, sort, stat, od und date im Vergleich zu GNU Coreutils wurden behoben.
- Spezifische für GNU Coreutils Optionen wurden implementiert: „uname -A“, „uname —all-labeled“, „cut -F“, „cut —whitespace-delimited“, „pr —columns“, „pr —join-lines“, „pr -f“.
- In den Dienstprogrammen mv, cp, rm, chmod und stdbuf wurde an der Verbesserung der Sicherheit gearbeitet, um Schwachstellen zu verhindern, die durch ein Rennen von Bedingungen entstehen, welche die Daten im Moment nach der Überprüfung der Korrektheit der Informationen, aber vor der Durchführung der Operation mit ihnen ändern können, z.B. um eine Datei durch einen symbolischen Link zu ersetzen, genau in dem Moment zwischen dem Abschluss der Überprüfung und dem Beginn der Durchführung der Operation. Im Kontext der Verwendung der Dienstprogramme cp, chmod und mv in Systemskripten, die mit Root-Rechten ausgeführt werden, ermöglichen solche Schwachstellen das Kopieren oder Überschreiben beliebiger Dateien.
- Es wurde an der Beseitigung von Abstürzen in den Dienstprogrammen split, yes, sort, stat, csplit, ls, od, nl, pr, csplit, dd, touch, tail, tac, who gearbeitet.
- Es wurden Varianten der Dienstprogramme kill und uptime für Windows implementiert.
- Die Verwendung der Pakete byteorder, same-file, filetime, winapi-util, file_diff, mockstream, binary-heap-plus, compare, arrayref (das kürzlich kompromittiert wurde), exacl und dns-lookup wurde zugunsten von Funktionen aus den Bibliotheken std, rustix und windows-sys eingestellt.
- In die Dienstprogramme ls und comm wurde Unterstützung für die Locale-Eigenschaften "collation" integriert, die eine bedeutungsbasierte Zeichenvergleich ermöglichen (z.B. kann bei Vergleichen das Akzentzeichen ignoriert werden).
- Die Handhabung von Mehrbytezeichen in den Dienstprogrammen nl und cut wurde verbessert.
Zusätzlich kann erwähnt werden, dass Canonical zwei experimentelle Container-Images für die Entwicklung von Programmen in Rust veröffentlicht hat, die der Dev Container-Spezifikation entsprechen. Das erste Image enthält Rust 1.93, Cargo, rust-analyzer, Clippy, Rustfmt, Miri (Interpreter zur Erkennung undefinierten Verhaltens), cargo-auditable (Audit von Builds), GCC, Clang, LLD, pkg-config, Just, Git, Vim, Helix, Ripgrep, Hyperfine, Bacon, xh und curl. Das zweite Image enthält außerdem Pakete für die Ubuntu-Entwicklung: git-buildpackage, sbuild, ubuntu-dev-tools, devscripts, dh-make, dh-cargo, autopkgtest, cargo-vendor-filterer.
Quelle: opennet.ru

