11.0.0
ripgrep 11 is a new major version release of ripgrep that contains many bug
fixes, some performance improvements and a few feature enhancements. Notably,
ripgrep's user experience for binary file filtering has been improved. See the
guide's new section on binary data for more details.
In case you haven't heard of it before, ripgrep is a line-oriented search
tool that recursively searches your current directory for a regex pattern. By
default, ripgrep will respect your .gitignore
and automatically skip hidden
files/directories and binary files.
This release also marks a change in ripgrep's versioning. Where as the previous
version was 0.10.0
, this version is 11.0.0
. Moving forward, ripgrep's
major version will be increased a few times per year. ripgrep will continue to
be conservative with respect to backwards compatibility, but may occasionally
introduce breaking changes, which will always be documented in this CHANGELOG.
See issue 1172 for a bit
more detail on why this versioning change was made.
This release increases the minimum supported Rust version from 1.28.0 to
1.34.0.
BREAKING CHANGES:
- ripgrep has tweaked its exit status codes to be more like GNU grep's. Namely,
if a non-fatal error occurs during a search, then ripgrep will now always
emit a2
exit status code, regardless of whether a match is found or not.
Previously, ripgrep would only emit a2
exit status code for a catastrophic
error (e.g., regex syntax error). One exception to this is if ripgrep is run
with-q/--quiet
. In that case, if an error occurs and a match is found,
then ripgrep will exit with a0
exit status code. - Supplying the
-u/--unrestricted
flag three times is now equivalent to
supplying--no-ignore --hidden --binary
. Previously,-uuu
was equivalent
to--no-ignore --hidden --text
. The difference is that--binary
disables
binary file filtering without potentially dumping binary data into your
terminal. That is,rg -uuu foo
should now be equivalent togrep -r foo
. - The
avx-accel
feature of ripgrep has been removed since it is no longer
necessary. All uses of AVX in ripgrep are now enabled automatically via
runtime CPU feature detection. Thesimd-accel
feature does remain available
(only for enabling SIMD for transcoding), however, it does increase
compilation times substantially at the moment.
Performance improvements:
Feature enhancements:
- Added or improved file type filtering for Apache Thrift, ASP, Bazel, Brotli,
BuildStream, bzip2, C, C++, Cython, gzip, Java, Make, Postscript, QML, Tex,
XML, xz, zig and zstd. - FEATURE #855:
Add--binary
flag for disabling binary file filtering. - FEATURE #1078:
Add--max-columns-preview
flag for showing a preview of long lines. - FEATURE #1099:
Add support for Brotli and Zstd to the-z/--search-zip
flag. - FEATURE #1138:
Add--no-ignore-dot
flag for ignoring.ignore
files. - FEATURE #1155:
Add--auto-hybrid-regex
flag for automatically falling back to PCRE2. - FEATURE #1159:
ripgrep's exit status logic should now match GNU grep. See updated man page. - FEATURE #1164:
Add--ignore-file-case-insensitive
for case insensitive ignore globs. - FEATURE #1185:
Add-I
flag as a short option for the--no-filename
flag. - FEATURE #1207:
Addnone
value to-E/--encoding
to forcefully disable all transcoding. - FEATURE da9d7204:
Add--pcre2-version
for querying showing PCRE2 version information.
Bug fixes:
- BUG #306,
BUG #855:
Improve the user experience for ripgrep's binary file filtering. - BUG #373,
BUG #1098:
**
is now accepted as valid syntax anywhere in a glob. - BUG #916:
ripgrep no longer hangs when searching/proc
with a zombie process present. - BUG #1052:
Fix bug where ripgrep could panic when transcoding UTF-16 files. - BUG #1055:
Suggest-U/--multiline
when a pattern contains a\n
. - BUG #1063:
Always strip a BOM if it's present, even for UTF-8. - BUG #1064:
Fix inner literal detection that could lead to incorrect matches. - BUG #1079:
Fixes a bug where the order of globs could result in missing a match. - BUG #1089:
Fix another bug where ripgrep could panic when transcoding UTF-16 files. - BUG #1091:
Add note about inverted flags to the man page. - BUG #1093:
Fix handling of literal slashes in gitignore patterns. - BUG #1095:
Fix corner cases involving the--crlf
flag. - BUG #1101:
Fix AsciiDoc escaping for man page output. - BUG #1103:
Clarify what--encoding auto
does. - BUG #1106:
--files-with-matches
and--files-without-match
work with one file. - BUG #1121:
Fix bug that was triggering Windows antimalware when using the--files
flag. - BUG #1125,
BUG #1159:
ripgrep shouldn't panic forrg -h | rg
and should emit correct exit status. - BUG #1144:
Fixes a bug where line numbers could be wrong on big-endian machines. - BUG #1154:
Windows files with "hidden" attribute are now treated as hidden. - BUG #1173:
Fix handling of**
patterns in gitignore files. - BUG #1174:
Fix handling of repeated**
patterns in gitignore files. - BUG #1176:
Fix bug where-F
/-x
weren't applied to patterns given via-f
. - BUG #1189:
Document cases where ripgrep may use a lot of memory. - BUG #1203:
Fix a matching bug related to the suffix literal optimization. - BUG 8f14cb18:
Increase the default stack size for PCRE2's JIT.