Die Veröffentlichung von uutils 0.3, einer Variante von GNU Coreutils in Rust

Die Veröffentlichung des Projekts uutils coreutils 0.3.0 (Rust Coreutils), das als Alternative zu dem GNU Coreutils-Paket dient und in der Programmiersprache Rust geschrieben wurde, wurde veröffentlicht. Das coreutils-Paket enthält über einhundert Dienstprogramme, darunter sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln und ls. Ziel des Projekts ist die Schaffung einer plattformübergreifenden alternativen Implementierung von Coreutils, die unter anderem auf Windows, Redox und Fuchsia funktionieren kann.

Rust Coreutils ist standardmäßig in der Veröffentlichung von Ubuntu 25.10 integriert und wird in den Distributionen AerynOS (Serpent OS) und Apertis (das von Collabora entwickelt wird) verwendet. Im Gegensatz zu GNU Coreutils wird die Implementierung in Rust unter der permissiven MIT-Lizenz verbreitet, anstelle der Copyleft-Lizenz GPL. Darüber hinaus entwickelt dasselbe Entwicklerteam Rust-basierte Alternativen zu den Dienstprogrammen util-linux, diffutils, findutils und procps sowie zu den Programmen sed und login.

In der neuen Version von Rust Coreutils:

  • Die Leistung einiger Dienstprogramme wurde erheblich verbessert. So ist beispielsweise das Dienstprogramm sort im Vergleich zu GNU Coreutils jetzt 3,72-mal schneller bei der regulären Sortierung und 1,46-mal schneller bei der Sortierung von Zahlen, base64 ist 1,2-mal schneller, expand 1,8-mal, unexpand 1,5-mal, nl 1,57-mal und fold 1,19-mal schneller, während «uniq -c» 1,13-mal schneller ist.
  • Auf Basis des CodSpeed-Tools wurde eine Infrastruktur zur Leistungsüberwachung geschaffen. In der kontinuierlichen Integrationsumgebung wird die Erkennung von Regressionen in der Leistung sichergestellt. Es wurden Leistungstests für 15 Dienstprogramme hinzugefügt, darunter sort, ls, uniq, du und base64.
  • Für die Dienstprogramme rm, du, chmod und chgrp wurde ein sicherer Umgang mit relativen Verzeichnispfaden implementiert, der auf den Funktionen openat und unlinkat basiert.
  • Die Sicherheit wurde durch die Verwendung des crate-Pakets nix anstelle von unsicheren libc-Aufrufen verbessert.
  • Die Fehlerbehandlung wurde verbessert und die Fehlerbehandlung in vielen Dienstprogrammen an die von GNU Coreutils angenähert.
  • Die Kompatibilität mit Coreutils bei der Arbeit mit Dateipfaden, die sowohl UTF8-Zeichen als auch andere Zeichen enthalten, wurde verbessert.
  • Die Kompatibilität mit dem Referenz-Testset von GNU Coreutils wurde verbessert, wobei 532 von 538 Tests erfolgreich bestanden wurden, 68 (52) Tests nicht bestanden wurden und 33 (27) Tests übersprungen wurden. Ein Kompatibilitätslevel von 83,91 % (vorher 87,06 %) wurde gemeldet. Der Rückgang des Kompatibilitätslevels wird durch die Hinzufügung von 16 neuen Tests im Testset erklärt.
  • In dem Dienstprogramm date wurde die Option „—reference=file“ zur Anzeige der Änderungszeit einer Datei implementiert. Aufgrund dieser fehlenden Option funktioniert das Skript zur automatischen Überprüfung von Updates in Ubuntu nicht mehr. In date wurde außerdem die Logik zur Zeitparsing konsolidiert, die Kompatibilität im GNU date für die Option „-d“ verbessert und das Flag „—resolution“ zum Ausgeben von Informationen zur Zeitgenauigkeit hinzugefügt.
  • Die folgenden Optionen wurden implementiert: „basenc —base58“, „id -a“, „ls -f“, „pinky —lookup“, „realpath -E“, „rm —progress“.
  • Die Funktionen wurden erweitert, Probleme behoben und fehlende Optionen für die Dienstprogramme base64, basenc, chgrp, chmod, cksum, cp, csplit, date, df, dirname, du, expand, expr, fold, hashsum, hostname, id, install, ln, ls, mv, nl, nohup, numfmt, od, pinky, ptx, realpath, rm, seq, sort, stat, stdbuf, stty, tail, timeout, touch, tsort, unexpand, uniq, uname, wc, who, uucore hinzugefügt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4