Objavljen je izlazak projekta uutils coreutils 0.9.0 (Rust Coreutils), koji razvija analog paketa GNU Coreutils, napisanog na jeziku Rust. U sastavu coreutils nalazi se 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 stvaranje cross-platformske alternativne implementacije Coreutils, koja je između ostalog sposobna raditi na platformama Windows, Redox i Fuchsia.
Rust Coreutils
uključen prema zadanim postavkama u izdanju Ubuntu 25.10 i djelomično u Ubuntu 26.04. Rust Coreutils se također koristi u distribucijama AerynOS (Serpent OS) i Apertis (razvija tvrtka Collabora). Za razliku od GNU Coreutils, implementacija na Rustu distribuira se pod permisivnom licencom MIT, umjesto copyleft licence GPL. Dodatno, istom timu programera razvijaju se i analogi paketa alata util-linux, diffutils, findutils, procps i acl, kao i programi sed i login, napisani na Rustu.
U novoj verziji Rust Coreutils:
- Razina kompatibilnosti s referentnim setom testova GNU Coreutils iznosi 90.58% (bila je 94.74%). Uspješno je izvršeno 625 testova, što je 5 manje nego u prethodnoj verziji (630). 56 testova završilo je neuspjehom (bilo je 21), jedan test doveo je do greške, a 8 testova je propušteno (bilo je 14). Smanjenje razine kompatibilnosti objašnjava se ažuriranjem seta testova na stanje izdanja GNU Coreutils 9.11, u kojem je dodano 25 novih testova.
- Otklonjene su 44 ranjivosti otkrivene tijekom revizije koju je provela tvrtka Zellic. Većina ranjivosti nastala je zbog razlike u ponašanju s GNU coreutils ili stanja utrke, što omogućava promjenu podataka u trenutku nakon provjere ispravnosti informacija, ali prije izvršenja operacije s njima, npr. zamjena datoteke simboličkom vezom u trenutku između završetka provjere i početka izvršenja operacije. U kontekstu korištenja alata cp, chmod i mv u sistemskim skriptama pokrenutim s pravima root, takve ranjivosti omogućuju kopiranje ili prepisivanje proizvoljnih datoteka. Za zaštitu od ranjivosti uzrokovanih stanjem utrke u projektu se koristi modul uucore::safe_copy. Informacije o ranjivostima objavljene su u posebnoj vijesti.
- Nastavljen je prijenos alata na crate paket rustix umjesto crate paketa nix. Na rustix su preneseni alati id, tr, timeout, sort, wc, tail, cp, who i factor.
Obavljena je čišćenje koda od unsafe operacija u raznim alatima. - U alatima cat, wc, head, tail, yes, cp, tee i unexpand koriste se obradni programi ulaza/izlaza temeljeni na sustavnim pozivima splice(), tee() i pipe(), što je omogućilo postizanje veće brzine rada izbjegavanjem nepotrebnog kopiranja podataka između bafera.
- Poboljšana je kompatibilnost s GNU Coreutils alatima numfmt, date, tr, cksum, factor, head, stat i sort.
- Alati ln, dd, mktemp i tty sada imaju podršku za izgradnju u WebAssembly formatu i korištenje WASI (WebAssembly System Interface) sučelja.
- Proširene su mogućnosti, otklonjene su poteškoće i dodane su nedostajuće opcije za alate 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
