Вышел GNU Coreutils 9.12, новая стабильная версия базового набора утилит командной строки, который используется в большинстве Linux- и Unix-подобных систем.

Главное новшество: новая опция --env0-from=FILE для команды env, которая позволяет надёжнее сохранять и восстанавливать переменные окружения, включая менее распространённые или нестандартные записи.

Также заметно выросла скорость. Команда cut теперь может работать до четырёх раз быстрее на некоторых задачах обработки многобайтового текста, а uniq -c на поддерживаемых системах ускоряется до 2,5 раза.

Команда sort теперь эффективнее расходует доступную память и задействует параллельную обработку, если данные поступают из каналов или других источников с заранее неизвестным объёмом.

В uname появилась новая опция --all-labeled: она выводит системную информацию в более наглядном формате с подписями, размещая каждое значение на отдельной строке.

В Coreutils 9.12 также улучшен вывод необычных имён файлов и значений переменных окружения в терминале. Команды env, printenv, stat, basename, dirname, du, readlink и realpath теперь чаще применяют безопасное экранирование, что помогает избежать некорректного или сломанного вывода в терминале.

Несколько популярных рекурсивных команд стали надёжнее. chmod, chown, du, ls и другие больше не завершаются с ошибкой, если файлы удаляются во время обхода дерева каталогов.

При операциях с файлами cp, install и mv теперь чаще переключаются на обычное копирование, если не удаётся выполнить reflink-копирование, вместо того чтобы завершать работу с ошибкой.

Из заметных исправлений: tee больше не рискует зациклиться при определённых условиях записи, а в ptx устранены два случая, которые раньше могли приводить к бесконечному циклу.

Другие исправления затрагивают команды comm, date, du, factor, head, tail, ls, mv, printf, seq, shred, stty, truncate, uniq и wc.

Наконец, в сборочной конфигурации удалена старая опция --with-linux-crypto, а параметр --enable-systemd переименован в --with-systemd.

Подробнее см. анонс.