Выпуск набора утилит GNU Coreutils 9.5 и его варианта на языке Rust

Опубликована стабильная версия набора базовых системных утилит GNU Coreutils 9.5, в состав которого входят такие программы, как sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln, ls и т.д.

Ключевые новшества:

  • В утилитах cp, mv, install, cat и split проведена оптимизация операций записи и чтения. Размер минимального читаемого или записываемого блока увеличен с 128KiB до 256KiB, что привело к повышению пропускной способности при чтении прокэшированных файлов на 10-20%.
  • В утилиты env, kill и timeout добавлена поддержка неименованных сигналов.
  • За счёт исключения трансляции ненужных меток
    MCS/MLS повышена эффективность операций копирования при использовании в системе SELinux.
  • Сокращено время запуска утилиты sort за счёт прекращения динамического связывания с библиотекой libcrypto в ситуациях, когда не указана опция “-R”.
  • Значительно ускорена работа утилиты wc в окружениях с однобайтовыми локалями и немного ускорена на системах с многобайтовыми локалями.
  • В утилиту chgrp добавлена поддержка опции “–from=OWNER:GROUP” для применения изменений только к файлам с заданным владельцем и группой.
  • В утилите chmod по аналогии с утилитами chown и chmod реализованы опции “-h”, “-H”, “-L”, “-P” и “–dereference”, предоставляющие дополнительные возможности обработки символических ссылок.
  • В утилиту cp добавлена опция “–keep-directory-symlink” для сохранения и следования существующим символическим ссылкам на каталоги.
  • В утилиты cp и mv добавлена опция “–update=none-fail”, которая напоминает опцию “–no-clobber”, за исключением того, что выполнение завершается ошибкой если файлы уже существуют.
  • В утилиту env добавлена опция -a (–argv0) для переопределения нулевого параметра командной строки (путь к исполняемому файлу).
  • В утилиту mv добавлена опция “–exchange” для обмена содержимого источника и назначения (например, при выполнении “mv –exchange A B”, содержимое А и B поменяется местами, т.е. A переместится в B, а B в A).
  • В утилиту tail добавлена поддержка отслеживания вывода из нескольких процессов через повторное указание нескольких опций “–pid”.

Несколько дней назад также был опубликован выпуск проекта uutils coreutils 0.0.25, развивающего аналог пакета GNU Coreutils, переписанный на языке Rust. В состав coreutils входит более ста утилит, включая sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln и ls. Целью проекта является создание кроссплатформенной альтернативной реализации Coreutils, способной работать в том числе на платформах Windows, Redox и Fuchsia. В отличие от GNU Coreutils реализация на Rust распространяется под пермиссивной лицензией MIT, вместо копилефт-лицензии GPL.

В новой версии uutils в качестве эталонного задействован выпуск GNU Coreutils 9.4. Улучшена совместимость с эталонным тестовым набором GNU Coreutils, при прохождении которого успешно выполнено 437 теста (в прошлой версии 422), 117 (132) тестов завершилось неудачей, а 50 (50) тестов были пропущены. Обеспечена полная совместимость с GNU Coreutils для утилит base64, basename, cat, chgrp, chmod, chown, dirname, expand, fold, groups, join, ln, mktemp, nice, nl, nproc, paste, pathchk, printenv, realpath, shuf, sleep, split, sync, unexpand, uniq, wc и yes.

Расширены возможности, улучшена совместимость и добавлены недостающие опции для утилит base32, base64, basenc, basename, cat,
chcon, chmod, cksum, cp, csplit, cut, dd, df, du, echo, env, expand, factor, fmt, hashsum, install, ln, ls, more, numfmt, odd, printf, pr,
seq, shuf, sort, split, stat, tsort, tty, truncate, uname и uniq.


Release. Ссылка here.