È stata pubblicata la versione 0.9.0 del progetto uutils coreutils (Rust Coreutils), che sviluppa un'alternativa al pacchetto GNU Coreutils, scritta nel 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 un'implementazione alternativa delle Coreutils multipiattaforma, in grado di funzionare su piattaforme come Windows, Redox e Fuchsia.
Rust Coreutils
è incluso di default nella release di Ubuntu 25.10 e parzialmente in Ubuntu 26.04. Rust Coreutils è utilizzato anche nelle distribuzioni AerynOS (Serpent OS) e Apertis (sviluppato da Collabora). A differenza delle GNU Coreutils, l'implementazione in Rust è distribuita sotto una licenza permissiva MIT, invece della licenza copyleft GPL. Inoltre, lo stesso team di sviluppatori sta sviluppando anche analoghi scritti in Rust per i pacchetti util-linux, diffutils, findutils, procps e acl, così come i programmi sed e login.
Nella nuova versione di Rust Coreutils:
- Il livello di compatibilità con il set di test standard GNU Coreutils è stato del 90,58% (precedentemente 94,74%). Sono stati superati 625 test, 5 in meno rispetto alla versione precedente (630). 56 test hanno avuto esito negativo (erano 21), un test ha portato a un errore e 8 test sono stati omessi (precedentemente 14). La diminuzione del livello di compatibilità è dovuta all'aggiornamento del set di test allo stato di rilascio di GNU Coreutils 9.11, che ha introdotto 25 nuovi test.
- Sono state risolte 44 vulnerabilità emerse a seguito di un audit condotto da Zellic. La maggior parte delle vulnerabilità è causata da discrepanze nel comportamento con GNU coreutils o da condizioni di gara che consentono di modificare i dati in un momento successivo al controllo della correttezza delle informazioni, ma prima dell'esecuzione dell'operazione, ad esempio, sostituendo un file con un collegamento simbolico tra il completamento del controllo e l'inizio dell'esecuzione dell'operazione. Nel contesto dell'uso degli strumenti cp, chmod e mv in script di sistema eseguiti con diritti root, tali vulnerabilità consentono di copiare o sovrascrivere file arbitrari. Per proteggersi dalle vulnerabilità causate dalla condizione di gara, nel progetto è stato implementato il modulo uucore::safe_copy. Le informazioni sulle vulnerabilità sono state pubblicate in una notizia separata.
- È proseguita la traduzione degli strumenti sul pacchetto crate rustix invece del pacchetto crate nix. Sono stati trasferiti su rustix gli strumenti id, tr, timeout, sort, wc, tail, cp, who e factor.
È stata eseguita una pulizia del codice dalle operazioni unsafe in vari strumenti. - Nelle utility cat, wc, head, tail, yes, cp, tee e unexpand sono stati implementati gestori di input/output basati sulle chiamate di sistema splice(), tee() e pipe(), permettendo di velocizzare il lavoro riducendo la copia superflua dei dati tra i buffer.
- Migliorata la compatibilità con le utility GNU Coreutils 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 l'uso dell'interfaccia WASI (WebAssembly System Interface).
- Ampliate le funzionalità, risolti i problemi e aggiunte le 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.
cp, data, 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
