Lansare Rust Coreutils 0.4. Discrepanța comportamentului utilitarului du între uutils și GNU Coreutils.

A fost publicată versiunea 0.4.0 a proiectului uutils coreutils (Rust Coreutils), care dezvoltă un echivalent al pachetului GNU Coreutils, scris în limbajul Rust. Coreutils include peste o sută de utilitare, printre care sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln și ls. Scopul proiectului este de a crea o implementare alternativă cross-platform a Coreutils, capabilă să funcționeze pe platforme precum Windows, Redox și Fuchsia.

Rust Coreutils este utilizat în mod implicit în lansarea Ubuntu 25.10 și este implementat în distribuțiile AerynOS (Serpent OS) și Apertis (dezvoltat de Collabora). Spre deosebire de GNU Coreutils, implementarea în Rust este distribuită sub licența permisivă MIT, în loc de licența copyleft GPL. De asemenea, aceeași echipă de dezvoltatori lucrează la implementări scrise în Rust ale seturilor de utilitare util-linux, diffutils, findutils și procps, precum și la programele sed și login.

În noua versiune a Rust Coreutils:

  • S-a îmbunătățit compatibilitatea cu setul de teste de referință GNU Coreutils, în cadrul căruia au fost efectuate cu succes 544 de teste, cu 12 mai multe decât în versiunea anterioară (532). 56 (68) de teste au eșuat, iar 33 (33) de teste au fost omise. Nivelul de compatibilitate declarat este de 85,80% (față de 83,91%).
  • În utilitarul data, s-a îmbunătățit compatibilitatea cu GNU date în tratarea fusurilor orare (s-a adăugat posibilitatea de a specifica denumiri scurtate ale fusurilor orare în opțiunea --set).
  • În utilitarul factor, a fost utilizat pachetul num_prime pentru a accelera factorizarea tipurilor u64/u128.
  • În utilitarul tsort, implementarea algoritmului DFS a fost transformată de la metoda recursivă la metoda iterativă pentru a preveni depășirea stivei.
  • În utilitarul cksum, s-a implementat suport pentru hash-urile sha2 și sha3. Au fost adăugate teste pentru a urmări schimbările de performanță ale cksum. Funcționalitatea hashsum a fost transferată în cksum.
  • În utilitarul mkdir, a fost eliminată depășirea stivei care ducea la o închidere neașteptată la crearea unui număr mare (peste 200) de directoare imediate.
  • În utilitarele stdbuf și uptime, a fost implementat suport pentru platforma OpenBSD.
  • S-a îmbunătățit compilarea și testarea pe platforma FreeBSD.
  • Au fost realizate îmbunătățiri generale pentru a crește portabilitatea.
  • Funcționalitățile au fost extinse, problemele au fost remediate și opțiunile lipsă pentru utilitarele base64, cat, chown, chsum, date, dd, du, factor, hashsum, install, ls, mkdir, od, printenv, printf, readlink, stdbuf, timeout, truncate, tsort, uptime, uudoc au fost adăugate.

De asemenea, se poate menționa discrepanța în comportamentul utilitarului „du” dintre seturile uutils și GNU Coreutils, care a apărut după trecerea Ubuntu 25.10 la uutils. Dezvoltatorii nu au decis încă dacă să interpreteze această discrepanță ca o eroare, deoarece, pe de o parte, în comportamentul uutils există logică iar setul de teste GNU Coreutils nu semnalează probleme, dar, pe de altă parte, necorespunderea cu GNU Coreutils trebuie tratată ca erori, iar comportamentul Busybox se conformează GNU Coreutils.

Comportamente diferite sunt observate atunci când se specifică mai multe directoare ca argumente pentru utilitarul „du”, în situațiile în care unele dintre directoare sunt subdirectoare ale altor directoare (de exemplu, /var și /var/log). Uutils arată dimensiunea reală a fiecărui director în parte, iar în linia finală afișează dimensiunea totală a tuturor directoarelor specificate. GNU Coreutils arată în linia finală dimensiunea reală pe care o ocupă directoarele specificate pe disc, dar în lista separată arată dimensiunile fiecărui director excluzând subdirectoarele, ceea ce face ca dimensiunea lor să fie mai mică decât cea reală. În plus, valorile afișate de GNU Coreutils și Busybox se schimbă în funcție de ordinea în care sunt specificate directoarele.

De exemplu, când se verifică dimensiunea directorilor „/var/log” și „/var”, a căror dimensiune reală este de 1540 și 35495 de octeți, în GNU Coreutils va fi afișat: du -smc /var/log /var 1540 /var/log 33955 /var # mai mic decât cel real 35495 total du -smc /var /var/log 35495 /var # este afișat doar /var, iar /var/log nu este afișat 35495 total

În uutils: du -smc /var/log /var 1540 /var/log 35495 /var 37033 total # mai mare decât cel real, dar corespunde sumei /var și /var/log du -smc /var /var/log 35495 /var 1540 /var/log 37033 total # mai mare decât cel real, dar corespunde sumei /var și /var/log

În Busybox: du -smc /var/log /var 1540 /var/log 33955 /var # mai mic decât cel real 35495 total du -smc /var /var/log 35495 /var # este afișat doar /var, iar /var/log nu este afișat 35495 total

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster