Vydanie Rust Coreutils 0.4. Rozdiel v správaní nástroja du v uutils a GNU Coreutils

Bol vydaný projekt uutils coreutils 0.4.0 (Rust Coreutils), ktorý vyvíja alternatívu k balíku GNU Coreutils napísanému v jazyku Rust. Coreutils obsahuje viac ako sto utilít, vrátane sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln a ls. Cieľom projektu je vytvorenie multiplatformovej alternatívnej implementácie Coreutils, ktorá by mala byť schopná fungovať na platformách Windows, Redox a Fuchsia.

Rust Coreutils je predvolene zaradený do vydania Ubuntu 25.10 a používa sa v distribúciách AerynOS (Serpent OS) a Apertis (vyvíjaný spoločnosťou Collabora). Na rozdiel od GNU Coreutils sa implementácia v Ruste distribuuje pod permisívnou licenciou MIT, namiesto copyleft licencie GPL. Ďalšie utilíty napísané v Ruste, ako util-linux, diffutils, findutils a procps, a programy sed a login, sa vyvíjajú rovnakým tímom vývojárov.

V novej verzii Rust Coreutils:

  • Zlepšila sa kompatibilita s referenčným testovacím súborom GNU Coreutils, pričom bolo úspešne vykonaných 544 testov, čo je o 12 viac ako v predchádzajúcej verzii (532). 56 (68) testov zlyhalo, a 33 (33) testov bolo preskočených. Deklarovaná úroveň kompatibility je 85.80% (predtým 83.91%).
  • V utilite data sa zlepšila kompatibilita s GNU date pri spracovaní časových pásiem (bola pridaná možnosť uviesť skrátené názvy časových pásiem v možnosti —set).
  • V utilite factor bol použitý balík num_prime na urýchlenie faktorizácie typov u64/u128.
  • V utilite tsort bola implementácia algoritmu DFS prepracovaná z rekurzívnej na iteratívnu metódu, aby sa predišlo pretečeniu zásobníka.
  • V utilite cksum bola implementovaná podpora hashov sha2 a sha3. Boli pridané testy na sledovanie zmien v výkonu cksum. Funkcionalita hashsum bola presunutá do cksum.
  • V utilite mkdir bola odstránená chyba pretečenia zásobníka, ktorá spôsobovala pád pri vytváraní veľkého (200+) počtu vnorených adresárov.
  • V utilitách stdbuf a uptime bola implementovaná podpora pre platformu OpenBSD.
  • Zlepšila sa kompilácia a testovanie na platforme FreeBSD.
  • Boli vykonané celkové vylepšenia na zvýšenie prenositeľnosti.
  • Rozšírili sa možnosti, odstránili sa problémy a pridali sa chýbajúce voľby pre utility base64, cat, chown, chsum, date, dd, du, factor, hashsum, install, ls, mkdir, od, printenv, printf, readlink, stdbuf, timeout, truncate, tsort, uptime, uudoc.

Dodatočne je potrebné poznamenať, že existuje rozdiel v správaní utilitky 'du' medzi súbormi uutils a GNU Coreutils, ktorý sa objavil po prechode Ubuntu 25.10 na uutils. Vývojári ešte nerozhodli, či tento rozdiel považovať za chybu, pretože z jednej strany správanie uutils má logiku a referenčný súbor GNU Coreutils neodhalil žiadne problémy, ale z druhej strany sa nesúlad s GNU Coreutils predpokladá ako chybu a správanie Busybox zodpovedá GNU Coreutils.

Rozdielne správanie sa pozoruje pri uvádzaní viacerých adresárov ako argumentov nástroja „du“, keď niektoré z adresárov sú podadresármi iných adresárov (napríklad /var a /var/log). Uutils ukazuje skutočnú veľkosť každého jednotlivého adresára, a v konečnom riadku zobrazuje súhrnnú veľkosť všetkých uvedených adresárov. GNU Coreutils zobrazuje v konečnom riadku skutočnú veľkosť, ktorú uvedené adresáre zaberajú na disku, ale v separátnom zozname ukazuje veľkosti každej zložky s odpočtom vnorených adresárov, takže ich veľkosť je menšia než skutočná. Okrem toho, hodnoty zobrazené v GNU Coreutils a Busybox sa menia v závislosti od poradia uvádzania adresárov.

Napríklad, pri kontrole veľkostí adresárov „/var/log“ a „/var“, ktorých skutočná veľkosť je 1540 a 35495 bajtov, sa v GNU Coreutils zobrazí: du -smc /var/log /var 1540 /var/log 33955 /var # menšie ako skutočné 35495 total du -smc /var /var/log 35495 /var # zobrazený iba /var a /var/log nie je zobrazený 35495 total

V uutils: du -smc /var/log /var 1540 /var/log 35495 /var 37033 total # väčšie ako skutočné, ale zodpovedá súčtu /var a /var/log du -smc /var /var/log 35495 /var 1540 /var/log 37033 total # väčšie ako skutočné, ale zodpovedá súčtu /var a /var/log

V Busybox: du -smc /var/log /var 1540 /var/log 33955 /var # menšie ako skutočné 35495 total du -smc /var /var/log 35495 /var # zobrazený iba /var a /var/log nie je zobrazený 35495 total

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster