Die Ausgabe des Projekts uutils coreutils 0.9.0 (Rust Coreutils), das ein Äquivalent zum GNU Coreutils-Paket entwickelt, das in der Programmiersprache Rust geschrieben wurde, wurde veröffentlicht. Zu den coreutils gehören über einhundert Dienstprogramme, darunter sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln und ls. Ziel des Projekts ist es, eine plattformübergreifende alternative Implementierung der Coreutils zu schaffen, die unter anderem auf Windows-, Redox- und Fuchsia-Plattformen arbeiten kann.
Rust Coreutils
ist standardmäßig in der Veröffentlichung von Ubuntu 25.10 und teilweise in Ubuntu 26.04 integriert. Rust Coreutils wird auch in den Distributionen AerynOS (Serpent OS) und Apertis (entwickelt von Collabora) verwendet. Im Gegensatz zu GNU Coreutils wird die Implementierung in Rust unter der permissiven MIT-Lizenz verbreitet, anstelle der Copyleft-Lizenz GPL. Zudem entwickelt dasselbe Entwicklerteam Rust-basierte Alternativen zu den Dienstprogrammen util-linux, diffutils, findutils, procps und acl sowie zu den Programmen sed und login.
In der neuen Version von Rust Coreutils:
- Der Kompatibilitätsgrad mit dem Referenz-Testset der GNU Coreutils betrug 90,58 % (vormals 94,74 %). Es wurden 625 Tests erfolgreich durchgeführt, was 5 weniger ist als in der vorherigen Version (630). 56 Tests sind fehlgeschlagen (vormals 21), ein Test führte zu einem Fehler und 8 Tests wurden übersprungen (vormals 14). Der Rückgang der Kompatibilität erklärt sich durch das Update des Testsets auf die Version GNU Coreutils 9.11, in der 25 neue Tests hinzugefügt wurden.
- Insgesamt wurden 44 Sicherheitsanfälligkeiten, die durch ein Audit der Firma Zellic festgestellt wurden, behoben. Die meisten dieser Anfälligkeiten resultieren aus Verhaltensabweichungen von GNU coreutils oder einem Zeitaufwandsproblem, das es ermöglicht, Daten zu verändern, nachdem die Gültigkeit der Informationen überprüft wurde, aber bevor eine Operation mit ihnen ausgeführt wird, beispielsweise das Ersetzen einer Datei durch einen symbolischen Link im Moment zwischen dem Ende der Prüfung und dem Beginn der Durchführung der Operation. Im Kontext der Verwendung von cp-, chmod- und mv-Dienstprogrammen in Systemskripten, die mit Root-Rechten ausgeführt werden, ermöglichen solche Sicherheitsanfälligkeiten das Kopieren oder Überschreiben beliebiger Dateien. Um sich vor Sicherheitsanfälligkeiten, die durch Zeitaufwandsprobleme verursacht werden, zu schützen, wird im Projekt das Modul uucore::safe_copy eingesetzt. Informationen zu den Sicherheitsanfälligkeiten wurden in einer separaten Nachricht veröffentlicht.
- Die Umstellung der Dienstprogramme auf das Crate-Paket rustix anstelle des Crate-Pakets nix wird fortgesetzt. Die Dienstprogramme id, tr, timeout, sort, wc, tail, cp, who und factor wurden auf rustix umgestellt.
Der Code wurde in verschiedenen Dienstprogrammen von Unsafe-Operationen bereinigt. - In den Tools cat, wc, head, tail, yes, cp, tee und unexpand werden Eingabe-/Ausgabeverarbeiter auf Basis von Systemaufrufen wie splice(), tee() und pipe() verwendet, was die Leistung durch das Ausschließen überflüssiger Datenkopien zwischen Puffern verbessert.
- Die Kompatibilität mit den GNU Coreutils-Programmen numfmt, date, tr, cksum, factor, head, stat und sort wurde verbessert.
- Die Tools ln, dd, mktemp und tty unterstützen jetzt die Erstellung im WebAssembly-Format und die Nutzung des WebAssembly-System-Interfaces (WASI).
- Die Funktionen wurden erweitert, Probleme behoben und fehlende Optionen für die Tools cat, chroot, cksum, cp, date, dd, df, dirname, du, echo, env, expr, factor, fmt, head, id, install, join, ln, logname, ls, md5sum, mkdir, mknod, mktemp, more, mv, nl, nohup, nproc, numfmt, od, paste, pinky, pr, realpath, rm, rmdir, shred, sort, split, stat, stdbuf, stty, sum, sync, tail, tee, timeout, touch, tr, tty, unexpand, uniq, uptime, wc, who und yes hinzugefügt.
cp, Datum, dd, df, Verzeichnisname, du, echo, env, expr, Faktor, fmt, Kopf, id, installieren, beitreten, ln, logname, ls, md5sum, mkdir, mknod, mktemp, mehr, mv, nl, nohup, nproc, numfmt, od, einfügen, pinky, pr, realpath, rm, rmdir, shred, sortieren, split, stat, stdbuf, stty, sum, synchronisieren, tail, tee, timeout, touch, tr, tty, unexpand, uniq, uptime, wc, wer, ja.
Quelle: opennet.ru
