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 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 a 2 exit status code, regardless of whether a match is found or not. Previously, ripgrep would only emit a 2 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 a 0 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 to grep -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. The simd-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.