Джим Мейеринг (Jim Meyering) объявил о выходе GNU Coreutils 8.13.
Новая версия включает более 200 коммитов от 18 разработчиков, а также более 1000 коммитов из gnulib, внесённых со времени выхода Coreutils 8.12.
Большее количество этих изменений направлено на усовершенствование кода, улучшение портируемости, добавление новых возможностей и лишь малая часть заключается в исправлении ошибок. Далее подробный перечень этих изменений:
Исправление ошибок:
- chown и chgrp теперь корректно работают с опциями -v и --from, то есть для файлов, которые не удовлетворяют указанным в --from UID:GID, выводится их текущий владелец, а не новый владелец остальных файлов (ошибка появилась в sh-utils-2.0g);
- cp -r ранее могла ошибочно изменить права доступа у существующих каталогов (ошибка из coreutils версии 6.8);
- cp -u -p до этого времени не удавалось предотвратить дублирование жёстких ссылок для каждой актуальной копии файла в пути назначения, то есть, если s/a и s/b являются жёсткими ссылками и файл dst/s/a актуален, cp -up s dst скопирует s/b в dst/s/b вместо того, чтобы просто создать ссылку с dst/s/b на dst/s/a (видимо, эта ошибка существует с самого начала);
- использование памяти утилитами rm, du, chmod, chgrp, chown, chcon больше не пропорционально числу файлов в каталоге, соответственно, если ранее работа с каталогом, содержащим 4 миллиона файлов, могла потребовать примерно 1 гигабайт оперативной памяти, то теперь требуется лишь около 30 мегабайт;
- pr -T более не игнорирует параметр LAST_PAGE — позицию, где нужно остановиться (ошибка появилась в textutils-1.19q);
- split --number l/... более не создаёт посторонних файлов (ошибка из coreutils-8.8);
- timeout теперь отправляет сигналы командам, создающим свои группы процессов, и нормально работает при запуске вместе с дочерним процессом (ошибка добавлена в версии 7.0 coreutils);
- unexpand -a теперь выравнивает правильно, если за пробелами следовал символ табуляции, поскольку в этом случае пробелы отбрасывались, приводя к нарушению выравнивания — введена проверка, не следует ли символ табуляции за пробелами (ошибка появилась в coreutils-5.3.0).
Изменения в поведении:
- cp -au при явном указании --preserve=links теперь может замещать более новые файлы в каталоге назначения, чтобы отображать жёсткие ссылки из источника;
- chmod, chown и chgrp теперь отображают оригинальные атрибуты, когда указываются опции -v и -c.
Новая функциональность:
- date теперь обрабатывает строки в формате ISO 8601 с «T» в качестве символа-разделителя, такие как «2004-02-29T16:21:42» или «2004-02-29T16:21:42.333-07:00» (с указанием часового пояса и долей секунды);
- md5sum, sha1sum, sha224sum, sha384sum и sha512sum с опциями --strict --check теперь возвращают ненулевой результат (выдают ошибку) при любой некорректной строке на входе, а не ограничиваются просто предупреждением;
- split --filter=CMD позволяет пропустить вывод команды через фильтр CMD; CMD в свою очередь может использовать значение переменной окружения $FILE, которая содержит имя выходного файла во время каждого запуска CMD, например, если мы хотим разбить файл на три приблизительно равные части и сжать их, то теперь это может быть сделано командой split -n3 --filter='xz > $FILE.xz' big (обратите внимание, что кавычки должны быть одинарными, а не двойными);
- timeout принимает новую опцию --foreground для поддержки команд, запускаемых не напрямую из командной строки, если команда интерактивна или должна получать сигналы из терминала.
Улучшения:
- cp -p теперь копирует тривиальные NFSv4 ACLs на Solaris 10 (ранее эта команда ошибочно применила бы нетривиальные ACL к файлу назначения);
- благодаря улучшениям в gnulib, cp и ls теперь поддерживают ACL в системе HP-UX 11.11;
- df теперь поддерживает дисковые разделы величиной более 4TiB в MacOS X 10.5 и новее и AIX 5.2 и новее;
- join --check-order теперь выводит сообщение «join: FILE:LINE_NUMBER: bad_line» для неотсортированного файла, а не просто «join: file 1 is not in sorted order»;
- shuf гораздо более эффективно выводит небольшие подмножества больших перестановок, например, `shuf -i1-$((2**32-1)) -n2' больше не потребляет память в непомерных количествах;
- stat -f теперь распознаёт файловые системы GPFS, MQUEUE и PSTOREFS;
- timeout теперь поддерживает доли секунды для задания интервалов.
Отказ от изменений:
- в cp не будет добавлен индикатор прогресса, эта функциональность признана излишней, а тем, кому такой индикатор необходим, рекомендовано использовать программу rsync.