Die Ausgabe des Projekts uutils coreutils 0.4.0 (Rust Coreutils) wurde veröffentlicht, das ein Ăquivalent des GNU Coreutils-Pakets darstellt und in der Programmiersprache Rust entwickelt wurde. Die coreutils umfassen ĂŒ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 von Coreutils zu schaffen, die unter anderem auf Windows, Redox und Fuchsia lauffĂ€hig ist.
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 KompatibilitĂ€t mit dem Referenz-Testset von GNU Coreutils wurde verbessert, wobei 544 Tests bestanden wurden, was 12 mehr sind als in der vorherigen Version (532). 56 (68) Tests sind fehlgeschlagen, und 33 (33) Tests wurden ĂŒbersprungen. Der angegebene KompatibilitĂ€tsgrad betrĂ€gt 85,80 % (vorher 83,91 %).
- Im Programm data wurde die KompatibilitĂ€t mit GNU date bei der Verarbeitung von Zeitzonen verbessert (es wurde die Möglichkeit hinzugefĂŒgt, abgekĂŒrzte Bezeichnungen von Zeitzonen in der Option âset anzugeben).
- Im Programm factor wurde das Paket num_prime verwendet, um die Faktorisierung von u64/u128-Typen zu beschleunigen.
- Im Programm tsort wurde die Implementierung des DFS-Algorithmus von einer rekursiven auf eine iterative Arbeitsweise umgestellt, um ein Stack Overflow zu verhindern.
- Im Programm cksum wurde die UnterstĂŒtzung fĂŒr sha2 und sha3 Hashes implementiert. Es wurden Tests hinzugefĂŒgt, um LeistungsĂ€nderungen bei cksum zu verfolgen. Die FunktionalitĂ€t von hashsum wurde in cksum integriert.
- Im Programm mkdir wurde ein Stack Overflow behoben, der zu einem Absturz fĂŒhrte, wenn eine groĂe Anzahl (ĂŒber 200) von verschachtelten Verzeichnissen erstellt wurde.
- In den Programmen stdbuf und uptime wurde die UnterstĂŒtzung fĂŒr die OpenBSD-Plattform implementiert.
- Der Build- und Testprozess auf der FreeBSD-Plattform wurde verbessert.
- Es wurden allgemeine Verbesserungen zur Erhöhung der PortabilitÀt vorgenommen.
- Die Funktionen wurden erweitert, Probleme behoben und fehlende Optionen fĂŒr die Programme base64, cat, chown, chsum, date, dd, du, factor, hashsum, install, ls, mkdir, od, printenv, printf, readlink, stdbuf, timeout, truncate, tsort, uptime, uudoc hinzugefĂŒgt.
ZusÀtzlich ist das abweichende Verhalten des Programms 'du' aus den uutils- und GNU Coreutils-Sets zu erwÀhnen, das nach dem Wechsel von Ubuntu 25.10 zu uutils aufkam. Die Entwickler haben noch nicht entschieden, ob sie dieses Abweichen als Fehler interpretieren möchten, da einerseits im Verhalten von uutils Logik steckt und das Testset von GNU Coreutils keine Probleme aufzeigt, andererseits allerdings InkompatibilitÀten mit GNU Coreutils als Fehler behandelt werden sollen und das Verhalten von Busybox dem von GNU Coreutils entspricht.
Ein unterschiedliches Verhalten wird beobachtet, wenn in den Argumenten des Tools "du" mehrere Verzeichnisse angegeben werden, wobei einige der Verzeichnisse Unterverzeichnisse anderer Verzeichnisse sind (z. B. /var und /var/log). Uutils zeigt die tatsĂ€chliche GröĂe jedes einzelnen Verzeichnisses an und gibt in der letzten Zeile die Gesamtsumme aller angegebenen Verzeichnisse aus. GNU Coreutils zeigt in der letzten Zeile die tatsĂ€chliche GröĂe an, die die angegebenen Verzeichnisse auf der Festplatte einnehmen, zeigt jedoch in einer separaten Liste die GröĂen jedes Verzeichnisses abzĂŒglich der Unterverzeichnisse an, wodurch ihre GröĂe geringer ausfĂ€llt als die tatsĂ€chliche. DarĂŒber hinaus Ă€ndern sich die Werte, die in GNU Coreutils und Busybox ausgegeben werden, abhĂ€ngig von der Reihenfolge der angegebenen Verzeichnisse.
Zum Beispiel, wenn man die GröĂe der Verzeichnisse "/var/log" und "/var" prĂŒft, deren tatsĂ€chliche GröĂen 1540 und 35495 Byte betragen, wird in GNU Coreutils ausgegeben: du -smc /var/log /var 1540 /var/log 33955 /var # kleiner als der tatsĂ€chliche Wert 35495 total du -smc /var /var/log 35495 /var # nur /var angefĂŒhrt und /var/log nicht angezeigt 35495 total
In uutils: du -smc /var/log /var 1540 /var/log 35495 /var 37033 total # gröĂer als der tatsĂ€chliche Wert, entspricht aber der Summe von /var und /var/log du -smc /var /var/log 35495 /var 1540 /var/log 37033 total # gröĂer als der tatsĂ€chliche Wert, entspricht aber der Summe von /var und /var/log
In Busybox: du -smc /var/log /var 1540 /var/log 33955 /var # kleiner als der tatsĂ€chliche Wert 35495 total du -smc /var /var/log 35495 /var # nur /var angefĂŒhrt und /var/log nicht angezeigt 35495 total
Quelle: opennet.ru
