Pubblicato il rilascio del progetto uutils coreutils 0.9.0 (Rust Coreutils), che sviluppa un equivalente del pacchetto GNU Coreutils, scritto in linguaggio Rust. Il pacchetto coreutils include oltre cento utilità, tra cui sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln e ls. L'obiettivo del progetto è creare una implementazione alternativa multipiattaforma di Coreutils, capace di funzionare su piattaforme Windows, Redox e Fuchsia.
Rust Coreutils
è utilizzato di default nella versione di Ubuntu 25.10 e parzialmente in Ubuntu 26.04. Rust Coreutils è anche utilizzato nelle distribuzioni AerynOS (Serpent OS) e Apertis (sviluppato da Collabora). A differenza di GNU Coreutils, l'implementazione in Rust è distribuita sotto una licenza permissiva MIT, anziché sotto la licenza GPL copyleft. Inoltre, lo stesso team di sviluppatori sta sviluppando analoghi scritti 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 set di test di riferimento GNU Coreutils è stato del 90,58% (era 94,74%). Sono stati eseguiti con successo 625 test, cinque in meno rispetto alla versione precedente (630). 56 test hanno fallito (erano 21), un test ha causato un errore, e 8 test sono stati saltati (erano 14). La diminuzione del livello di compatibilità è spiegata dall'aggiornamento del set di test allo stato di rilascio di GNU Coreutils 9.11, che ha aggiunto 25 nuovi test.
- Risolte 44 vulnerabilità emerse durante un audit condotto dalla società Zellic. La maggior parte delle vulnerabilità è causata da discrepanze nel comportamento rispetto a GNU coreutils o da condizioni di competizione, che consentono di modificare i dati in un momento dopo la verifica della correttezza delle informazioni, ma prima di eseguire un'operazione su di essi, ad esempio sostituire un file con un collegamento simbolico nel momento tra la conclusione della verifica e l'inizio dell'esecuzione dell'operazione. Nel contesto dell'uso delle utilità cp, chmod e mv in script di sistema eseguiti con diritti di root, tali vulnerabilità consentono di copiare o sovrascrivere file arbitrari. Per proteggere da vulnerabilità causate da condizioni di competizione, nel progetto è stato implementato il modulo uucore::safe_copy. Informazioni sulle vulnerabilità sono state pubblicate in una notizia separata.
- Continua la migrazione delle utilità al pacchetto crate rustix invece del pacchetto crate nix. Sono state migrate a rustix le utilità id, tr, timeout, sort, wc, tail, cp, who e factor.
Eseguita la pulizia del codice da operazioni unsafe in varie utilità. - Nelle utility cat, wc, head, tail, yes, cp, tee e unexpand sono stati utilizzati gestori di input/output basati su chiamate di sistema splice(), tee() e pipe(), che hanno accelerato il lavoro grazie all'esclusione della copia superflua dei dati tra i buffer.
- Migliorata la compatibilità con GNU Coreutils per le utility numfmt, date, tr, cksum, factor, head, stat e sort.
- Nelle utility ln, dd, mktemp e tty è stata aggiunta la supporto per la compilazione in formato WebAssembly e per l'uso dell'interfaccia WASI (WebAssembly System Interface).
- Ampliate le funzionalità, risolti problemi e aggiunte opzioni mancanti per le utility cat, chroot, cksum,
cp, date, dd, df, dirname, du, echo, env, expr, factor, fmt, head, id, install, join, ln, logname, ls, md5sum, mkdir, mknod, mktemp, more, mv, nl, nohup, nproc, numfmt, od, paste, pinky, pr, realpath, rm, rmdir, shred, sort, split, stat, stdbuf, stty, sum, sync, tail, tee, timeout, touch, tr, tty, unexpand, uniq, uptime, wc, who, yes.
Fonte: opennet.ru
