Pubblicazione di uutils 0.11, variante delle GNU Coreutils in linguaggio Rust

È stato pubblicato il rilascio del progetto uutils coreutils 0.11.0 (Rust Coreutils), che sviluppa un analogo del pacchetto GNU Coreutils, scritto in linguaggio Rust. Il pacchetto coreutils include più di 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 alternativa e multipiattaforma delle Coreutils, in grado di funzionare anche su Windows, Redox e Fuchsia.

Rust Coreutils è di default utilizzato nell'uscita di Ubuntu 25.10 e parzialmente in Ubuntu 26.04. Rust Coreutils è anche utilizzato in distribuzioni AerynOS (Serpent OS) e Apertis (sviluppato da Collabora). A differenza di GNU Coreutils, l'implementazione in Rust è distribuita con una licenza permissiva MIT, invece della licenza copyleft GPL. In aggiunta, lo stesso team di sviluppatori sta sviluppando equivalenti scritti in Rust per i pacchetti di utilità util-linux, diffutils, findutils, procps e acl, nonché 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 95,33% (precedentemente 94,44%). Sono stati superati 653 test, otto in più rispetto alla versione precedente (645). 22 test sono stati falliti (precedentemente 29), mentre 15 test sono stati saltati (come prima).
  • È stato integrato un nuovo motore per la diagnostica dei problemi, basato sulla libreria ariadne, che fornisce report sugli errori in modo chiaro al momento dell'esecuzione delle utility nel terminale, con annotazioni sugli argomenti della riga di comando che hanno causato il problema. La visualizzazione degli errori è implementata nelle utility chmod, mkdir, mkfifo, mknod, install, tr, expr, sort, numfmt, cut, env, head, tail, truncate, split, shred, stdbuf, od, seq, dd, stat, join, csplit, ls, df e du. È stata proposta la variabile d'ambiente UUTILS_DIAG per disabilitare i report diagnostici.
  • Nella compilazione delle versioni sono state attivate ottimizzazioni in base ai risultati del profilo di codice (PGO - ottimizzazione guidata dal profilo), che consentono di generare codice più ottimale sulla base dell'analisi delle caratteristiche di esecuzione del programma. Gli sviluppatori stimano che l'aumento delle prestazioni per il completamento di alcune operazioni possa arrivare fino al 31%.
  • È stata effettuata l'ottimizzazione delle prestazioni delle utility cp (+32,93%), join (2,5 volte più veloce rispetto a GNU disattivando confronti inutili della locale), od, ptx (+4%), nl, tail, expand, unexpand, numfmt e sort. Situazioni in cui le operazioni venivano eseguite notevolmente più lentamente rispetto a GNU Coreutils sono state considerate come errori.
  • Sono state risolte alcune discrepanze nel comportamento delle utility pr, numfmt, join, id, mkdir, fold, sort, stat, od e date rispetto a GNU Coreutils.
  • Sono state implementate opzioni specifiche per GNU Coreutils: "uname -A", "uname --all-labeled", "cut -F", "cut --whitespace-delimited", "pr --columns", "pr --join-lines", "pr -f".
  • Nelle utility mv, cp, rm, chmod, stdbuf è stato effettuato un lavoro per migliorare la sicurezza al fine di prevenire vulnerabilità causate da condizioni di gara, che consentono di modificare i dati nel momento successivo alla verifica della correttezza delle informazioni, ma prima dell'esecuzione dell'operazione su di esse, ad esempio sostituendo un file con un link simbolico nel momento tra la fine del controllo e l'inizio dell'esecuzione dell'operazione. Nel contesto dell'uso delle utility cp, chmod e mv in script di sistema eseguiti con i privilegi di root, tali vulnerabilità consentono di copiare o sovrascrivere file arbitrari.
  • È stato lavorato per risolvere le chiusure anomale nelle utility split, yes, sort, stat, csplit, ls, od, nl, pr, csplit, dd, touch, tail, tac, who.
  • Sono state realizzate versioni delle utility kill e uptime per Windows.
  • È stata interrotta l'uso dei pacchetti byteorder, same-file, filetime, winapi-util, file_diff, mockstream, binary-heap-plus, compare, arrayref (recentemente compromesso), exacl e dns-lookup a favore di funzioni dalle librerie std, rustix e windows-sys.
  • Nelle utility ls e comm è stata aggiunta la supporto per la proprietà locale 'collation', che consente di eseguire abbinamenti considerando il significato dei caratteri (ad esempio, durante il confronto potrebbe non essere considerato l'accento).
  • Migliorato il supporto per i caratteri multibyte nelle utility nl e cut.

Inoltre, si segnala la pubblicazione da parte di Canonical di due immagini container sperimentali con strumenti per lo sviluppo di programmi in Rust, conformi alla specifica Dev Container. La prima immagine include Rust 1.93, Cargo, rust-analyzer, Clippy, Rustfmt, Miri (interprete per l'individuazione di comportamenti indefiniti), cargo-auditable (audit delle build), GCC, Clang, LLD, pkg-config, Just, Git, Vim, Helix, Ripgrep, Hyperfine, Bacon, xh e curl. La seconda immagine, oltre a ciò, contiene pacchetti per lo sviluppo di Ubuntu: git-buildpackage, sbuild, ubuntu-dev-tools, devscripts, dh-make, dh-cargo, autopkgtest, cargo-vendor-filterer.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster