Rust Coreutils 0.4 повышает совместимость с GNU до 85 %

Проект Rust Coreutils, целью которого является создание полноценной современной реализации GNU Core Utilities на языке Rust — основных инструментов командной строки, которые есть в каждой Linux- и Unix-подобной операционной системе, — объявил о выпуске версии 0.4.
Примечательно, что растущая зрелость проекта уже привела к его внедрению в некоторых дистрибутивах Linux, таких как Ubuntu 25.10 “Questing Quokka” и AerynOS, в которых теперь используются Rust Coreutils для некоторых системных утилит.
Версия 0.4 ещё на шаг приближает этот релиз к полной совместимости с GNU Coreutils. По словам разработчиков, последние результаты тестирования показывают, что 544 теста пройдены успешно, по сравнению с 532 тестами в предыдущей версии 0.3. Таким образом, общая совместимость выросла до 85,8 %, а количество неудачных тестов сократилось с 68 до 56.
Среди заметных улучшений — более корректная обработка часовых поясов в утилите date, что приближает её поведение к версии GNU, а также общие исправления для таких инструментов, как cat, comm, и readlink.
Несколько утилит также были оптимизированы для повышения производительности и стабильности. Команда factor теперь использует модуль num_prime для значительно более быстрой факторизации u64 и u128. Утилита tsort была переписана с использованием итеративного алгоритма поиска в глубину, что позволило устранить потенциальное переполнение стека в глубоко вложенных графах зависимостей.
Кроме того, инструмент cksum был значительно переработан: он получил поддержку эталонных тестов и алгоритмов SHA-2 и SHA-3. Он также интегрирует функции hashsum, которые теперь устарели, чтобы устранить расхождения в интерфейсе с реализацией GNU.
Другие утилиты также получили целевые исправления: mkdir теперь безопасно обрабатывает глубоко вложенные каталоги без переполнения стека, printf лучше справляется с большими форматами, а dd корректно обрабатывает частичную запись блоков при использовании O_DIRECT.
Кроме того, в Rust Coreutils 0.4.0 реализована более широкая кроссплатформенная совместимость: добавлена поддержка stdbuf и uptime в OpenBSD, а также улучшена сборка и тестирование в FreeBSD.
Полный список изменений и технические подробности см. в журнале изменений.
Редактор: AndreyEx