Разработчики проекта uutils представили Coreutils 0.10. Этот релиз принёс самые значительные улучшения совместимости для инструментария командной строки на Rust, который стремится заменить GNU Coreutils.
Последние результаты тестов проекта показывают, что uutils Coreutils теперь проходит 645 из 690 тестов в тестовом наборе GNU, что увеличивает процент успешных тестов с 90,58% в версии 0.9 до 93,48%. Количество проваленных тестов сократилось с 56 до 29.
Это обновление включает множество изменений в поведении часто используемых утилит, таких как date, du, head, tail, install, ls, nproc, numfmt, od, pr, stat, sum и truncate. Также улучшена обработка ошибок: во многих случаях сообщения теперь последовательно содержат имя затронутого файла вместе с исходной ошибкой операционной системы, вместо общего описания.
В версии 0.10 разработчики продолжили работу по устранению состояний гонки типа TOCTOU (time-of-check-to-time-of-use). Изменения затронули утилиты touch, mkfifo, head, split и chcon, а рекурсивные операции chmod и chown стали более устойчивы к циклам символьных ссылок и попыткам обхода --preserve-root.
Также утилита cp больше не будет переходить в целевой подкаталог, указанный символьной ссылкой, а mv реализует дополнительные меры предосторожности при операциях между файловыми системами и при резервном копировании. SELinux-метки, создаваемые mkdir, mkfifo и mknod, теперь назначаются сразу при создании объекта файловой системы, а не на последующем шаге.
Ещё одна группа исправлений устраняет проблемы, включая сбои вывода при записи в устройства типа /dev/full, целочисленные переполнения из-за экстремальных аргументов, некорректные границы символов в многобайтовом вводе и чрезмерное выделение памяти. Парсер expr также переработан: теперь используется итеративный подход, чтобы избежать переполнения стека при глубоко вложенных выражениях.
Пользователям теперь доступна опция mv --exchange, которая позволяет атомарно обменять два пути файловой системы. Утилита install теперь включает --reflink для создания клонов с копированием при записи на совместимых файловых системах, а install -C можно использовать вместе с --preserve-timestamps.
В обновлении появилась опция rm --one-file-system, которая предотвращает рекурсивное удаление с выходом за пределы файловой системы, а также -O как сокращение для cut --output-delimiter. Утилиты контрольных сумм теперь могут использовать бэкенд OpenSSL для повышения производительности.
Улучшения производительности затронули ряд известных инструментов: у tee появилась быстрая опция без копирования, cat получил оптимизации пропускной способности, а копирование без reflink через cp также стало быстрее. Копирование между устройствами тоже может использовать улучшенный путь копирования.
Поддержка множества платформ продолжает расширяться. Версия uutils Coreutils 0.10 теперь включает поддержку цели wasm32-wasip2, а пользователи Windows получают работающую команду timeout и возможность отслеживать файлы с помощью tail -f и tail -F. Также для Windows добавлена поддержка разреженного копирования в cp и исправление контрольных сумм, связанное с преобразованием окончаний строк CRLF.
Подробнее см. список изменений.






Пока нет комментариев. Будьте первым!