Вышел Rust Coreutils 0.12. В релизе собрано много исправлений совместимости, основное внимание уделено проблемам, о которых сообщали пользователи и мейнтейнеры Ubuntu.

Проект предоставляет реализацию привычных команд GNU Coreutils на Rust, и Ubuntu теперь поставляет её как реализацию Coreutils по умолчанию. По словам разработчиков, версия 0.12 закрывает все проблемы, которые Ubuntu просила считать приоритетными в этом цикле.

Среди них ошибка, которая могла приводить к потере данных при параллельном запуске install -D, а также исправления для du на 32-битных системах, обработки ACL в ls, конфликтов имён при рекурсивном cp и поведения рекурсивного chmod с символическими ссылками.

Значительная часть релиза направлена на более точное соответствие поведению GNU Coreutils. Несколько команд теперь корректно принимают значения, начинающиеся с дефиса, там, где это делает GNU, включая параметры csplit, paste, join, stat и numfmt.

Также есть много исправлений для конкретных команд. rm больше не падает при работе с глубоко вложенными структурами каталогов, а sort -n теперь применяет числовую сортировку к выбранному ключу, а не ко всей строке. В cp исправлена обработка атрибутов, truncate поддерживает --io-blocks, и date принимает несколько параметров --reference.

Среди других утилит, получивших исправления совместимости с GNU: basename, realpath, ln, printf, test, echo, uniq, chgrp, factor, expr, od, tty, tsort и pathchk.

Результаты проекта в тестовом наборе GNU немного улучшились. Для справки: uutils Coreutils 0.12 сейчас проходит 653 теста, 21 тест завершается неудачей, ошибок нет. Если учитывать только запускаемые тесты, разработчики сообщают о 96,9% успешных прохождений. Это лучший результат на данный момент.

По части кросс-платформенной поддержки на Windows теперь можно собирать nice, nohup и hostid, а несколько утилит переведены на более безопасные стандартные API Rust. Слой файловой системы uucore на Windows переписан с использованием безопасных обёрток Win32.

Дополнительная работа выполнена для целевых платформ AIX, Haiku, GNU Hurd, NetBSD, WASI, macOS и OpenHarmony.

Что касается производительности, начиная с этого выпуска мейнтейнеры заявляют, что если утилита uutils работает значительно медленнее своего аналога из GNU, это считается ошибкой, а не возможной оптимизацией.

Подробнее в списке изменений.