
В конце августа 2026 года состоялся релиз открытого проекта Rust Coreutils 0.11.0 (uutils), развивающего аналог пакета GNU Coreutils, написанный на языке Rust. В состав coreutils входит более сотни утилит, включая wc, ls, tail, se, sort, cat, chmod, chown, chroot, cp, date, dd, du, install, echo, hostname, id, ln, ls и многие другие.
Целью проекта Rust Coreutils является создание кроссплатформенной альтернативной реализации Coreutils, способной работать в том числе на платформах Windows, Redox и Fuchsia.
Решение Rust Coreutils используется по умолчанию в дистрибутиве Ubuntu, начиная с выпуска 25.10. Также Rust Coreutils применяется в дистрибутивах AerynOS (Serpent OS) и Apertis (развивается компанией Collabora).
В отличие от GNU Coreutils реализация на Rust распространяется под пермиссивной лицензией MIT, вместо копилефт-лицензии GPL. Дополнительно команда разработчиков Rust Coreutils развивает написанные на Rust аналоги наборов утилит util-linux, diffutils, findutils, procps и acl, а также программ sed и login.
В версии Rust Coreutils 0.11.0 уровень совместимости с эталонным набором тестов GNU Coreutils составил 95.33% (было 94.44%). Успешно выполнено 653 теста, что на 8 больше, чем в прошлой версии (645). 22 теста завершились неудачей (было 29), а 15 тестов было пропущено (было 15).


Основные доработки и улучшения в Rust Coreutils 0.11.0 включают в себя «значительное» повышение производительности основных утилит, расширенную поддержку WebAssembly и использования интерфейса WebAssembly System Interface (WASI), усиление защиты от паник в крайних случаях и онлайн-площадку для демонстрации тестирования Rust Coreutils в веб-браузере с интерактивным терминалом, в котором можно запускать утилиты uutils. В новой версии Rust Coreutils также удалили больше небезопасного кода из различных основных утилит.
По информации OpenNET, изменения и дополнения в версии Rust Coreutils 0.11.0:
-
интегрирован новый движок для диагностики проблем, основанный на библиотеке ariadne и выводящий при запуске утилит в терминале наглядные отчёты об ошибках c пометкой аргументов командной строки, из‑за которых возникла проблема. Визуализация ошибок задействована в утилитах chmod, mkdir, mkfifo, mknod, install, tr, expr, sort, numfmt, cut, env, head, tail, truncate, split, shred, stdbuf, od, seq, dd, stat, join, csplit, ls, df и du. Для отключения диагностических отчётов предложена переменная окружения 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‑sys;
-
в утилиты ls и comm добавлена поддержка свойств локали «collation», позволяющих выполнять сопоставления с учётом смысла символов (например, при сравнении может не приниматься во внимание знак ударения);
-
улучшена работа с многобайтовыми символами в утилитах nl и cut.
Источник: habr.com