Veröffentlichung von Rust Coreutils 0.4. Abweichungen im Verhalten des Dienstprogramms du zwischen uutils und GNU Coreutils

Die Ausgabe des Projekts uutils coreutils 0.4.0 (Rust Coreutils) wurde veröffentlicht, das ein Äquivalent zum Paket GNU Coreutils in Rust entwickelt. Zu den coreutils gehören ĂŒber hundert Werkzeuge, darunter sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln und ls. Ziel des Projekts ist die Entwicklung einer plattformĂŒbergreifenden alternativen Implementierung von Coreutils, die unter anderem auf Windows, Redox und Fuchsia lĂ€uft.

Rust Coreutils ist standardmĂ€ĂŸig in der Version Ubuntu 25.10 integriert und wird in den Distributionen AerynOS (Serpent OS) und Apertis (entwickelt von Collabora) eingesetzt. Im Gegensatz zu GNU Coreutils wird die Rust-Implementierung unter der permissiven MIT-Lizenz verteilt, anstelle der Copyleft-Lizenz GPL. Von demselben Entwicklerteam werden außerdem auf Rust basierende Alternativen zu den Toolsets util-linux, diffutils, findutils und procps sowie zu den Programmen sed und login entwickelt.

In der neuen Version von Rust Coreutils:

  • Die KompatibilitĂ€t mit dem Referenz-Testset von GNU Coreutils wurde verbessert, wobei 544 Tests erfolgreich bestanden wurden, was 12 mehr sind als in der vorherigen Version (532). 56 (68) Tests scheiterten, und 33 (33) Tests wurden ĂŒbersprungen. Ein KompatibilitĂ€tsgrad von 85,80 % wurde erklĂ€rt (vorher 83,91 %).
  • In dem Tool data wurde die KompatibilitĂ€t mit GNU date beim Umgang mit Zeitzonen verbessert (es wurde die Möglichkeit hinzugefĂŒgt, abgekĂŒrzte Namen von Zeitzonen in der Option —set anzugeben).
  • Im Tool factor wurde das Paket num_prime zur Beschleunigung der Faktorisierung von Typen u64/u128 verwendet.
  • Im Tool tsort wurde die Implementierung des DFS-Durchlaufalgorithmus von einer rekursiven auf eine iterative Methode umgestellt, um einen StackĂŒberlauf zu vermeiden.
  • Das cksum-Tool unterstĂŒtzt jetzt die Hashes sha2 und sha3. Es wurden Tests hinzugefĂŒgt, um die LeistungsĂ€nderungen von cksum zu verfolgen. Die FunktionalitĂ€t von hashsum wurde in cksum integriert.
  • Im mkdir-Tool wurde ein Stackoverflow behoben, das zum Absturz fĂŒhrte, wenn mehr als 200 geschachtelte Verzeichnisse erstellt wurden.
  • Die Tools stdbuf und uptime unterstĂŒtzen jetzt die OpenBSD-Plattform.
  • Der Build- und Testprozess auf der FreeBSD-Plattform wurde verbessert.
  • Allgemeine Verbesserungen wurden vorgenommen, um die PortabilitĂ€t zu erhöhen.
  • Die Möglichkeiten wurden erweitert, Probleme behoben und fehlende Optionen fĂŒr die Tools base64, cat, chown, chsum, date, dd, du, factor, hashsum, install, ls, mkdir, od, printenv, printf, readlink, stdbuf, timeout, truncate, tsort, uptime und uudoc hinzugefĂŒgt.

ZusÀtzlich ist das abweichende Verhalten des 'du'-Tools aus den uutils und den GNU Coreutils zu erwÀhnen, das nach dem Umstieg von Ubuntu 25.10 auf uutils aufgetreten ist. Die Entwickler haben noch nicht entschieden, ob diese Abweichung als Fehler betrachtet werden soll, da das Verhalten der uutils eine Logik aufweist und der Testdatenumfang der GNU Coreutils keine Probleme aufzeigt. Andererseits sollte die InkompatibilitÀt mit den GNU Coreutils jedoch als Fehler behandelt werden, und das Verhalten von Busybox entspricht den GNU Coreutils.

Ein unterschiedliches Verhalten wird beobachtet, wenn mehrere Verzeichnisse als Argumente fĂŒr das Tool „du“ angegeben werden, wobei einige der Verzeichnisse Unterverzeichnisse anderer Verzeichnisse sind (zum Beispiel /var und /var/log). Uutils zeigt die tatsĂ€chliche GrĂ¶ĂŸe jedes einzelnen Verzeichnisses an und gibt in der Gesamtsumme die GesamtgrĂ¶ĂŸe aller angegebenen Verzeichnisse aus. GNU Coreutils gibt in der Gesamtsumme die tatsĂ€chliche GrĂ¶ĂŸe an, die die angegebenen Verzeichnisse auf der Festplatte belegen, zeigt jedoch in einer separaten Liste die GrĂ¶ĂŸen jedes Verzeichnisses ohne die Unterverzeichnisse an, wodurch ihre GrĂ¶ĂŸe geringer erscheint als die tatsĂ€chliche. DarĂŒber hinaus variieren die in GNU Coreutils und Busybox ausgegebenen Werte je nach Reihenfolge der angegebenen Verzeichnisse.

Zum Beispiel, wenn die GrĂ¶ĂŸen der Verzeichnisse „/var/log“ und „/var“ ĂŒberprĂŒft werden, deren tatsĂ€chliche GrĂ¶ĂŸen 1540 und 35495 Bytes betragen, wird in GNU Coreutils Folgendes ausgegeben: du -smc /var/log /var 1540 /var/log 33955 /var # kleiner als tatsĂ€chlich 35495 gesamt du -smc /var /var/log 35495 /var # nur /var angezeigt und /var/log nicht angezeigt 35495 gesamt

In uutils: du -smc /var/log /var 1540 /var/log 35495 /var 37033 total # höher als das tatsÀchliche, aber entspricht der Summe aus /var und /var/log du -smc /var /var/log 35495 /var 1540 /var/log 37033 total # höher als das tatsÀchliche, aber entspricht der Summe aus /var und /var/log

In Busybox: du -smc /var/log /var 1540 /var/log 33955 /var # niedriger als das tatsÀchliche 35495 total du -smc /var /var/log 35495 /var # zeigt nur /var und nicht /var/log 35495 total

Quelle: opennet.ru

ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen đŸ”„ ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster