Project Release Information
Handling of very long lines as well as very long context line counts for the "-m", "-A", "-B", and "-C" options has been improved, removing some restrictions and avoiding core dumps. Recursive grep ("-r") without a file argument now defaults to using the current directory. The "--include", "--exclude", and "--exclude-dir" options now handle commandline arguments more consistently. More chances for infinite loops have been eliminated. Other minor changes and bugfixes have been made.
grep no longer mishandles high-bit-set pattern bytes on systems where "char" is a signed type (probably only affecting MS Windows). Command lines which potentially result in an infinite disk-filling loop are now rejected.
grep's interpretation of range expression is now more consistent with that of other tools. The exit status on memory allocation failure was fixed. "grep -P" no longer aborts when PCRE's backtracking limit is exceeded. Handling of regular expressions that match multibyte characters in brackets was made faster. Other minor bugs were fixed.
Commonly mistyped regular expressions are now detected and lead to an error unless POSIXLY_CORRECT is set. Regular expressions including back references are now significantly faster in multi-byte locales. Regular expressions including "." can now be significantly faster in UTF-8 locales (though not in other multi-byte locales). Several other minor bugs were fixed.
Massive improvements were made to the handling of multi-byte character sets, fixing many failures and increasing speed. The "-P" option now works more correctly. Whole-word matches with back-references were fixed. Several other bugs were fixed.
GNU grep is based on a fast lazy-state deterministic matcher (about twice as fast as stock Unix egrep) hybridized with a Boyer-Moore-Gosper search for a fixed string that eliminates impossible text from being considered by the full regexp matcher without necessarily having to look at every character. The result is typically many times faster than Unix grep or egrep.