Lansarea uutils 0.11, variantă GNU Coreutils scrisă în Rust

A fost publicată versiunea 0.11.0 a proiectului uutils coreutils (Rust Coreutils), care dezvoltă un analog al pachetului GNU Coreutils, scris în limbajul Rust. Coreutils include peste o sută de utilitare, inclusiv sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln și ls. Scopul proiectului este de a crea o implementare alternativă interplatformă a Coreutils, capabilă să funcționeze pe platformele Windows, Redox și Fuchsia.

Rust Coreutils este activat implicit în versiunea Ubuntu 25.10 și parțial în Ubuntu 26.04. Rust Coreutils este utilizat, de asemenea, în distribuțiile AerynOS (Serpent OS) și Apertis (dezvoltat de compania Collabora). Spre deosebire de GNU Coreutils, implementarea pe Rust este distribuită sub o licență permisivă MIT, în loc de licența copyleft GPL. În plus, aceeași echipă de dezvoltatori dezvoltă analogi scriși în Rust pentru seturile de utilitare util-linux, diffutils, findutils, procps și acl, precum și programele sed și login.

În noua versiune a Rust Coreutils:

  • Nivelul de compatibilitate cu setul de teste standard GNU Coreutils a fost de 95.33% (față de 94.44%). S-au efectuat cu succes 653 de teste, cu 8 mai mult decât în versiunea precedentă (645). 22 de teste au eșuat (față de 29), iar 15 teste au fost omise (la fel ca înainte).
  • A fost integrat un nou motor pentru diagnosticarea problemelor, bazat pe biblioteca ariadne, care oferă la pornirea utilitarelor în terminal rapoarte vizuale despre erori, marcând argumentele din linia de comandă care au cauzat problema. Vizualizarea erorilor este activată în utilitare precum 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 și du. Pentru a dezactiva rapoartele diagnostice, a fost propusă variabila de mediu UUTILS_DIAG.
  • În timpul construcției versiunilor, s-au activat optimizări bazate pe rezultatele profilării codului (PGO — optimizare ghidată de profil), care permit generarea unui cod mai optim pe baza analizei caracteristicilor de execuție ale programului. Potrivit dezvoltatorilor, creșterea performanței în timpul efectuării unor operațiuni a fost de până la 31%.
  • Au fost efectuate optimizări ale performanței utilitarelor cp (+32.93%), join (de 2.5 ori mai repede decât GNU datorită dezactivării comparațiilor inutile de localitate), od, ptx (+4%), nl, tail, expand, unexpand, numfmt și sort. Situațiile în care operațiile sunt efectuate semnificativ mai lent decât în GNU Coreutils au început să fie considerate erori.
  • Au fost eliminate divergențele specifice cu GNU Coreutils în comportamentul utilitarelor pr, numfmt, join, id, mkdir, fold, sort, stat, od și date.
  • S-au implementat opțiuni specifice pentru GNU Coreutils: „uname -A”, „uname —all-labeled”, „cut -F”, „cut —whitespace-delimited”, „pr —columns”, „pr —join-lines”, „pr -f”.
  • În utilitarele mv, cp, rm, chmod, stdbuf, au fost realizate îmbunătățiri de securitate pentru a preveni apariția vulnerabilităților cauzate de condiții de competiție, care permit modificarea datelor în momentul după validarea informațiilor, dar înainte de executarea operațiunii asupra acestora, de exemplu, înlocuirea unui fișier cu un link simbolic între finalizarea verificării și începutul executării operațiunii. În contextul utilizării utilitarelor cp, chmod și mv în scripturi de sistem rulate cu privilegii root, aceste vulnerabilități permit copierea sau suprascrierea unor fișiere arbitrare.
  • S-au realizat lucrări pentru eliminarea întreruperilor neașteptate în utilitarele split, yes, sort, stat, csplit, ls, od, nl, pr, csplit, dd, touch, tail, tac, who.
  • Au fost implementate variantele pentru utilitarele kill și uptime pentru Windows.
  • A fost oprită utilizarea pachetelor byteorder, same-file, filetime, winapi-util, file_diff, mockstream, binary-heap-plus, compare, arrayref (recent compromis), exacl și dns-lookup în favoarea funcțiilor din bibliotecile std, rustix și windows-sys.
  • Utilitarele ls și comm au fost îmbunătățite cu suport pentru proprietățile de localizare „collation”, permițând comparații ce țin cont de semnificația caracterelor (de exemplu, la comparare, semnul diacritic poate fi ignorat).
  • S-a îmbunătățit manipularea simbolurilor multibyte în utilitarele nl și cut.

De asemenea, se poate menționa publicarea de către Canonical a două imagini experimentale de containere pentru dezvoltarea de programe în limbajul Rust, conforme cu specificația Dev Container. Prima imagine include Rust 1.93, Cargo, rust-analyzer, Clippy, Rustfmt, Miri (interpreter pentru identificarea comportamentului nedefinit), cargo-auditable (audit al construcțiilor), GCC, Clang, LLD, pkg-config, Just, Git, Vim, Helix, Ripgrep, Hyperfine, Bacon, xh și curl. A doua imagine, pe lângă aceasta, conține pachete pentru dezvoltarea în Ubuntu: git-buildpackage, sbuild, ubuntu-dev-tools, devscripts, dh-make, dh-cargo, autopkgtest, cargo-vendor-filterer.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster