Дата публикации:Mon, 10 Nov 2025 10:51:05 +0300
Опубликован выпуск проекта uutils coreutils 0.4.0 (Rust Coreutils), развивающего аналог пакета GNU Coreutils, написанный на языке Rust. В состав coreutils входит более ста утилит, включая sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln и ls. Целью проекта является создание кроссплатформенной альтернативной реализации Coreutils, среди прочего способной работать на платформах Windows, Redox и Fuchsia.
Rust Coreutils задействован по умолчанию в выпуске Ubuntu 25.10 и применяется в дистрибутивах AerynOS (Serpent OS) и Apertis (развивается компанией Collabora). В отличие от GNU Coreutils реализация на Rust распространяется под пермиссивной лицензией MIT, вместо копилефт-лицензии GPL. Дополнительно той же командой разработчиков развиваются написанные на Rust аналоги наборов утилит util-linux, diffutils, findutils и procps, а также программ sed и login.
В новой версии Rust Coreutils:
- Улучшена совместимость с эталонным тестовым набором GNU Coreutils, при прохождении которого успешно выполнено 544 теста, что на 12 больше, чем в прошлой версии (532). 56 (68) тестов завершилось неудачей, а 33 (33) теста было пропущено. Заявлен уровень совместимости 85.80% (было 83.91%). В утилите data улучшена совместимость в GNU date при обработке часовых поясов (добавлена возможность указания сокращённых наименований часовых поясов в опции --set). В утилите factor задействован пакет num_prime для ускорения факторизации типов u64/u128. В утилите tsort реализация алгоритма обхода DFS переведена с рекурсивного на итеративный метод работы для предотвращения переполнения стека. В утилите cksum реализована поддержка хэшей sha2 и sha3. Добавлены тесты для отслеживания изменения производительности cksum. Функциональность hashsum перенесена в cksum. В утилите mkdir устранено переполнение стека, приводящее к аварийному завершению при создании большого (200+) числа вложенных каталогов. У утилитах stdbuf и uptime реализована поддержка платформы OpenBSD. Улучшена сборка и тестирование на платформе FreeBSD. Внесены общие улучшения для повышения переносимости. Расширены возможности, устранены проблемы и добавлены недостающие опции для утилит base64, cat, chown, chsum, date, dd, du, factor, hashsum, install, ls, mkdir, od, printenv, printf, readlink, stdbuf, timeout, truncate, tsort, uptime, uudoc.
Разное поведение наблюдается при указании в числе аргументов утилиты "du" нескольких каталогов в ситуации, когда некоторые из каталогов являются подкаталогами других каталогов (например, /var и /var/log). Uutils показывает фактический размер каждого отдельного каталога, а в итоговой строке выводит суммарный размер всех указанных каталогов. GNU Coreutils показывает в итоговой строке фактический размер, который указанные каталоги занимают на диске, но в раздельном списке показывает размеры каждого каталога с вычетом вложенных каталогов, из-за чего их размер получается меньше фактического. Кроме того, значения, выводимые в GNU Coreutils и Busybox, меняются в зависимости от порядка указания каталогов.
Например, при проверке размера каталогов "/var/log" и "/var", фактический размер которых 1540 и 35495 байт, в GNU Coreutils будет выведено:
du -smc /var/log /var 1540 /var/log 33955 /var # меньше фактического 35495 total du -smc /var /var/log 35495 /var # показан только /var и не показан /var/log 35495 total В uutils:
du -smc /var/log /var 1540 /var/log 35495 /var 37033 total # больше фактического, но соответствует сумме /var и /var/log du -smc /var /var/log 35495 /var 1540 /var/log 37033 total # больше фактического, но соответствует сумме /var и /var/log В Busybox:
du -smc /var/log /var 1540 /var/log 33955 /var # меньше фактического 35495 total du -smc /var /var/log 35495 /var # показан только /var и не показан /var/log 35495 total
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=64214