È stata pubblicata la versione del progetto uutils coreutils 0.4.0 (Rust Coreutils), che sviluppa un'alternativa al pacchetto GNU Coreutils, scritta in Rust. Il pacchetto coreutils include oltre cento utility, tra cui sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln e ls. L'obiettivo del progetto è creare un'implementazione alternativa cross-platform di Coreutils, in grado di funzionare anche su piattaforme come Windows, Redox e Fuchsia.
Rust Coreutils è utilizzato di default nella versione di Ubuntu 25.10 ed è impiegato nelle distribuzioni AerynOS (Serpent OS) e Apertis (sviluppato da Collabora). A differenza di GNU Coreutils, l'implementazione in Rust è distribuita con la licenza permissiva MIT, invece della licenza copyleft GPL. Inoltre, lo stesso team di sviluppatori sta sviluppando analoghi scritti in Rust per gli utility set util-linux, diffutils, findutils e procps, e anche per i programmi sed e login.
Nella nuova versione di Rust Coreutils:
- Migliorata la compatibilità con il benchmark di test GNU Coreutils, con 544 test completati con successo, 12 in più rispetto alla versione precedente (532). 56 (68) test non sono riusciti, mentre 33 (33) test sono stati saltati. È stato dichiarato un livello di compatibilità dell'85,80% (era 83,91%).
- Nell'utilità data è stata migliorata la compatibilità con GNU date nella gestione dei fusi orari (aggiunta la possibilità di specificare le abbreviazioni dei fusi orari nell'opzione —set).
- Nell'utilità factor è stato utilizzato il pacchetto num_prime per accelerare la fattorizzazione dei tipi u64/u128.
- Nell'utilità tsort l'implementazione dell'algoritmo DFS è stata convertita da un metodo ricorsivo a uno iterativo per prevenire il sovraccarico dello stack.
- Nell'utilità cksum è stata implementata la supporto per gli hash sha2 e sha3. Sono stati aggiunti test per monitorare le variazioni nelle prestazioni di cksum. La funzionalità hashsum è stata trasferita in cksum.
- Nell'utilità mkdir è stato risolto il problema di overflow dello stack che causava la chiusura anomala durante la creazione di un numero elevato (oltre 200) di directory nidificate.
- Nelle utility stdbuf e uptime è stata implementata la supporto per la piattaforma OpenBSD.
- Migliorata la compilazione e i test sulla piattaforma FreeBSD.
- Sono state apportate migliorie generali per aumentare la portabilità.
- Espanse le funzionalità, risolti problemi e aggiunte opzioni mancanti per le utility base64, cat, chown, chsum, date, dd, du, factor, hashsum, install, ls, mkdir, od, printenv, printf, readlink, stdbuf, timeout, truncate, tsort, uptime, uudoc.
Inoltre, si può notare la divergenza nel comportamento dell'utility 'du' tra le collezioni uutils e GNU Coreutils, emersa dopo il passaggio di Ubuntu 25.10 a uutils. Gli sviluppatori non hanno ancora deciso se interpretare questa divergenza come un errore, poiché da un lato il comportamento delle uutils ha una logica e il set di test delle GNU Coreutils non rileva problemi, ma dall'altro lato le incompatibilità con le GNU Coreutils devono essere trattate come errori e il comportamento di Busybox corrisponde a quello delle GNU Coreutils.
Un comportamento diverso si osserva quando si specificano diversi cataloghi come argomenti per lo strumento «du», in situazioni in cui alcuni di questi cataloghi sono sottocataloghi di altri (ad esempio, /var e /var/log). Uutils mostra la dimensione effettiva di ciascun catalogo separato e nella riga finale visualizza la dimensione totale di tutti i cataloghi specificati. GNU Coreutils mostra nella riga finale la dimensione effettiva occupata dai cataloghi specificati sul disco, ma nella lista separata mostra le dimensioni di ciascun catalogo escludendo i cataloghi annidati, il che si traduce in una dimensione inferiore rispetto a quella effettiva. Inoltre, i valori visualizzati in GNU Coreutils e Busybox cambiano a seconda dell'ordine in cui vengono specificati i cataloghi.
Ad esempio, verificando la dimensione dei cataloghi «/var/log» e «/var», la cui dimensione reale è di 1540 e 35495 byte, in GNU Coreutils verrà visualizzato: du -smc /var/log /var 1540 /var/log 33955 /var # inferiore a quella reale 35495 totale du -smc /var /var/log 35495 /var # viene mostrato solo /var e /var/log non viene mostrato 35495 totale
In uutils: du -smc /var/log /var 1540 /var/log 35495 /var 37033 total # higher than actual but matches sum of /var and /var/log du -smc /var /var/log 35495 /var 1540 /var/log 37033 total # higher than actual but matches sum of /var and /var/log
In Busybox: du -smc /var/log /var 1540 /var/log 33955 /var # lower than actual 35495 total du -smc /var /var/log 35495 /var # only shows /var and does not show /var/log 35495 total
Fonte: opennet.ru
