ripgrep v0.8.0 Release Notes

Release Date: 2018-02-11 // about 6 years ago
  • ๐Ÿš€ This is a new minor version release of ripgrep that satisfies several popular ๐Ÿ”‹ feature requests (config files, search compressed files, true colors), fixes many bugs and improves the quality of life for ripgrep maintainers. This ๐Ÿ“š release also includes greatly improved documentation in the form of a ๐Ÿ™‹ [User Guide](GUIDE.md) and a [FAQ](FAQ.md).

    ๐Ÿ‘ This release increases the minimum supported Rust version from 1.17 to 1.20.

    ๐Ÿ’ฅ BREAKING CHANGES:

    Note that these are all very minor and unlikely to impact most users.

    • ๐Ÿ”ง In order to support configuration files, flag overrides needed to be rethought. In some cases, this changed ripgrep's behavior. For example, in ripgrep 0.7.1, rg foo -s -i will perform a case sensitive search since the -s/--case-sensitive flag was defined to always take precedence over the -i/--ignore-case flag, regardless of position. In ripgrep 0.8.0 however, the override rule for all flags has changed to "the most recent flag wins among competing flags." That is, rg foo -s -i now performs a case insensitive search.
    • The -M/--max-columns flag was tweaked so that specifying a value of 0 now makes ripgrep behave as if the flag was absent. This makes it possible to set a default value in a configuration file and then override it. The previous ripgrep behavior was to suppress all matching non-empty lines.
    • In all globs, [^...] is now equivalent to [!...] (indicating class negation). Previously, ^ had no special significance in a character class.
    • ๐Ÿ“ฆ For downstream packagers, the directory hierarchy in ripgrep's archive releases has changed. The root directory now only contains the executable, README and license. There is now a new directory called doc which contains the man page (previously in the root), a user guide (new), a FAQ (new) and the CHANGELOG (previously not included in release). The complete directory remains the same.

    ๐Ÿ”‹ Feature enhancements:

    • โž• Added or improved file type filtering for Apache Avro, C++, GN, Google Closure Templates, Jupyter notebooks, man pages, Protocol Buffers, Smarty and Web IDL.
    • FEATURE #196: Support a configuration file. See [the new user guide](GUIDE.md#configuration-file) for details.
    • FEATURE #261: Add extended or "true" color support. Works in Windows 10! [See the FAQ for details.](FAQ.md#colors)
    • FEATURE #539: Search gzip, bzip2, lzma or xz files when given -z/--search-zip flag.
    • FEATURE #544: Add support for line number alignment via a new --line-number-width flag.
    • FEATURE #654: Support linuxbrew in ripgrep's Brew tap.
    • FEATURE #673: Bring back .rgignore files. (A higher precedent, application specific version of .ignore.)
    • FEATURE #676: Provide ARM binaries. WARNING: This will be provided on a best effort basis.
    • FEATURE #709: Suggest -F/--fixed-strings flag on a regex syntax error.
    • FEATURE #740: Add a --passthru flag that causes ripgrep to print every line it reads.
    • FEATURE #785: Overhaul documentation. Cleaned up README, added user guide and FAQ.
    • FEATURE 7f5c07: Add hidden flags for convenient overrides (e.g., --no-text).

    ๐Ÿ› Bug fixes:

    • BUG #553: Permit flags to be repeated.
    • BUG #633: Fix a bug where ripgrep would panic on Windows while following symlinks.
    • BUG #649: Fix handling of !**/ in .gitignore.
    • BUG #663: BREAKING CHANGE: Support [^...] glob syntax (as identical to [!...]).
    • BUG #693: Don't display context separators when not printing matches.
    • BUG #705: Fix a bug that prevented ripgrep from searching OneDrive directories.
    • BUG #717: Improve --smart-case uppercase character detection.
    • BUG #725: Clarify that globs do not override explicitly given paths to search.
    • BUG #742: Write ANSI reset code as \x1B[0m instead of \x1B[m.
    • BUG #747: Remove yarn.lock from YAML file type.
    • BUG #760: ripgrep can now search /sys/devices/system/cpu/vulnerabilities/* files.
    • BUG #761: Fix handling of gitignore patterns that contain a /.
    • BUG #776: BREAKING CHANGE: --max-columns=0 now disables the limit.
    • BUG #779: Clarify documentation for --files-without-match.
    • BUG #780, BUG #781: Fix bug where ripgrep missed some matching lines.

    ๐Ÿšง Maintenance fixes:

    • MAINT #772: Drop env_logger in favor of simpler logger to avoid many new dependencies.
    • MAINT #772: Add git revision hash to ripgrep's version string.
    • MAINT #772: (Seemingly) improve compile times.
    • MAINT #776: Automatically generate man page during build.
    • MAINT #786: Remove use of unsafe in globset. :tada:
    • MAINT e9d448: Add an issue template (has already drastically improved bug reports).
    • MAINT ae2d03: Remove the compile script.

    Friends of ripgrep:

    I'd like to extend my gratitude to @balajisivaraman for their recent hard work in a number of areas, and in particular, for implementing the "search compressed files" feature. Their work in sketching out a specification for that and other work has been exemplary.

    Thanks @balajisivaraman!