È stata pubblicata la versione 0.6.0 del progetto uutils coreutils, che sviluppa un'alternativa al pacchetto GNU Coreutils, scritta in 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 cross-platform di Coreutils, che sia in grado 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:
- È stato raggiunto un livello di compatibilità con il set di test di riferimento GNU Coreutils del 96,28% (rispetto all'87,75% precedente). Sono stati eseguiti con successo 622 test, 56 in più rispetto alla versione precedente (566). 16 test (rispetto ai 55 precedenti) hanno avuto esito negativo e 7 (rispetto ai 23 precedenti) sono stati saltati. L'aumento di compatibilità più significativo è stato registrato per gli strumenti sort, ls, date, cksum e tail.
- Dall'utility date, sort, locale.rs e altre sono stati rimossi codici che utilizzavano la parola chiave «unsafe».
- Le chiamate alla libreria standard libc sono state sostituite con chiamate protette equivalenti fornite dal pacchetto nix.
- È stato migliorato il trattamento degli errori, escludendo terminazioni anomale durante la scrittura su /dev/full.
- Nell'utility date è stata implementata la localizzazione dei nomi dei mesi e dei giorni, tenendo conto dell'ICU. È garantita la formattazione di ore e calendario in base alla località.
- Nell'utilità sort è stata implementata la possibilità di ordinare numeri con separatori per le migliaia e gestire i parametri +POS/-POS.
- Nell'utilità join è stata aggiunta la supporto per le proprietà locali di «collation», permettendo confronti tenendo conto del significato dei caratteri (ad esempio, il segno diacritico può non essere considerato durante il confronto).
- È stata effettuata un'ottimizzazione delle prestazioni per le utility base32, base64, basenc e df.
- Nell'utilità uniq è stato ridotto il consumo di memoria durante il funzionamento senza tenere conto del case.
- Nell'utilità shuf è ottimizzato il rilascio numerico ed è stata aggiunta l'opzione «—random-seed».
- In tsort è escluso il caricamento di tutti i dati di input in memoria.
- Nell'utilità tail è stato aggiunto il flag «—debug».
- Nell'utilità chmod sono stati risolti problemi di esecuzione ricorsiva delle operazioni e aggiunta l'opzione «—preserve-root».
- Nei sistemi Unix-like è stata potenziata la sicurezza durante la navigazione nei contenuti delle directory.
- Nelle utility ls, id, mkdir, mkfifo e mknod è stata aggiunta la supporto per il meccanismo di controllo degli accessi mandatori SMACK.
- Nel sistema di integrazione continua è stato aggiunto un controllo della build su sistemi RISC-V a 64 bit con la libreria musl.
- Migliorata l'operatività in Windows utilizzando Cygwin.
- Sono state ampliate le funzionalità, risolti problemi e aggiunte opzioni mancanti per le utility arch, base64, basename, cat, chgrp, chmod, chroot, cksum, comm, cp, csplit, date, dd, df, dir, dirname, du, echo, env, expand, expr, fmt, fold, groups, hashsum, head, hostid, id, install, join, kill, ln, logname, ls, mkdir, mkfifo, mknod, mktemp, more, mv, nice, nl, nohup, nproc, numfmt, pr, printenv, printf, ptx, readlink, rm, rmdir, runcon, seq, shred, shuf, sort, split, stat, stdbuf, stty, sync, tac, tail, tee, test, timeout, touch, truncate, tsort, uname, unexpand, uniq, uptime, users, wc, yes, ucore, uucore, uudoc.
Fonte: opennet.ru
