È stato pubblicato il rilascio del progetto uutils coreutils 0.3.0 (Rust Coreutils), che sviluppa un'alternativa al pacchetto GNU Coreutils, scritta in Rust. Coreutils comprende 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 alternativi e multipiattaforma di Coreutils, in grado di funzionare su 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:
- Le prestazioni di alcune utility sono state significativamente migliorate; ad esempio, rispetto a GNU Coreutils, l'utility sort ora è 3,72 volte più veloce con la sort normale e 1,46 volte più veloce per la sort di numeri. base64 è 1,2 volte più veloce, expand 1,8 volte, unexpand 1,5 volte, nl 1,57 volte, fold 1,19 volte e 'uniq -c' 1,13 volte.
- Sulla base dello strumento CodSpeed è stata creata un'infrastruttura per il monitoraggio delle prestazioni. Nel sistema di integrazione continua è stato garantito il rilevamento delle regressioni nelle prestazioni. Sono stati aggiunti test delle prestazioni per 15 utility, tra cui sort, ls, uniq, du e base64.
- Per le utility rm, du, chmod e chgrp è stata implementata una gestione sicura delle directory con percorsi relativi, basata sull'uso delle funzioni openat e unlinkat.
- La sicurezza è stata aumentata grazie all'uso del pacchetto crate nix invece delle chiamate unsafe a libc.
- Migliorata la gestione degli errori, avvicinandosi a quella delle GNU Coreutils in molte utilità.
- Migliorata la compatibilità con le Coreutils quando si lavora con percorsi di file contenenti e non contenenti caratteri UTF-8.
- Migliorata la compatibilità con il set di test di riferimento delle GNU Coreutils, superando 532 test (rispetto ai 538 della versione precedente), 68 (52) test sono risultati falliti e 33 (27) test sono stati saltati. Il livello di compatibilità dichiarato è dell'83.91% (precedentemente 87.06%). La diminuzione del livello di compatibilità è dovuta all'aggiunta di 16 nuovi test nel set di prove.
- Nell'utilità date è stata implementata l'opzione ‘—reference=file’ per mostrare il timestamp di modifica di un file. A causa dell'assenza di questa opzione in Ubuntu, lo script di controllo automatico degli aggiornamenti non ha funzionato. In date è stata anche consolidata la logica di parsing del tempo, migliorata la compatibilità con GNU date per l'opzione ‘-d’ e aggiunto il flag ‘—resolution’ per l'output dei dati sulla precisione della registrazione del tempo.
- Implementate le opzioni: ‘basenc —base58’, ‘id -a’, ‘ls -f’, ‘pinky —lookup’, ‘realpath -E’, ‘rm —progress’.
- Le funzionalità sono state ampliate, risolti i problemi e aggiunte le opzioni mancanti per gli strumenti base64, basenc, chgrp, chmod, cksum, cp, csplit, date, df, dirname, du, expand, expr, fold, hashsum, hostname, id, install, ln, ls, mv, nl, nohup, numfmt, od, pinky, ptx, realpath, rm, seq, sort, stat, stdbuf, stty, tail, timeout, touch, tsort, unexpand, uniq, uname, wc, who, uucore.
Fonte: opennet.ru
