Objavljen je izdanak projekta uutils coreutils 0.9.0 (Rust Coreutils), koji razvija analog paketa GNU Coreutils, napisan na jeziku Rust. Navedena coreutils uključuje više od stotinu alata, uključujući sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln i ls. Cilj projekta je stvoriti višepPlatformsku alternativnu implementaciju Coreutils, koja može raditi na platformama Windows, Redox i Fuchsia.
Rust Coreutils
uključen po defaultu u izdanju Ubuntu 25.10 i delimično u Ubuntu 26.04. Rust Coreutils se takođe koristi u distribucijama AerynOS (Serpent OS) i Apertis (koji razvija kompanija Collabora). Za razliku od GNU Coreutils, Rust implementacija se distribuira pod permisivnom MIT licencom, umesto kopyleft GPL licence. Pored toga, istim tim timom programera razvijaju se rust analogni alati paketa util-linux, diffutils, findutils, procps i acl, kao i programi sed i login.
U novoj verziji Rust Coreutils:
- Nivo kompatibilnosti sa referentnim skupom testova GNU Coreutils iznosi 90.58% (prethodno 94.74%). Uspešno je izvršeno 625 testova, što je 5 manje nego u prethodnoj verziji (630). 56 testova je završeno neuspeham (prethodno 21), jedan test je doveo do greške, dok je 8 testova propušteno (prethodno 14). Smanjenje nivoa kompatibilnosti objašnjava se ažuriranjem skupa testova na stanje izdanja GNU Coreutils 9.11, koje je sadržavalo 25 novih testova.
- Otklonjena su 44 ranjivosti identifikovane tokom revizije koju je sproveo Zellic. Većina ranjivosti uzrokovana je neslaganjem ponašanja sa GNU coreutils ili stanjima trke koja omogućavaju promenu podataka u trenutku nakon provere ispravnosti informacija, ali pre nego što se izvrši operacija sa njima, na primer, zamena datoteke simboličkom vezom između završetka provere i početka izvršavanja operacije. U kontekstu korišćenja alata cp, chmod i mv u sistemskim skriptama koje se pokreću sa root pravima, ovakve ranjivosti omogućavaju kopiranje ili prepisivanje proizvoljnih datoteka. Da bi se zaštitili od ranjivosti izazvanih stanjima trke, u projektu je implementiran modul uucore::safe_copy. Informacije o ranjivostima su objavljene u posebnoj vesti.
- Nastavljen je prelazak alata na crate paket rustix umesto crate paketa nix. Na rustix su prebačeni alati id, tr, timeout, sort, wc, tail, cp, who i factor.
Urađena je čišćenje koda od unsafe operacija u raznim alatima. - V orodjih cat, wc, head, tail, yes, cp, tee in unexpand so vključeni obdelovalniki za vhod/izhod, ki temeljijo na sistemskih klicih splice(), tee() in pipe(), kar je omogočilo hitrejše delovanje z izključitvijo odvečne kopije podatkov med predpomnilniki.
- Izboljšana združljivost z orodji GNU Coreutils numfmt, date, tr, cksum, factor, head, stat in sort.
- V orodja ln, dd, mktemp in tty je bila dodana podpora za sestavljanje v formatu WebAssembly in uporabo vmesnika WASI (WebAssembly System Interface).
- Razširjene možnosti, odpravljene težave in dodane manjkajoče možnosti za orodja 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.
Izvor: opennet.ru
