Апублікаваны выпуск праекту uutils coreutils 0.11.0 (Rust Coreutils), які развівае аналог пакета GNU Coreutils, напісаны на мове Rust. У склад coreutils уваходзіць больш за сто ўтыліт, уключаючы sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln і ls. Мэтай праекта з'яўляецца стварэнне кросплатформавай альтэрнатыўнай рэалізацыі Coreutils, сярод іншага здольнай працаваць на платформах. Windows, Redox і Fuchsia.
Rust Coreutils задзейнічаны па змаўчанні ў выпуску Ubuntu 25.10 і часткова ў Ubuntu 26/04. Rust Coreutils таксама прымяняецца ў дыстрыбутывах AerynOS (Serpent OS) і Apertis (развіваецца кампаніяй Collabora). У адрозненне ад GNU Coreutils рэалізацыя на Rust распаўсюджваецца пад пермісіўнай ліцэнзіяй MIT, замест капілефт-ліцэнзіі GPL. Дадаткова той жа камандай распрацоўнікаў развіваюцца напісаныя на Rust аналогі набораў утыліт util-linux, diffutils, findutils, procps і acl, а таксама праграм sed і login.
У новай версіі Rust Coreutils:
- Узровень сумяшчальнасці з эталонным наборам тэстаў GNU Coreutils склаў 95.33% (было 94.44%). Паспяхова выканана 653 тэсты, што на 8 больш, чым у мінулай версіі (645). 22 тэсты завяршыліся няўдачай (было 29), а 15 тэстаў было прапушчана (было 15).
- Інтэграваны новы рухавічок для дыягностыкі праблем, заснаваны на бібліятэцы ariadne і які выводзіць пры запуску ўтыліт у тэрмінале наглядныя справаздачы пра памылкі c пазнакай аргументаў каманднага радка, з-за якіх узнікла праблема. Візуалізацыя памылак задзейнічана ва ўтылітах chmod, mkdir, mkfifo, mknod, install, tr, expr, sort, numfmt, cut, env, head, tail, truncate, split, shred, stdbuf, od, seq, dd, stat, join, csp Для адключэння дыягнастычных справаздач прапанавана зменная асяроддзі UUTILS_DIAG.

- Пры зборцы рэлізаў актываваны аптымізацыі на аснове вынікаў прафілявання кода (PGO - Profile-guided optimization), якія дазваляюць генераваць больш аптымальны код на аснове аналізу асаблівасцяў выканання праграмы. Па адзнацы распрацоўнікаў прырост прадукцыйнасці пры выкананні некаторых аперацый склаў да 31%.
- Праведзена аптымізацыя прадукцыйнасці ўтыліт cp (+32.93%), join (у 2.5 разы хутчэй, чым GNU за кошт адключэння лішніх параўнанняў лакалі), od, ptx (+4%), nl, tail, expand, unexpand, numfmt і sort. Як памылкі сталі разглядацца сітуацыі з выкананнем аперацый прыкметна павольней, чым у GNU Coreutils.
- Ухіленыя асобныя разыходжанні з GNU Coreutils у паводзінах утыліт pr, numfmt, join, id, mkdir, fold, sort, stat, od і date.
- Рэалізаваны спецыфічныя для GNU Coreutils опцыі: "uname-A", "uname-all-labeled", "cut-F", "cut-whitespace-delimited", "pr-columns", "pr-join-lines", "pr-f".
- Ва ўтылітах mv, cp, rm, chmod, stdbuf праведзена праца па ўзмацненні бяспекі для прадухілення з'яўлення ўразлівасцяў, выкліканых станам гонкі, якія дазваляюць змяніць дадзеныя ў момант пасля праверкі карэктнасці інфармацыі, але да выканання аперацыі з імі, напрыклад, падмяніць файл на сімвалічную спасылку ў момант паміж завяршэннем. У кантэксце выкарыстання ўтыліт cp, chmod і mv у сістэмных скрыптах, якія запускаюцца з правамі root, падобныя ўразлівасці дазваляюць скапіяваць ці перазапісаць адвольныя файлы.
- Праведзена праца па ўхіленні аварыйных завяршэнняў ва ўтылітах split, yes, sort, stat, csplit, ls, od, nl, pr, csplit, dd, touch, tail, tac, who.
- Рэалізаваны варыянты ўтыліт kill і uptime для Windows.
- Спынена выкарыстанне пакетаў byteorder, same-file, filetime, winapi-util, file_diff, mockstream, binary-heap-plus, compare, arrayref (нядаўна быў скампраметаваны), exacl і dns-lookup у карысць функцый з бібліятэк std, rustix і windows.
- Ва ўтыліты ls і comm дададзеная падтрымка ўласцівасцяў лакалі «collation», якія дазваляюць выконваць супастаўленні з улікам сэнсу знакаў (напрыклад, пры параўнанні можа не прымацца да ўвагі знак націску).
- Палепшана праца з шматбайтавымі знакамі ва ўтылітах nl і cut.
Дадаткова можна адзначыць публікацыю кампаніяй Canonical двух эксперыментальных выяў кантэйнераў з начыннем для распрацоўкі праграм на мове Rust, якія адпавядаюць спецыфікацыі Dev Container. Першая выява ўключае Rust 1.93, Cargo, rust-analyzer, Clippy, Rustfmt, Miri (інтэрпрэтаар для выяўлення нявызначаных паводзін), cargo-auditable (аўдыт зборак), GCC, Clang, LLD, pkg-config, Just, Git, Vim, Helix, Ripgrep, Hyperfin. Другая выява апроч гэтага ўтрымоўвае пакеты для распрацоўкі Ubuntu: git-buildpackage, sbuild, ubuntu-dev-tools, devscripts, dh-make, dh-cargo, autopkgtest, cargo-vendor-filterer.
Крыніца: opennet.ru

