GNU Grep 2.15
26 октября вышла новая версия программы GNU Grep — 2.15. Выпуск связан главным образом с исправлением ошибок. Прошло 62 недели, за это время 9 человек сделали 57 коммитов.
Были исправлены следующие ошибки:
\s и \S неправильно работали с пробельными символами длиной в несколько байт. Например, выражение \s неправильно работало с неразрывным пробелом. Например, вот: printf '\xc2\xa0' | LC_ALL=ru_RU.UTF-8 grep '\s'. Ошибка появилась в версии 2.6; grep -i могла вызывать ошибку сегментирования в системах, использующих wahct_t, основанный на кодировке UTF-16 (например, Cygwin). Ошибка возникала, когда нужно было перевести в нижний регистр входную строку, содержащую определенную 4-байтовую последовательность (ошибка присутствовала с версии 2.6, но проявляться в виде ошибки сегментирования начала только в версии 2.!3; grep -E могла завершиться с ошибкой сегментирования при обработе регулярных выражений вида '([^.]*[M]){1,2}', где M — многобайтовый символ. Ошибка появилась в версии 2.6, пропала в версиях 2.7 и 2.8. Все версии, начиная с 2.9, работают с ошибкой; grep -F могла попадать в бесконечный цикл, когда искомая строка содержит некорректную в текущей локали последовательность байтов: grep -P могла работать неправильно с многобайтовыми символами. Новые улучшения:
grep -P теперь использует jit-компиляцию, что значительно ускоряет работу. Это реализовано совершенно прозрачно для пользователя, не нужно устанавливать никаких флагов и т.п. Эта возможность включается на этапе компиляции, если обнаружена подходящая версия библиотеки pcre. gnu, grep