Новости по регионам

  1. Главная
  2. IT
  3. Выпуск Rust Coreutils 0.12.0

Выпуск Rust Coreutils 0.12.0

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 как ошибка, и в команде проекта его рассматривают как таковой.

source

Мировые новости

Меню