Byl zveřejněn výstup projektu uutils coreutils 0.3.0 (Rust Coreutils), který vyvíjí alternativu k 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 schopná běžet na platformách Windows, Redox a Fuchsia.
Rust Coreutils je ve výchozím nastavení použit ve vydání Ubuntu 25.10 a je aplikován v distribucích AerynOS (Serpent OS) a Apertis (vyvíjeno společností Collabora). Na rozdíl od GNU Coreutils je implementace v Rustu šířena pod permisivní licencí MIT, místo kopyleftové licence GPL. Navíc stejný tým vývojářů vyvíjí napsané v Rustu analogy sad utilit util-linux, diffutils, findutils a procps, stejně jako programů sed a login.
V nové verzi Rust Coreutils:
- Výkon některých utilit byl výrazně zvýšen, například utilita sort je nyní v porovnání s GNU Coreutils rychlejší 3,72krát při běžném třídění a 1,46krát při třídění čísel, base64 je rychlejší 1,2krát, expand 1,8krát, unexpand 1,5krát, nl 1,57krát, fold 1,19krát a „uniq -c“ 1,13krát.
- Na bázi nástroje CodSpeed byla vytvořena infrastruktura pro sledování výkonu. V systému kontinuální integrace bylo zajištěno odhalení regresí ve výkonu. Byly přidány testy výkonu pro 15 utilit, mezi kterými jsou sort, ls, uniq, du a base64.
- Pro utility rm, du, chmod a chgrp byla implementována bezpečná práce s relativními cestami adresářů založená na používání funkcí openat a unlinkat.
- Zvýšena bezpečnost díky použití crate-balíčku nix místo nebezpečných volání libc.
- Bylo vylepšeno zpracování chyb, které se přiblížilo k GNU Coreutils ve mnoha utilitách.
- Byla vylepšena kompatibilita s Coreutils při práci se souborovými cestami, které obsahují i neobsahují UTF8 symboly.
- Byla vylepšena kompatibilita s referenčním testovacím souborem GNU Coreutils, během jehož průchodu bylo úspěšně vykonáno 532 testů (v předchozí verzi 538), 68 (52) testů skončilo neúspěšně a 33 (27) testů bylo přeskočeno. Byla vyhlášena úroveň kompatibility 83,91% (bylo 87,06%). Snížení úrovně kompatibility je odůvodněno přidáním 16 nových testů do testovací sady.
- V utilitě date byla implementována volba „—reference=file“ pro zobrazení času modifikace souboru. V důsledku absence této volby na Ubuntu přestal fungovat skript pro automatickou kontrolu dostupnosti aktualizací. Také byla konsolidována logika analýzy času v date, zlepšena kompatibilita v GNU date při implementaci volby „-d“ a přidána přepínač „—resolution“ pro zobrazení údajů o přesnosti měření času.
- Byly implementovány volby: „basenc —base58“, „id -a“, „ls -f“, „pinky —lookup“, „realpath -E“, „rm —progress“.
- Byly rozšířeny funkce, vyřešeny problémy a přidány chybějící možnosti pro utility base64, basenc, chgrp, chmod, cksum, cp, csplit, date, df, dirname, du, expand, expr, fold, hashsum, hostname, id, install, ln, ls, mv, nl, nohup, numfmt, od, pinky, ptx, realpath, rm, seq, sort, stat, stdbuf, stty, tail, timeout, touch, tsort, unexpand, uniq, uname, wc, who, uucore.
Zdroj: opennet.ru
