Опубліковано випуск проекту 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 і виводить при запуску утиліт у терміналі наочні звіти про помилки з позначкою аргументів командного рядка, через які виникла проблема. Візуалізація помилок задіяна в утилітах 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

