
В конце мая 2026 года состоялся релиз открытого проекта Rust Coreutils 0.9.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. Ранее команда проекта Ubuntu объявила об обнаруженной ошибке в версии команды date (на основе uutils на языке Rust), поставляемой с 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.9.0 уровень совместимости с эталонным набором тестов GNU Coreutils составил 90.58% (было 94.74%). Успешно выполнено 625 тестов, что на 5 меньше, чем в прошлой версии (630). 56 тестов завершилось неудачей (было 21), один тест привёл к ошибке, а 8 тестов было пропущено (было 14). Снижение уровня совместимости объясняется обновлением набора тестов до состояния выпуска GNU Coreutils 9.11, в котором добавлено 25 новых тестов.


Основные доработки и улучшения в Rust Coreutils 0.9.0 включают в себя «значительное» повышение производительности основных утилит, расширенную поддержку WebAssembly и использования интерфейса WebAssembly System Interface (WASI), усиление защиты от паник в крайних случаях и новую онлайн-площадку для демонстрации тестирования Rust Coreutils в веб-браузере с интерактивным терминалом, в котором можно запускать утилиты uutils. В новой версии Rust Coreutils также удалили больше небезопасного кода из различных основных утилит.
В новой версии Rust Coreutils:
устранены 44 уязвимости, выявленных в ходе аудита, проведённого компанией Zellic. Большинство уязвимостей вызвано расхождением поведения с GNU coreutils или состоянием гонки, позволяющим изменить данные в момент после проверки корректности информации, но до выполнения операции с ними, например, подменить файл на символическую ссылку в момент между завершением проверки и началом выполнения операции. В контексте использования утилит cp, chmod и mv в системных скриптах, запускаемых с правами root, подобные уязвимости позволяют скопировать или перезаписать произвольные файлы. Для защиты от уязвимостей, вызванных состоянием гонки в проекте задействован модуль uucore::safe_copy;
продолжен перевод утилит на crate‑пакет rustix вместо crate‑пакета nix. На rustix переведены утилиты id, tr, timeout, sort, wc, tail, cp, who и factor. Проведена чистка кода от unsafe‑операций в различных утилитах;
в утилитах cat, wc, head, tail, yes, cp, tee и unexpand задействованы обработчики ввода/вывода на базе системных вызовов splice(), tee() и pipe(), позволившие ускорить работу за счёт исключения лишнего копирования данных между буферами;
улучшена совместимость с GNU Coreutils утилит numfmt, date, tr, cksum, factor, head, stat и sort;
в утилиты ln, dd, mktemp и tty добавлена поддержка сборки в формате WebAssembly и использования интерфейса WASI (WebAssembly System Interface);
расширены возможности, устранены проблемы и добавлены недостающие опции для утилит 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.

