Вышла новая стабильная версия программы GNU Grep 2.21. За 25 недель 3 разработчика сделали 94 коммита.
Итогом их работы стали следующие улучшения:
- значительно увеличена скорость работы с файлами, содержащими пустые области, на тех платформах, где эффективно работает флаг SEEK_DATA системного вызова lseek;
- более эффективно обрабатываются случаи, когда данные не соответствуют первой части сложного паттерна;
- увеличена производительность при работе с очень длинными строками в паттернах:
- если файл содержит некорректные для текущей локали данные, и это удаётся обнаружить до того, как начался вывод, grep рассматривает данный файл как бинарный;
- grep -P больше не прекращает работу с сообщением об ошибке, если встречает некорректные данные в кодировке UTF-8, теперь эти данные просто считаются не соответствующими шаблону.
Также были внесены исправления ошибок:
- исправлена работа \w и \W в мнгогобайтовых локалях;
- исправлен подсчет строк при работе в не-UTF-8 многобайтовых локалях, для проверки предлагается запустить, например, seq 10 | env LC_ALL=zh_CN grep -n .." (ошибка появилась в версии 2.19);
- grep -F -x -o больше не печатает лишний символ новой строки для каждой «находки» (ошибка тоже появилась в 2.19);
- исправлена работа grep -F в многобайтовых не-UTF-8 локалях;
- изменена работа с непарными ')' в grep -E, для совместимости с BusyBox, FreeBSD, Solaris и вообще POSIX. Раньше было так: $ echo ')' | grep -E ')' grep: Unmatched ) or \) а теперь же всё работает;
- исправлена работа с символическими ссылками в NetBSD.
>>> Подробности