ripgrep 12.1.1 is a patch release that fixes a couple small bugs. In
particular, the ripgrep 12.1.0 release did not tag new releases for all of its
in-tree dependencies. As a result, ripgrep built dependencies from crates.io
would produce a different build than compiling ripgrep from source on the
12.1.0 tag. Namely, some crates like grep-cli had unreleased changes.
Bug fixes:
--help.$0 capture group in docs for the -r/--replace flag.ripgrep 12.1.0 is a small minor version release that mostly includes bug fixes and documentation improvements. This release also contains some important notices for downstream packagers.
Notices for downstream ripgrep package maintainers:
a2x to asciidoctor to generate the man page.
If asciidoctor is not present, then ripgrep will currently fall back to
a2x. Support for a2x will be dropped in the ripgrep 13 release.
See #1544
for more details.Feature enhancements:
.Z files via uncompress.Bug fixes:
--pre flag to the GUIDE.$ when using --replace.asciidoctor instead of a2x to generate its man page.--type-{add,clear} docs.--count-matches output when using look-around.ripgrep 12.0.1 is a small patch release that includes a minor bug fix relating to superfluous error messages when searching git repositories with sub-modules. This was a regression introduced in the 12.0.0 release.
Bug fixes:
ripgrep 12 is a new major version release of ripgrep that contains many bug fixes, several important performance improvements and a few minor new features.
In a near future release, I am hoping to add an indexing feature to ripgrep, which will dramatically speed up searching by building an index. Feedback would very much be appreciated, especially on the user experience which will be difficult to get right.
This release has no known breaking changes.
Deprecations:
--no-pcre2-unicode flag is deprecated. Instead, use the --no-unicode
flag, which applies to both the default regex engine and PCRE2. For now,
--no-pcre2-unicode and --pcre2-unicode are aliases to --no-unicode
and --unicode, respectively. The --[no-]pcre2-unicode flags may be
removed in a future release.--auto-hybrid-regex flag is deprecated. Instead, use the new --engine
flag with the auto value.Performance improvements:
+Sherlock Holmes + now has Sherlock Holmes extracted instead
of .-w/--word-regexp flag is used.-w/--word-regexp flag.Feature enhancements:
--include-zero flag that shows files searched without matches.--no-context-separator flag that always hides context separators.--no-require-git flag to allow ripgrep to respect gitignores anywhere.--no-ignore-exclude to disregard rules in .git/info/exclude files.--no-ignore-files flag to disable all --ignore-file flags.--no-unicode flag. This works on all supported regex engines.Bug fixes:
--type all.-g/--glob flag./usr/share/fish/vendor_completions.d/rg.fish.ripgrep 11.0.2 is a new patch release that fixes a few bugs, including a
performance regression and a matching bug when using the -F/--fixed-strings
flag.
Feature enhancements:
--glob-case-insensitive flag that makes --glob behave as --iglob.Bug fixes:
-f file was stripped if it wasn't a \n.\n with -P/--pcre2..ignore and .rgignore more prominently in the README.--with-filename was sometimes enabled incorrectly.x86_64-linux binary release.-F flag when patterns contain meta characters.ripgrep 11.0.1 is a new patch release that fixes a search regression introduced in the previous 11.0.0 release. In particular, ripgrep can enter an infinite loop for some search patterns when searching invalid UTF-8.
Bug fixes:
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.
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:
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.-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.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:
--binary flag for disabling binary file filtering.--max-columns-preview flag for showing a preview of long lines.-z/--search-zip flag.--no-ignore-dot flag for ignoring .ignore files.--auto-hybrid-regex flag for automatically falling back to PCRE2.--ignore-file-case-insensitive for case insensitive ignore globs.-I flag as a short option for the --no-filename flag.none value to -E/--encoding to forcefully disable all transcoding.--pcre2-version for querying showing PCRE2 version information.Bug fixes:
** is now accepted as valid syntax anywhere in a glob./proc with a zombie process present.-U/--multiline when a pattern contains a \n.--crlf flag.--encoding auto does.--files-with-matches and --files-without-match work with one file.--files
flag.rg -h | rg and should emit correct exit status.** patterns in gitignore files.** patterns in gitignore files.-F/-x weren't applied to patterns given via -f.This is a new minor version release of ripgrep that contains some major new features, a huge number of bug fixes, and is the first release based on libripgrep. The entirety of ripgrep's core search and printing code has been rewritten and generalized so that anyone can make use of it.
Major new features include PCRE2 support, multi-line search and a JSON output format.
BREAKING CHANGES:
-w/--word-regexp have changed slightly. They used
to be \b(?:<your pattern>)\b, but now it's
(?:^|\W)(?:<your pattern>)(?:$|\W). This matches the behavior of GNU grep
and is believed to be closer to the intended semantics of the flag. See
#389 for more details.Feature enhancements:
grep.-U/--multiline flag that permits matching over multiple lines.-P/--pcre2 flag that gives support for look-around and backreferences.--json flag that prints results in a JSON Lines format.--one-file-system flag to skip directories on different file systems.--sort and --sortr flag for more sorting. Deprecate --sort-files.--crlf flag to permit $ to work with carriage returns on Windows.--trim flag strips prefix whitespace from all lines printed.--null-data flag, which makes ripgrep use NUL as a line terminator.--passthru flag now works with the --replace flag.--line-buffered and --block-buffered for forcing a buffer strategy.--pre-glob for filtering files through the --pre flag.Bug fixes:
-w/--word-regexp flag now works more intuitively.--passthru flag should not impact process exit status.ignore crate where first path was always treated as a symlink.--version output.-f in zsh.This is a new minor version release of ripgrep that contains some minor new features and a panoply of bug fixes.
Releases provided on Github for x86_64 will now work on all target CPUs, and
will also automatically take advantage of features found on modern CPUs (such
as AVX2) for additional optimizations.
This release increases the minimum supported Rust version from 1.20.0 to 1.23.0.
It is anticipated that the next release of ripgrep (0.10.0) will provide multi-line search support and a JSON output format.
BREAKING CHANGES:
--count and --only-matching are provided simultaneously, the
behavior of ripgrep is as if the --count-matches flag was given. That is,
the total number of matches is reported, where there may be multiple matches
per line. Previously, the behavior of ripgrep was to report the total number
of matching lines. (Note that this behavior diverges from the behavior of
GNU grep.)\1 as syntax for matching U+0001, but ripgrep will now report an
error instead.--line-number-width flag has been removed. Its functionality was not
carefully considered with all ripgrep output formats.
See #795 for more
details.Feature enhancements:
--stats flag, which emits aggregate statistics after search results.--no-ignore-messages flag, which suppresses parse errors from reading
.ignore and .gitignore files.\u{..} Unicode escape sequences.-b/--byte-offset flag that shows the byte offset of each matching line.--count-matches flag, which is like --count, but for each match.--no-column flag, which disables column numbers in the output.lz4 when using the -z/--search-zip flag.termcolor has moved to its own repository:
https://github.com/BurntSushi/termcolor--no-ignore-global, that permits disabling global
gitignores.--maxdepth to --max-depth for consistency. Keep --maxdepth for
backwards compatibility.--pre option to filter inputs with an arbitrary program.Bug fixes:
\s*{.--line-number-width by removing it.-f/--file flag.-S/--smart-case detection once and for all.ENOMEM errors returned by mmap.grep crate to regex-syntax 0.6.0.--quiet --files
is used.-z/--search-zip is used.--path separator / in some Windows
shells.--no-fixed-strings flag to disable -F/--fixed-strings.ignore crate that prevented the use of explicit ignore
files after disabling all other ignore rules.$XDG_CONFIG_DIR/git/config for detecting core.excludesFile.This is a patch release of ripgrep that primarily fixes regressions introduced in 0.8.0 (#820 and #824) in directory traversal on Windows. These regressions do not impact non-Windows users.
Feature enhancements:
underline support to termcolor and ripgrep. See documentation on the
--colors flag for details.Bug fixes:
--ignore-file flag.(rev ) if the revision wasn't available during the build.termcolor.ignore crate for custom ignore files. This had no impact
on ripgrep.rg --hidden . behaved differently from rg --hidden ./.This is a new minor version releae 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 and a FAQ.
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.
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.-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.[^...] is now equivalent to [!...] (indicating class
negation). Previously, ^ had no special significance in a character class.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:
-z/--search-zip flag.--line-number-width flag..rgignore files. (A higher precedent, application specific
version of .ignore.)-F/--fixed-strings flag on a regex syntax error.--passthru flag that causes ripgrep to print every line it reads.--no-text).Bug fixes:
!**/ in .gitignore.[^...] glob syntax (as identical to [!...]).--smart-case uppercase character detection.\x1B[0m instead of \x1B[m.yarn.lock from YAML file type./sys/devices/system/cpu/vulnerabilities/* files./.--max-columns=0 now disables the limit.--files-without-match.Maintenance fixes:
env_logger in favor of simpler logger to avoid many new dependencies.unsafe in globset. :tada: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!
This is a patch release of ripgrep that includes a fix to very bad regression introduced in ripgrep 0.7.0.
Bug fixes:
This is a new minor version release of ripgrep that includes mostly bug fixes.
ripgrep continues to require Rust 1.17, and there are no known breaking changes introduced in this release.
Feature enhancements:
-o/--only-matching and -r/--replace does the right thing.Bug fixes:
-m/--max-count flag is used.-r/--replace and terminal colors.This is a new minor version release of ripgrep that includes many bug fixes
and a few new features such as --iglob and -x/--line-regexp.
Note that this release increases the minimum supported Rust version from 1.12 to 1.17.
Feature enhancements:
--iglob flag that is like -g/--glob, but matches globs
case insensitively.-x/--line-regexp flag, which requires a match to span an entire line.ignore: add new matched_path_or_any_parents method.Bug fixes:
strip'd by default. This decreases
binary size by an order of magnitude.--quiet is passed, --files should be quiet.--vimgrep is passed, --with-filename should be enabled
automatically.-o/--only-matching
flag.wincolor: Re-fetch Windows console on all calls.--version now shows enabled compile-time features.encoding_rs when appropriate.-w/--word-regexp in the presence of capturing groups.Friends of ripgrep:
I'd like to give a big Thank You to @okdana for their recent hard work on
ripgrep. This includes new features like --line-regexp, heroic effort on
zsh auto-completion and thinking through some thorny argv issues with me.
I'd also like to thank @ericbn for their work on improving ripgrep's argv parsing by allowing some flags to override others.
Thanks @okdana and @ericbn!
Feature enhancements:
--regex-size-limit and --dfa-size-limit flags.Bug fixes:
--help output.-o/--only-matching flag.Feature enhancements:
-o/--only-matching flag.-0 short flag option for --null.Bug fixes:
-h/--help output.This is a new minor version release of ripgrep that includes one minor breaking change, bug fixes and several new features including support for text encodings other than UTF-8.
A notable accomplishment with respect to Rust is that ripgrep proper now only
contains a single unsafe use (for accessing the contents of a memory map).
The breaking change is:
Feature enhancements:
-E/--encoding flag was also added for latin-1, GBK, EUC-JP
and Shift_JIS, among others. The full list can be found here:
https://encoding.spec.whatwg.org/#concept-encoding-get-M/--max-columns flag that omits lines longer than the given
number of bytes. (Disabled by default!)--max-filesize, was added for limiting searches to files with
a maximum file size.Bug fixes:
-u/--unrestricted flags are aliases.$HOME/.config/git/ignore and not
$HOME/git/ignore.-g/--glob flag.{foo,bar,quux}) to regexes.-g/--glob flag.This is a new minor version release of ripgrep that includes a couple very minor breaking changes, a few new features and lots of bug fixes.
This version of ripgrep upgrades its regex dependency from 0.1 to 0.2,
which includes a few minor syntax changes:
[:upper:] would parse as the upper POSIX character class. Now it parses
as the character class containing the characters :upper:. The fix to this
change is to use [[:upper:]] instead. Note that variants like
[[:upper:][:blank:]] continue to work.[ must always be escaped inside a character class.&, - and ~ must be escaped if any one of them are
repeated consecutively. For example, [&], [\&], [\&\&], [&-&] are all
equivalent while [&&] is illegal. (The motivation for this and the prior
change is to provide a backwards compatible path for adding character class
set notation.)Feature enhancements:
--column flag now implies --line-number.--sort-files flag.--path-separator flag. Useful in cygwin.Bug fixes:
~ dependency on clap.globset crate docs.-q/--quiet was given.^C handling from ripgrep.-g/--glob clearer.memmap dependency in grep crate.-r/--replace.Feature enhancements:
Bug fixes:
rg foo and rg foo/ to have different behavior
when foo was a symlink.- couldn't be used with the
-e/--regexp flag. (This resolves a regression that was introduced in
ripgrep 0.3.0.)Bug fixes:
--colors foo:none correctly. Now it does.This is a new minor version release of ripgrep that includes two breaking changes with lots of bug fixes and some new features and performance improvements. Notably, if you had a problem with colors or piping on Windows before, then that should now be fixed in this release.
BREAKING CHANGES:
-e/--regexp flag can no longer accept a pattern starting with a -.
There are two work-arounds: rg -- -foo and rg [-]foo or rg -e [-]foo
will all search for the same -foo pattern. The cause of this was the move
from Docopt to Clap
for argument parsing.
This may get fixed in the
future..Performance improvements:
Feature enhancements:
-f/--file flag that causes ripgrep to read patterns from a file.--colors flag that enables one to customize the colors used in
ripgrep's output.--files-without-match flag that shows only file paths that contain
zero matches.Bug fixes:
TERM=screen.linux.--color=always will
emit colors regardless of the current environment.rg -h. The full help content can be
accessed with rg --help.--no-messages was used.Bug fixes:
0.2.7.)--ignore-file, ripgrep's memory usage would
grow without bound.Bug fixes:
4ca15a.Performance improvements:
bytecount library for counting new lines. In some
cases, ripgrep runs twice as fast. Use
RUSTFLAGS="-C target-cpu=native" cargo build --release --features 'simd-accel avx-accel'
to get the fastest possible binary.Feature enhancements:
--no-messages flag that suppresses error messages.
Note that rg foo 2> /dev/null also works.-m/--max-count flag that limits the total number of matches
printed for each file searched.Bug fixes:
-S/--smart-case wasn't being applied correctly to
literal optimizations.--help and --version. The repository URL is now also
in the output of --help and the man page.-.Feature enhancements:
Bug fixes:
-g/--glob flag in 0.2.5.Feature enhancements:
.git/info/exclude files.ignore
crate that encapsulates all of ripgrep's gitignore matching logic.Bug fixes:
^C.
Fixed in PR #187.SKIPPED.
Bug fixes:
Packaging updates:
ripgrep is now in homebrew-core. brew install ripgrep will do the trick
on a Mac.ripgrep is now in the Archlinux community repository.
pacman -S ripgrep will do the trick on Archlinux.globset.Feature enhancements:
ripgrep repo is now a Homebrew tap. This is useful for installing
SIMD accelerated binaries, which aren't available in homebrew-core.Bug fixes:
Feature enhancements:
Bug fixes:
Feature enhancements:
.rgignore to .ignore. Note that .rgignore is
still supported, but deprecated.{foo,bar} globs.Many many bug fixes. Thanks every for reporting these and helping make
ripgrep better! (Note that I haven't captured every tracking issue here,
some were closed as duplicates.)
./ when printing file paths.rg --help | echo caused rg to panic.foo/** should match contents of foo, but not foo itself.rg foo < /dev/null.!/dir weren't interpreted as anchored.