
17 сентября 2026 года состоялся релиз открытого проекта Rust Coreutils 0.12.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.12.0 уровень совместимости с эталонным набором тестов GNU Coreutils составил 94.36% (было 95.33%). Успешно выполнено 653 теста. 21 тест завершился неудачей (было 22), а 18 тестов было пропущено (было 10).


Основные доработки и улучшения в Rust Coreutils 0.11.0 включают в себя «значительное» повышение производительности основных утилит, расширенную поддержку WebAssembly и использования интерфейса WebAssembly System Interface (WASI), усиление защиты от паник в крайних случаях и онлайн-площадку для демонстрации тестирования Rust Coreutils в веб-браузере с интерактивным терминалом, в котором можно запускать утилиты uutils. В новой версии Rust Coreutils также удалили больше небезопасного кода из различных основных утилит.
Основные изменения и дополнения в версии Rust Coreutils 0.12.0:
-
устранены проблемы, исправление которых в первую очередь запрашивала команда Ubuntu:
-
потеря данных при параллельной установке с флагом ‑D;
-
работа команды du на 32-битных архитектурах;
-
разыменование ACL в команде ls;
-
конфликты имен при выполнении cp ‑R;
-
обработка символических ссылок командой chmod ‑R;
-
целый ряд опций теперь поддерживает значения, начинающиеся с дефиса (по аналогии с реализацией GNU): csplit —suffix-format, paste -d, join -t, stat —format/—printf/-c, а также все опции утилиты numfmt;
-
команда rm больше не вызывает ошибку сегментации при обработке очень глубоко вложенных каталогов;
-
sort -n применяется к ключу сортировки, а не ко всей строке; строки, не поддающиеся числовой сортировке, выводятся в исходном виде (а не преобразуются в числа); временные файлы входных данных больше не удерживаются открытыми на протяжении всего процесса сортировки;
-
исправлена обработка завершающих разделителей в basename для компонентов, начинающихся с точки;
-
добавлены опции fmt -x/-X; printf теперь воспринимает — после строки формата как обычный аргумент;
-
test отвергает опции ‑a/‑o, если они завершают выражение;
-
echo ‑e больше не интерпретирует последовательности u, U и » ls:
-
исправлена работа в режиме dired;
-
при совпадении временных меток сортировка теперь дополнительно выполняется по имени;
-
сортировка по имени работает и при использовании опций ‑u/‑c в длинном формате вывода;
-
маркеры возможностей (capabilities) теперь учитывают настройки разыменования ссылок;
-
dir и vdir используют стандартный для GNU стиль экранирования имен
-
сообщения об ошибках и коды завершения команд uniq, chgrp, factor, date, expr, od, tty, tsort и pathchk приведены в соответствие с реализацией GNU
-
в truncate наконец реализована поддержка ‑io‑blocks, а date теперь принимает несколько опций ‑reference.
-
-
повышение безопасности:
-
ls: ошибки stat() при обработке элементов каталога теперь сообщаются явно, а не скрываются (ранее могли отображаться неверные метаданные)
-
sort: временные файлы создаются с правами доступа 0600 (игнорируя umask); выходной файл (при использовании ‑o) также создаётся с ограниченным доступом; теперь сообщается об ошибках усечения выходного файла
-
install: целевой файл (при указании дескриптора) создаётся в монопольном режиме с правами доступа 0600
-
rm, chmod, chown, chgrp: опция ‑preserve‑root сравнивает пары (st_dev, st_ino), а не пути к файлам
-
chcon обходит каталоги с использованием DirFd вместо fts
-
в файле SECURITY.md теперь указано, что для признания проблемы уязвимостью требуется выход за границы допустимого доступа (boundary crossing), а не просто расхождение в поведении с реализацией GNU
-
-
улучшение производительности:
-
добавлены тесты производительности для операций переполнения кэша, проверки и использования разделяемых префиксов; тесты du теперь предварительно прогревают кэш страниц ОС перед измерением времени выполнения;
-
cp избегает разрешения текущего рабочего каталога для абсолютных рекурсивных копий; tsort предоставляет ОС подсказку о последовательном доступе;
-
значительный разрыв в производительности с GNU теперь указан в файле README как ошибка, и в команде проекта его рассматривают как таковой.
-











