È stata pubblicata la versione 0.7.0 del progetto uutils coreutils (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 cross-platform alternativa di Coreutils, capace di funzionare su piattaforme come Windows, Redox e Fuchsia.
Rust Coreutils è utilizzato di default nella distribuzione Ubuntu 25.10 ed è applicato nelle distribuzioni AerynOS (Serpent OS) e Apertis (sviluppato da Collabora). A differenza di GNU Coreutils, l'implementazione in Rust è distribuita sotto la licenza permissiva MIT, invece della licenza copyleft GPL. Inoltre, lo stesso team di sviluppatori sta sviluppando alternative scritte in Rust per i pacchetti util-linux, diffutils, findutils, procps e acl, così come per i programmi sed e login.
Nella nuova versione di Rust Coreutils:
- Il livello di compatibilità con il benchmark di test GNU Coreutils è stato del 94,59% (precedentemente 96,28%). Sono stati superati 629 test, sette in più rispetto alla versione precedente (622). 23 (erano 16) test hanno avuto esito negativo e 13 (erano 7) test sono stati saltati. La diminuzione del livello di compatibilità è spiegata dall'aggiornamento della suite di test alla versione 9.10 di GNU Coreutils, che ha aggiunto 19 nuovi test. Se si considera il numero totale di test, Rust Coreutils ha superato di 7 test rispetto alla versione precedente.
- Il miglioramento più significativo della compatibilità è stato notato per le utility date, fmt, kill, ptx, numfmt e cksum. Miglioramenti meno significativi sono stati osservati nelle utility cut, tac, tail, tr, uniq, od, chroot, stat, mktemp, pr, readlink, ln, kill, nproc, rm, env, sync, fmt, factor e wc.
- È stato fornito supporto per la libreria Rust num-prime, utilizzata per i test nell'utility factor.
- Sfruttate implementazioni più rapide degli hash rustc-hash in ls, du, tsort, shuf e foldhash in sort.
- Ottimizzato il funzionamento con i caratteri ASCII nelle utility unexpand ed expand, che ha portato a un incremento della velocità del 14% durante la lettura bufferizzata.
- Le operazioni di allocazione della memoria nelle utility shuf, split, sort e du sono state ottimizzate, consentendo di accelerare du del 3-6% e shuf del 4%.
- Accelerata la conversione dei numeri in stringhe nell'utility nl.
- Ridotto il peso degli eseguibili e velocizzato l'avvio delle utility true e false.
- In oltre 20 utility, tra cui echo, date, sort, expr, hostname, id, comm, pr e dircolors, risolti i problemi di crash causati dall'impossibilità di scrivere in stderr (reindirizzamento a /dev/full).
- In umask, mkdirat, mknod e altre utility sostituiti chiamate libc non sicure con wrappers protetti dal pacchetto crate nix.
- È stato garantito il corretto funzionamento dell'opzione «—preserve-root» nell'utility «rm» quando si specificano collegamenti simbolici.
- Migliorato il supporto per le piattaforme NetBSD, Windows e NixOS. Migliorata la compilazione per l'architettura PowerPC.
- Ampliate le funzionalità, risolti i problemi e aggiunte opzioni mancanti per le utility cat, cksum, chroot, comm, cp, csplit, cut, date, dd, df, dircolors, du, echo, env, expand, expr, factor, false, fmt, fold, hostname, id, install, kill, ln, ls, mktemp, mknod, mv, nl, nproc, numfmt, od, paste, pr, printfm, ptx, readlink, rm, shuf, sort, split, stat, stdbuf, stty, sync, tac, tail, test, tr, true, tsort, unexpand, uniq, uptime, vdir, wc, whoami.
Fonte: opennet.ru
