ripgrep v11.0.0 Release Notes
Release Date: 2019-04-15 // about 5 years ago-
๐ 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](GUIDE.md#binary-data) for more details.
๐ This release also marks a change in ripgrep's versioning. Where as the previous ๐ version was
0.10.0
, this version is11.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 a
2
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:
Add
none
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 for
rg -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.
- 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 a