Byl vydán projekt uutils coreutils 0.9.0 (Rust Coreutils), vyvíjející alternativu balíčku GNU Coreutils napsanou v jazyce Rust. Coreutils zahrnuje více než sto utilit, včetně sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln a ls. Cílem projektu je vytvořit multiplatformní alternativní implementaci Coreutils, která bude schopna fungovat na platformách Windows, Redox a Fuchsia.
Rust Coreutils
je ve výchozím nastavení zapojen v distribuci Ubuntu 25.10 a částečně v Ubuntu 26.04. Rust Coreutils se také používá v distribucích AerynOS (Serpent OS) a Apertis (vyvíjeno firmou Collabora). Na rozdíl od GNU Coreutils se implementace v Rustu distribuuje pod permissivní licencí MIT, místo copyleftové licence GPL. Tým vývojářů rovněž vyvíjí analogické sady utilit na Rustu pro util-linux, diffutils, findutils, procps a acl, stejně jako programy sed a login.
V nové verzi Rust Coreutils:
- Úroveň kompatibility s referenční sadou testů GNU Coreutils činila 90.58% (bylo 94.74%). Úspěšně bylo provedeno 625 testů, což je o 5 méně než v předchozí verzi (630). 56 testů skončilo neúspěchem (bylo 21), jeden test přivedl k chybě, a 8 testů bylo vynecháno (bylo 14). Snížení úrovně kompatibility je způsobeno aktualizací testovací sady na stav vydání GNU Coreutils 9.11, která přidala 25 nových testů.
- Bylo odstraněno 44 zranitelností odhalených během auditu provedeného společností Zellic. Většina zranitelností byla způsobena nesouladem chování s GNU coreutils nebo stavy propadnutí, které umožnily změnit data v okamžiku po kontrole správnosti informací, ale před provedením operace s nimi, například změnit soubor na symbolický odkaz v okamžiku mezi dokončením kontroly a začátkem provádění operace. V kontextu použití utilit cp, chmod a mv ve systémových skriptech spuštěných s právy root umožňují takové zranitelnosti kopírovat nebo přepsat libovolné soubory. Pro ochranu proti zranitelnostem způsobeným stavy propadnutí je v projektu použit modul uucore::safe_copy. Informace o zranitelnostech byly publikovány v samostatné zprávě.
- Pokračoval překlad utilit na crate-paket rustix místo crate-paketu nix. Na rustix byly převedeny utility id, tr, timeout, sort, wc, tail, cp, who a factor.
Bylo provedeno čištění kódu od unsafe-operations v různých utilitách. - V utilitách cat, wc, head, tail, yes, cp, tee a unexpand jsou použity obsluhy vstupu/výstupu založené na systémových voláních splice(), tee() a pipe(), což umožnilo zrychlit práci tím, že se vyloučilo nadbytečné kopírování dat mezi vyrovnávacími pamětmi.
- Byla vylepšena kompatibilita s GNU Coreutils pro utility numfmt, date, tr, cksum, factor, head, stat a sort.
- Byla přidána podpora pro sběr formátu WebAssembly a použití rozhraní WASI (WebAssembly System Interface) do utilit ln, dd, mktemp a tty.
- Byly rozšířeny možnosti, vyřešeny problémy a přidány chybějící možnosti pro utility 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.
Zdroj: opennet.ru
