I was comparing the work being done by fd and find and noticed (with `strace -f -c -S` calls) that fd was doing a ton of failed `statx` calls. Upon closer inspection it was stating `.jj` even though I was passing `--no-ignore`. Eventually I turned up this check in `Ignore::add_child_path` that was doing stat on `.jj` regardless of whether the options request it. With this patch it'll only stat `.jj` if that's relevant to the query. PR #3212
87 KiB
TBD
Unreleased changes. Release notes have not yet been written.
Bug fixes:
- BUG #3212:
Don't check for the existence of
.jjwhen--no-ignoreis used.
15.1.0
This is a small release that fixes a bug with how ripgrep handles line
buffering. This might manifest as ripgrep printing output later than you
expect or not working correctly with tail -f (even if you're using the
--line-buffered flag).
Bug fixes:
- BUG #3194:
Fix a regression with
--line-bufferedintroduced in ripgrep 15.0.0.
Feature enhancements:
- FEATURE #3192: Add hyperlink alias for Cursor.
15.0.0 (2025-10-15)
ripgrep 15 is a new major version release of ripgrep that mostly has bug fixes, some minor performance improvements and minor new features. Here are some highlights:
- Several bugs around gitignore matching have been fixed. This includes a commonly reported bug related to applying gitignore rules from parent directories.
- A memory usage regression when handling very large gitignore files has been fixed.
rg -vf file, wherefileis empty, now matches everything.- The
-r/--replaceflag now works with--json. - A subset of Jujutsu (
jj) repositories are now treated as if they were git repositories. That is, ripgrep will respectjj's gitignores. - Globs can now use nested curly braces.
Platform support:
aarch64for Windows now has release artifacts.powerpc64no longer has release artifacts generated for it. The CI release workflow stopped working, and I didn't deem it worth my time to debug it. If someone wants this and can test it, I'd be happy to add it back.- ripgrep binaries are now compiled with full LTO enabled. You may notice small performance improvements from this and a modest decrease in binary size.
Performance improvements:
- PERF #2111:
Don't resolve helper binaries on Windows when
-z/--search-zipisn't used. - PERF #2865: Avoid using path canonicalization on Windows when emitting hyperlinks.
Bug fixes:
- BUG #829, BUG #2731, BUG #2747, BUG #2770, BUG #2778, BUG #2836, BUG #2933, BUG #3067: Fix bug related to gitignores from parent directories.
- BUG #1332,
BUG #3001:
Make
rg -vf filewherefileis empty match everything. - BUG #2177:
Ignore a UTF-8 BOM marker at the start of
.gitignore(and similar files). - BUG #2750: Fix memory usage regression for some truly large gitignore files.
- BUG #2944:
Fix a bug where the "bytes searched" in
--statsoutput could be incorrect. - BUG #2990:
Fix a bug where ripgrep would mishandle globs that ended with a
.. - BUG #2094,
BUG #3076:
Fix bug with
-m/--max-countand-U/--multilineshowing too many matches. - BUG #3100:
Preserve line terminators when using
-r/--replaceflag. - BUG #3108:
Fix a bug where
-q --files-without-matchinverted the exit code. - BUG #3131:
Document inconsistency between
-c/--countand--files-with-matches. - BUG #3135: Fix rare panic for some classes of large regexes on large haystacks.
- BUG #3140: Ensure hyphens in flag names are escaped in the roff text for the man page.
- BUG #3155:
Statically compile PCRE2 into macOS release artifacts on
aarch64. - BUG #3173: Fix ancestor ignore filter bug when searching whitelisted hidden files.
- BUG #3178:
Fix bug causing incorrect summary statistics with
--jsonflag. - BUG #3179: Fix gitignore bug when searching absolute paths with global gitignores.
- BUG #3180:
Fix a panicking bug when using
-U/--multilineand-r/--replace.
Feature enhancements:
- Many enhancements to the default set of file types available for filtering.
- FEATURE #1872:
Make
-r/--replacework with--json. - FEATURE #2708: Completions for the fish shell take ripgrep's config file into account.
- FEATURE #2841:
Add
italicto the list of available style attributes in--color. - FEATURE #2842:
Directories containing
.jjare now treated as git repositories. - FEATURE #2849: When using multithreading, schedule files to search in order given on CLI.
- FEATURE #2943:
Add
aarch64release artifacts for Windows. - FEATURE #3024:
Add
highlightcolor type, for styling non-matching text in a matching line. - FEATURE #3048:
Globs in ripgrep (and the
globsetcrate) now support nested alternates. - FEATURE #3096:
Improve completions for
--hyperlink-formatin bash and fish. - FEATURE #3102:
Improve completions for
--hyperlink-formatin zsh.
14.1.1 (2024-09-08)
This is a minor release with a bug fix for a matching bug. In particular, a bug
was found that could cause ripgrep to ignore lines that should match. That is,
false negatives. It is difficult to characterize the specific set of regexes
in which this occurs as it requires multiple different optimization strategies
to collide and produce an incorrect result. But as one reported example, in
ripgrep, the regex (?i:e.x|ex) does not match e-x when it should. (This
bug is a result of an inner literal optimization performed in the grep-regex
crate and not in the regex crate.)
Bug fixes:
- BUG #2884: Fix bug where ripgrep could miss some matches that it should report.
Miscellaneous:
- MISC #2748:
Remove ripgrep's
simd-accelfeature because it was frequently broken.
14.1.0 (2024-01-06)
This is a minor release with a few small new features and bug fixes. This
release contains a bug fix for unbounded memory growth while walking a
directory tree. This release also includes improvements to the completions for
the fish shell, and release binaries for several additional ARM targets.
Bug fixes:
- BUG #2664:
Fix unbounded memory growth in the
ignorecrate.
Feature enhancements:
- Added or improved file type filtering for Lean and Meson.
- FEATURE #2684:
Improve completions for the
fishshell. - FEATURE #2702:
Add release binaries for
armv7-unknown-linux-gnueabihf,armv7-unknown-linux-musleabihfandarmv7-unknown-linux-musleabi.
14.0.3 (2023-11-28)
This is a patch release with a bug fix for the --sortr flag.
Bug fixes:
- BUG #2664:
Fix
--sortr=path. I left atodo!()in the source. Oof.
14.0.2 (2023-11-27)
This is a patch release with a few small bug fixes.
Bug fixes:
- BUG #2654:
Fix
debrelease sha256 sum file. - BUG #2658:
Fix partial regression in the behavior of
--null-data --line-regexp. - BUG #2659: Fix Fish shell completions.
- BUG #2662:
Fix typo in documentation for
-i/--ignore-case.
14.0.1 (2023-11-26)
This a patch release meant to fix cargo install ripgrep on Windows.
Bug fixes:
- BUG #2653:
Include
pkg/windows/Manifest.xmlin crate package.
14.0.0 (2023-11-26)
ripgrep 14 is a new major version release of ripgrep that has some new features, performance improvements and a lot of bug fixes.
The headlining feature in this release is hyperlink support. In this release,
they are an opt-in feature but may change to an opt-out feature in the future.
To enable them, try passing --hyperlink-format default. If you use VS Code,
then try passing --hyperlink-format vscode. Please report your experience
with hyperlinks, positive or negative.
Another headlining development in this release is that it contains a rewrite of its regex engine. You generally shouldn't notice any changes, except for some searches may get faster. You can read more about the regex engine rewrite on my blog. Please report your performance improvements or regressions that you notice.
Finally, ripgrep switched the library it uses for argument parsing. Users
should not notice a difference in most cases (error messages have changed
somewhat), but flag overrides should generally be more consistent. For example,
things like --no-ignore --ignore-vcs work as one would expect (disables all
filtering related to ignore rules except for rules found in version control
systems such as git).
BREAKING CHANGES:
rg -C1 -A2used to be equivalent torg -A2, but now it is equivalent torg -B1 -A2. That is,-Aand-Bno longer completely override-C. Instead, they only partially override-C.
Build process changes:
- ripgrep's shell completions and man page are now created by running ripgrep
with a new
--generateflag. For example,rg --generate manwill write a man page inroffformat on stdout. The release archives have not changed. - The optional build dependency on
asciidocorasciidoctorhas been dropped. Previously, it was used to produce ripgrep's man page. ripgrep now owns this process itself by writingroffdirectly.
Performance improvements:
- PERF #1746: Make some cases with inner literals faster.
- PERF #1760:
Make most searches with
\blook-arounds (among others) much faster. - PERF #2591: Parallel directory traversal now uses work stealing for faster searches.
- PERF #2642: Parallel directory traversal has some contention reduced.
Feature enhancements:
- Added or improved file type filtering for Ada, DITA, Elixir, Fuchsia, Gentoo, Gradle, GraphQL, Markdown, Prolog, Raku, TypeScript, USD, V
- FEATURE #665:
Add a new
--hyperlink-formatflag that turns file paths into hyperlinks. - FEATURE #1709: Improve documentation of ripgrep's behavior when stdout is a tty.
- FEATURE #1737: Provide binaries for Apple silicon.
- FEATURE #1790:
Add new
--stop-on-nonmatchflag. - FEATURE #1814:
Flags are now categorized in
-h/--helpoutput and ripgrep's man page. - FEATURE #1838: An error is shown when searching for NUL bytes with binary detection enabled.
- FEATURE #2195:
When
extra-verbosemode is enabled in zsh, show extra file type info. - FEATURE #2298:
Add instructions for installing ripgrep using
cargo binstall. - FEATURE #2409:
Added installation instructions for
winget. - FEATURE #2425:
Shell completions (and man page) can be created via
rg --generate. - FEATURE #2524:
The
--debugflag now indicates whether stdin or./is being searched. - FEATURE #2643:
Make
-da short flag for--max-depth. - FEATURE #2645:
The
--versionoutput will now also contain PCRE2 availability information.
Bug fixes:
- BUG #884:
Don't error when
-v/--invert-matchis used multiple times. - BUG #1275:
Fix bug with
\bassertion in the regex engine. - BUG #1376:
Using
--no-ignore --ignore-vcsnow works as one would expect. - BUG #1622:
Add note about error messages to
-z/--search-zipdocumentation. - BUG #1648:
Fix bug where sometimes short flags with values, e.g.,
-M 900, would fail. - BUG #1701: Fix bug where some flags could not be repeated.
- BUG #1757: Fix bug when searching a sub-directory didn't have ignores applied correctly.
- BUG #1891:
Fix bug when using
-wwith a regex that can match the empty string. - BUG #1911: Disable mmap searching in all non-64-bit environments.
- BUG #1966: Fix bug where ripgrep can panic when printing to stderr.
- BUG #2046:
Clarify that
--precan accept any kind of path in the documentation. - BUG #2108:
Improve docs for
-r/--replacesyntax. - BUG #2198:
Fix bug where
--no-ignore-dotwould not ignore.rgignore. - BUG #2201:
Improve docs for
-r/--replaceflag. - BUG #2288:
-Aand-Bnow only each partially override-C. - BUG #2236:
Fix gitignore parsing bug where a trailing
\/resulted in an error. - BUG #2243:
Fix
--sortflag for values other thanpath. - BUG #2246:
Add note in
--debuglogs when binary files are ignored. - BUG #2337:
Improve docs to mention that
--statsis always implied by--json. - BUG #2381:
Make
-p/--prettyoverride flags like--no-line-number. - BUG #2392:
Improve global git config parsing of the
excludesFilefield. - BUG #2418:
Clarify sorting semantics of
--sort=path. - BUG #2458:
Make
--trimrun before-M/--max-columnstakes effect. - BUG #2479:
Add documentation about
.ignore/.rgignorefiles in parent directories. - BUG #2480:
Fix bug when using inline regex flags with
-e/--regexp. - BUG #2505:
Improve docs for
--vimgrepby mentioning footguns and some work-arounds. - BUG #2519:
Fix incorrect default value in documentation for
--field-match-separator. - BUG #2523:
Make executable searching take
.cominto account on Windows. - BUG #2574:
Fix bug in
-w/--word-regexpthat would result in incorrect match offsets. - BUG #2623:
Fix a number of bugs with the
-w/--word-regexpflag. - BUG #2636: Strip release binaries for macOS.
13.0.0 (2021-06-12)
ripgrep 13 is a new major version release of ripgrep that primarily contains bug fixes, some performance improvements and a few minor breaking changes. There is also a fix for a security vulnerability on Windows (CVE-2021-3013).
Some highlights:
A new short flag, -., has been added. It is an alias for the --hidden flag,
which instructs ripgrep to search hidden files and directories.
ripgrep is now using a new
vectorized implementation of memmem,
which accelerates many common searches. If you notice any performance
regressions (or major improvements), I'd love to hear about them through an
issue report!
Also, for Windows users targeting MSVC, Cargo will now build fully static executables of ripgrep. The release binaries for ripgrep 13 have been compiled using this configuration.
BREAKING CHANGES:
Binary detection output has changed slightly.
In this release, a small tweak has been made to the output format when a binary file is detected. Previously, it looked like this:
Binary file FOO matches (found "\0" byte around offset XXX)
Now it looks like this:
FOO: binary file matches (found "\0" byte around offset XXX)
vimgrep output in multi-line now only prints the first line for each match.
See issue 1866 for more discussion on this. Previously, every line in a match was duplicated, even when it spanned multiple lines. There are no changes to vimgrep output when multi-line mode is disabled.
In multi-line mode, --count is now equivalent to --count-matches.
This appears to match how pcre2grep implements --count. Previously, ripgrep
would produce outright incorrect counts. Another alternative would be to simply
count the number of lines---even if it's more than the number of matches---but
that seems highly unintuitive.
FULL LIST OF FIXES AND IMPROVEMENTS:
Security fixes:
- CVE-2021-3013:
Fixes a security hole on Windows where running ripgrep with either the
-z/--search-zipor--preflags can result in running arbitrary executables from the current directory. - VULN #1773: This is the public facing issue tracking CVE-2021-3013. ripgrep's README now contains a section describing how to report a vulnerability.
Performance improvements:
- PERF #1657: Check if a file should be ignored first before issuing stat calls.
- PERF memchr#82:
ripgrep now uses a new vectorized implementation of
memmem.
Feature enhancements:
- Added or improved file type filtering for ASP, Bazel, dvc, FlatBuffers, Futhark, minified files, Mint, pofiles (from GNU gettext) Racket, Red, Ruby, VCL, Yang.
- FEATURE #1404: ripgrep now prints a warning if nothing is searched.
- FEATURE #1613: Cargo will now produce static executables on Windows when using MSVC.
- FEATURE #1680:
Add
-.as a short flag alias for--hidden. - FEATURE #1842:
Add
--field-{context,match}-separatorfor customizing field delimiters. - FEATURE #1856: The README now links to a Spanish translation.
Bug fixes:
- BUG #1277: Document cygwin path translation behavior in the FAQ.
- BUG #1739: Fix bug where replacements were buggy if the regex matched a line terminator.
- BUG #1311:
Fix multi-line bug where a search & replace for
\ndidn't work as expected. - BUG #1401:
Fix buggy interaction between PCRE2 look-around and
-o/--only-matching. - BUG #1412: Fix multi-line bug with searches using look-around past matching lines.
- BUG #1577: Fish shell completions will continue to be auto-generated.
- BUG #1642:
Fixes a bug where using
-mand-Aprinted more matches than the limit. - BUG #1703:
Clarify the function of
-u/--unrestricted. - BUG #1708:
Clarify how
-S/--smart-caseworks. - BUG #1730: Clarify that CLI invocation must always be valid, regardless of config file.
- BUG #1741: Fix stdin detection when using PowerShell in UNIX environments.
- BUG #1756:
Fix bug where
foo/**would matchfoo, but it shouldn't. - BUG #1765:
Fix panic when
--crlfis used in some cases. - BUG #1638: Correctly sniff UTF-8 and do transcoding, like we do for UTF-16.
- BUG #1816:
Add documentation for glob alternate syntax, e.g.,
{a,b,..}. - BUG #1847:
Clarify how the
--hiddenflag works. - BUG #1866:
Fix bug when computing column numbers in
--vimgrepmode. - BUG #1868:
Fix bug where
--passthruand-A/-B/-Cdid not override each other. - BUG #1869:
Clarify docs for
--files-with-matchesand--files-without-match. - BUG #1878:
Fix bug where
\Acould produce unanchored matches in multiline search. - BUG 94e4b8e3:
Fix column numbers with
--vimgrepis used with-U/--multiline.
12.1.1 (2020-05-29)
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:
- BUG #1581:
Corrects some egregious markup output in
--help. - BUG #1591:
Mention the special
$0capture group in docs for the-r/--replaceflag. - BUG #1602: Fix failing test resulting from out-of-sync dependencies.
12.1.0 (2020-05-09)
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:
- Fish shell completions will be removed in the ripgrep 13 release. See #1577 for more details.
- ripgrep has switched from
a2xtoasciidoctorto generate the man page. Ifasciidoctoris not present, then ripgrep will currently fall back toa2x. Support fora2xwill be dropped in the ripgrep 13 release. See #1544 for more details.
Feature enhancements:
- FEATURE #1547:
Support decompressing
.Zfiles viauncompress.
Bug fixes:
- BUG #1252:
Add a section on the
--preflag to the GUIDE. - BUG #1339: Improve error message when a pattern with invalid UTF-8 is provided.
- BUG #1524:
Note how to escape a
$when using--replace. - BUG #1537: Fix match bug caused by inner literal optimization.
- BUG #1544:
ripgrep now uses
asciidoctorinstead ofa2xto generate its man page. - BUG #1550: Substantially reduce peak memory usage when searching wide directories.
- BUG #1571:
Add note about configuration files in
--type-{add,clear}docs. - BUG #1573:
Fix incorrect
--count-matchesoutput when using look-around.
12.0.1 (2020-03-29)
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:
- BUG #1520: Don't emit spurious error messages in git repositories with submodules.
12.0.0 (2020-03-15)
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:
- The
--no-pcre2-unicodeflag is deprecated. Instead, use the--no-unicodeflag, which applies to both the default regex engine and PCRE2. For now,--no-pcre2-unicodeand--pcre2-unicodeare aliases to--no-unicodeand--unicode, respectively. The--[no-]pcre2-unicodeflags may be removed in a future release. - The
--auto-hybrid-regexflag is deprecated. Instead, use the new--engineflag with theautovalue.
Performance improvements:
- PERF #1087: ripgrep is smarter when detected literals are whitespace.
- PERF #1381: Directory traversal is sped up with speculative ignore-file existence checks.
- PERF cd8ec38a:
Improve inner literal detection to cover more cases more effectively.
e.g.,
+Sherlock Holmes +now hasSherlock Holmesextracted instead of. - PERF 6a0e0147:
Improve literal detection when the
-w/--word-regexpflag is used. - PERF ad97e9c9:
Improve overall performance of the
-w/--word-regexpflag.
Feature enhancements:
- Added or improved file type filtering for erb, diff, Gradle, HAML, Org, Postscript, Skim, Slim, Slime, RPM Spec files, Typoscript, xml.
- FEATURE #1370:
Add
--include-zeroflag that shows files searched without matches. - FEATURE #1390:
Add
--no-context-separatorflag that always hides context separators. - FEATURE #1414:
Add
--no-require-gitflag to allow ripgrep to respect gitignores anywhere. - FEATURE #1420:
Add
--no-ignore-excludeto disregard rules in.git/info/excludefiles. - FEATURE #1466:
Add
--no-ignore-filesflag to disable all--ignore-fileflags. - FEATURE #1488: Add '--engine' flag for easier switching between regex engines.
- FEATURE 75cbe88f:
Add
--no-unicodeflag. This works on all supported regex engines.
Bug fixes:
- BUG #1291: ripgrep now works in non-existent directories.
- BUG #1319: Fix match bug due to errant literal detection.
- BUG #1335: Fixes a performance bug when searching plain text files with very long lines. This was a serious performance regression in some cases.
- BUG #1344:
Document usage of
--type all. - BUG #1389: Fixes a bug where ripgrep would panic when searching a symlinked directory.
- BUG #1439: Improve documentation for ripgrep's automatic stdin detection.
- BUG #1441: Remove CPU features from man page.
- BUG #1442,
BUG #1478:
Improve documentation of the
-g/--globflag. - BUG #1445: ripgrep now respects ignore rules from .git/info/exclude in worktrees.
- BUG #1485:
Fish shell completions from the release Debian package are now installed to
/usr/share/fish/vendor_completions.d/rg.fish.
11.0.2 (2019-08-01)
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:
- FEATURE #1293:
Added
--glob-case-insensitiveflag that makes--globbehave as--iglob.
Bug fixes:
- BUG #1246: Add translations to README, starting with an unofficial Chinese translation.
- BUG #1259:
Fix bug where the last byte of a
-f filewas stripped if it wasn't a\n. - BUG #1261:
Document that no error is reported when searching for
\nwith-P/--pcre2. - BUG #1284:
Mention
.ignoreand.rgignoremore prominently in the README. - BUG #1292:
Fix bug where
--with-filenamewas sometimes enabled incorrectly. - BUG #1268:
Fix major performance regression in GitHub
x86_64-linuxbinary release. - BUG #1302: Show better error messages when a non-existent preprocessor command is given.
- BUG #1334:
Fix match regression with
-Fflag when patterns contain meta characters.
11.0.1 (2019-04-16)
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:
- BUG #1247: Fix search bug that can cause ripgrep to enter an infinite loop.
11.0.0 (2019-04-15)
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:
- 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
2exit status code, regardless of whether a match is found or not. Previously, ripgrep would only emit a2exit 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 a0exit status code. - Supplying the
-u/--unrestrictedflag three times is now equivalent to supplying--no-ignore --hidden --binary. Previously,-uuuwas equivalent to--no-ignore --hidden --text. The difference is that--binarydisables binary file filtering without potentially dumping binary data into your terminal. That is,rg -uuu fooshould now be equivalent togrep -r foo. - The
avx-accelfeature 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-accelfeature 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
--binaryflag for disabling binary file filtering. - FEATURE #1078:
Add
--max-columns-previewflag for showing a preview of long lines. - FEATURE #1099:
Add support for Brotli and Zstd to the
-z/--search-zipflag. - FEATURE #1138:
Add
--no-ignore-dotflag for ignoring.ignorefiles. - FEATURE #1155:
Add
--auto-hybrid-regexflag 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-insensitivefor case insensitive ignore globs. - FEATURE #1185:
Add
-Iflag as a short option for the--no-filenameflag. - FEATURE #1207:
Add
nonevalue to-E/--encodingto forcefully disable all transcoding. - FEATURE da9d7204:
Add
--pcre2-versionfor 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
/procwith a zombie process present. - BUG #1052: Fix bug where ripgrep could panic when transcoding UTF-16 files.
- BUG #1055:
Suggest
-U/--multilinewhen 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
--crlfflag. - BUG #1101: Fix AsciiDoc escaping for man page output.
- BUG #1103:
Clarify what
--encoding autodoes. - BUG #1106:
--files-with-matchesand--files-without-matchwork with one file. - BUG #1121:
Fix bug that was triggering Windows antimalware when using the
--filesflag. - BUG #1125,
BUG #1159:
ripgrep shouldn't panic for
rg -h | rgand 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/-xweren'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.
0.10.0 (2018-09-07)
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:
- The minimum version required to compile Rust has now changed to track the latest stable version of Rust. Patch releases will continue to compile with the same version of Rust as the previous patch release, but new minor versions will use the current stable version of the Rust compile as its minimum supported version.
- The match semantics of
-w/--word-regexphave 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:
- FEATURE #162:
libripgrep is now a thing. The primary crate is
grep. - FEATURE #176:
Add
-U/--multilineflag that permits matching over multiple lines. - FEATURE #188:
Add
-P/--pcre2flag that gives support for look-around and backreferences. - FEATURE #244:
Add
--jsonflag that prints results in a JSON Lines format. - FEATURE #321:
Add
--one-file-systemflag to skip directories on different file systems. - FEATURE #404:
Add
--sortand--sortrflag for more sorting. Deprecate--sort-files. - FEATURE #416:
Add
--crlfflag to permit$to work with carriage returns on Windows. - FEATURE #917:
The
--trimflag strips prefix whitespace from all lines printed. - FEATURE #993:
Add
--null-dataflag, which makes ripgrep use NUL as a line terminator. - FEATURE #997:
The
--passthruflag now works with the--replaceflag. - FEATURE #1038-1:
Add
--line-bufferedand--block-bufferedfor forcing a buffer strategy. - FEATURE #1038-2:
Add
--pre-globfor filtering files through the--preflag.
Bug fixes:
- BUG #2: Searching with non-zero context can now use memory maps if appropriate.
- BUG #200: ripgrep will now stop correctly when its output pipe is closed.
- BUG #389:
The
-w/--word-regexpflag now works more intuitively. - BUG #643: Detection of readable stdin has improved on Windows.
- BUG #441, BUG #690, BUG #980: Matching empty lines now works correctly in several corner cases.
- BUG #764: Color escape sequences now coalesce, which reduces output size.
- BUG #842: Add man page to binary Debian package.
- BUG #922: ripgrep is now more robust with respect to memory maps failing.
- BUG #937: Color escape sequences are no longer emitted for empty matches.
- BUG #940:
Context from the
--passthruflag should not impact process exit status. - BUG #984:
Fixes bug in
ignorecrate where first path was always treated as a symlink. - BUG #990: Read stderr asynchronously when running a process.
- BUG #1013:
Add compile time and runtime CPU features to
--versionoutput. - BUG #1028:
Don't complete bare pattern after
-fin zsh.
0.9.0 (2018-08-03)
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:
- When
--countand--only-matchingare provided simultaneously, the behavior of ripgrep is as if the--count-matchesflag 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.) - Octal syntax is no longer supported. ripgrep previously accepted expressions
like
\1as syntax for matchingU+0001, but ripgrep will now report an error instead. - The
--line-number-widthflag has been removed. Its functionality was not carefully considered with all ripgrep output formats. See #795 for more details.
Feature enhancements:
- Added or improved file type filtering for Android, Bazel, Fuchsia, Haskell, Java and Puppet.
- FEATURE #411:
Add a
--statsflag, which emits aggregate statistics after search results. - FEATURE #646:
Add a
--no-ignore-messagesflag, which suppresses parse errors from reading.ignoreand.gitignorefiles. - FEATURE #702:
Support
\u{..}Unicode escape sequences. - FEATURE #812:
Add
-b/--byte-offsetflag that shows the byte offset of each matching line. - FEATURE #814:
Add
--count-matchesflag, which is like--count, but for each match. - FEATURE #880:
Add a
--no-columnflag, which disables column numbers in the output. - FEATURE #898:
Add support for
lz4when using the-z/--search-zipflag. - FEATURE #924:
termcolorhas moved to its own repository: https://github.com/BurntSushi/termcolor - FEATURE #934:
Add a new flag,
--no-ignore-global, that permits disabling global gitignores. - FEATURE #967:
Rename
--maxdepthto--max-depthfor consistency. Keep--maxdepthfor backwards compatibility. - FEATURE #978:
Add a
--preoption to filter inputs with an arbitrary program. - FEATURE fca9709d: Improve zsh completion.
Bug fixes:
- BUG #135: Release portable binaries that conditionally use SSSE3, AVX2, etc., at runtime.
- BUG #268: Print descriptive error message when trying to use look-around or backreferences.
- BUG #395:
Show comprehensible error messages for regexes like
\s*{. - BUG #526: Support backslash escapes in globs.
- BUG #795:
Fix problems with
--line-number-widthby removing it. - BUG #832:
Clarify usage instructions for
-f/--fileflag. - BUG #835: Fix small performance regression while crawling very large directory trees.
- BUG #851:
Fix
-S/--smart-casedetection once and for all. - BUG #852:
Be robust with respect to
ENOMEMerrors returned bymmap. - BUG #853:
Upgrade
grepcrate toregex-syntax 0.6.0. - BUG #893: Improve support for git submodules.
- BUG #900: When no patterns are given, ripgrep should never match anything.
- BUG #907:
ripgrep will now stop traversing after the first file when
--quiet --filesis used. - BUG #918:
Don't skip tar archives when
-z/--search-zipis used. - BUG #934: Don't respect gitignore files when searching outside git repositories.
- BUG #948: Use exit code 2 to indicate error, and use exit code 1 to indicate no matches.
- BUG #951: Add stdin example to ripgrep usage documentation.
- BUG #955: Use buffered writing when not printing to a tty, which fixes a performance regression.
- BUG #957:
Improve the error message shown for
--path separator /in some Windows shells. - BUG #964:
Add a
--no-fixed-stringsflag to disable-F/--fixed-strings. - BUG #988:
Fix a bug in the
ignorecrate that prevented the use of explicit ignore files after disabling all other ignore rules. - BUG #995:
Respect
$XDG_CONFIG_DIR/git/configfor detectingcore.excludesFile.
0.8.1 (2018-02-20)
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:
- Added or improved file type filtering for csv and VHDL.
- FEATURE #798:
Add
underlinesupport totermcolorand ripgrep. See documentation on the--colorsflag for details.
Bug fixes:
- BUG #684:
Improve documentation for the
--ignore-fileflag. - BUG #789:
Don't show
(rev )if the revision wasn't available during the build. - BUG #791: Add man page to ARM release.
- BUG #797:
Improve documentation for "intense" setting in
termcolor. - BUG #800:
Fix a bug in the
ignorecrate for custom ignore files. This had no impact on ripgrep. - BUG #807:
Fix a bug where
rg --hidden .behaved differently fromrg --hidden ./. - BUG #815: Clarify a common failure mode in user guide.
- BUG #820: Fixes a bug on Windows where symlinks were followed even if not requested.
- BUG #824: Fix a performance regression in directory traversal on Windows.
0.8.0 (2018-02-11)
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 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.
- 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 -iwill perform a case sensitive search since the-s/--case-sensitiveflag was defined to always take precedence over the-i/--ignore-caseflag, 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 -inow performs a case insensitive search. - The
-M/--max-columnsflag was tweaked so that specifying a value of0now 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
docwhich contains the man page (previously in the root), a user guide (new), a FAQ (new) and the CHANGELOG (previously not included in release). Thecompletedirectory 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 for details.
- FEATURE #261: Add extended or "true" color support. Works in Windows 10! See the FAQ for details.
- FEATURE #539:
Search gzip, bzip2, lzma or xz files when given
-z/--search-zipflag. - FEATURE #544:
Add support for line number alignment via a new
--line-number-widthflag. - FEATURE #654: Support linuxbrew in ripgrep's Brew tap.
- FEATURE #673:
Bring back
.rgignorefiles. (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-stringsflag on a regex syntax error. - FEATURE #740:
Add a
--passthruflag 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-caseuppercase character detection. - BUG #725: Clarify that globs do not override explicitly given paths to search.
- BUG #742:
Write ANSI reset code as
\x1B[0minstead of\x1B[m. - BUG #747:
Remove
yarn.lockfrom 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=0now 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_loggerin 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
unsafeinglobset. 🎉 - MAINT e9d448: Add an issue template (has already drastically improved bug reports).
- MAINT ae2d03:
Remove the
compilescript.
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!
0.7.1 (2017-10-22)
This is a patch release of ripgrep that includes a fix to very bad regression introduced in ripgrep 0.7.0.
Bug fixes:
- BUG #648: Fix a bug where it was very easy to exceed standard file descriptor limits.
0.7.0 (2017-10-20)
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:
- Added or improved file type filtering for config & license files, Elm, Purescript, Standard ML, sh, systemd, Terraform
- FEATURE #593:
Using both
-o/--only-matchingand-r/--replacedoes the right thing.
Bug fixes:
- BUG #200: ripgrep will stop when its pipe is closed.
- BUG #402:
Fix context printing bug when the
-m/--max-countflag is used. - BUG #521:
Fix interaction between
-r/--replaceand terminal colors. - BUG #559: Ignore test that tried reading a non-UTF-8 file path on macOS.
- BUG #599: Fix color escapes on empty matches.
- BUG #600: Avoid expensive (on Windows) file handle check when using --files.
- BUG #618: Clarify installation instructions for Ubuntu users.
- BUG #633: Faster symlink loop checking on Windows.
0.6.0 (2017-08-23)
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:
- Added or improved file type filtering for BitBake, C++, Cabal, cshtml, Julia, Make, msbuild, QMake, Yocto
- FEATURE #163:
Add an
--iglobflag that is like-g/--glob, but matches globs case insensitively. - FEATURE #520:
Add
-x/--line-regexpflag, which requires a match to span an entire line. - FEATURE #551,
FEATURE #554:
ignore: add newmatched_path_or_any_parentsmethod.
Bug fixes:
- BUG #342: Fix invisible text in some PowerShell environments by changing the default color scheme on Windows.
- BUG #413:
Release binaries on Unix are now
strip'd by default. This decreases binary size by an order of magnitude. - BUG #483:
When
--quietis passed,--filesshould be quiet. - BUG #488:
When
--vimgrepis passed,--with-filenameshould be enabled automatically. - BUG #493:
Fix another bug in the implementation of the
-o/--only-matchingflag. - BUG #499: Permit certain flags to override others.
- BUG #523:
wincolor: Re-fetch Windows console on all calls. - BUG #523:
--versionnow shows enabled compile-time features. - BUG #532, BUG #536, BUG #538, BUG #540, BUG #560, BUG #565: Improve zsh completion.
- BUG #578:
Enable SIMD for
encoding_rswhen appropriate. - BUG #580:
Fix
-w/--word-regexpin the presence of capturing groups. - BUG #581: Document that ripgrep may terminate unexpectedly when searching via memory maps (which can happen using default settings).
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!
0.5.2 (2017-05-11)
Feature enhancements:
- Added or improved file type filtering for Nix.
- FEATURE #362:
Add
--regex-size-limitand--dfa-size-limitflags. - FEATURE #444: Improve error messages for invalid globs.
Bug fixes:
- BUG #442:
Fix line wrapping in
--helpoutput. - BUG #451:
Fix bug with duplicate output when using
-o/--only-matchingflag.
0.5.1 (2017-04-09)
Feature enhancements:
- Added or improved file type filtering for vim.
- FEATURE #34:
Add a
-o/--only-matchingflag. - FEATURE #377: Column numbers can now be customized with a color. (The default is no color.)
- FEATURE #419:
Added
-0short flag option for--null.
Bug fixes:
- BUG #381: Include license text in all subcrates.
- BUG #418,
BUG #426,
BUG #439:
Fix a few bugs with
-h/--helpoutput.
0.5.0 (2017-03-12)
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 #380: Line numbers are now hidden by default when ripgrep is printing to a tty and the only thing searched is stdin.
Feature enhancements:
- Added or improved file type filtering for Ceylon, CSS, Elixir, HTML, log, SASS, SVG, Twig
- FEATURE #1:
Add support for additional text encodings, including automatic detection for
UTF-16 via BOM sniffing. Explicit text encoding support with the
-E/--encodingflag 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 - FEATURE #129:
Add a new
-M/--max-columnsflag that omits lines longer than the given number of bytes. (Disabled by default!) - FEATURE #369:
A new flag,
--max-filesize, was added for limiting searches to files with a maximum file size.
Bug fixes:
- BUG #52, BUG #311: Tweak how binary files are detected and handled. (We are slightly less conservative and will no longer use memory without bound.)
- BUG #326: When --files flag is given, we should never attempt to parse positional arguments as regexes.
- BUG #327: Permit the --heading flag to override the --no-heading flag.
- BUG #340:
Clarify that the
-u/--unrestrictedflags are aliases. - BUG #343:
Global git ignore config should use
$HOME/.config/git/ignoreand not$HOME/git/ignore. - BUG #345:
Clarify docs for
-g/--globflag. - BUG #381: Add license files to each sub-crate.
- BUG #383: Use latest version of clap (for argv parsing).
- BUG #392:
Fix translation of set globs (e.g.,
{foo,bar,quux}) to regexes. - BUG #401: Add PowerShell completion file to Windows release.
- BUG #405:
Fix bug when excluding absolute paths with the
-g/--globflag.
0.4.0
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:
- POSIX character classes now require double bracketing. Previously, the regex
[:upper:]would parse as theupperPOSIX 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. - The character
[must always be escaped inside a character class. - The characters
&,-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:
- Added or improved file type filtering for Crystal, Kotlin, Perl, PowerShell, Ruby, Swig
- FEATURE #83: Type definitions can now include other type definitions.
- FEATURE #243:
BREAKING CHANGE: The
--columnflag now implies--line-number. - FEATURE #263:
Add a new
--sort-filesflag. - FEATURE #275:
Add a new
--path-separatorflag. Useful in cygwin.
Bug fixes:
- BUG #182: Redux: use more portable ANSI color escape sequences when possible.
- BUG #258: Fix bug that caused ripgrep's parallel iterator to spin and burn CPU.
- BUG #262: Document how to install shell completion files.
- BUG #266, BUG #293: Fix handling of bold styling and change the default colors.
- BUG #268: Make lack of backreference support more explicit.
- BUG #271:
Remove
~dependency on clap. - BUG #277:
Fix cosmetic issue in
globsetcrate docs. - BUG #279:
ripgrep did not terminate when
-q/--quietwas given. - BUG #281:
BREAKING CHANGE: Completely remove
^Chandling from ripgrep. - BUG #284:
Make docs for
-g/--globclearer. - BUG #286: When stdout is redirected to a file, don't search that file.
- BUG #287: Fix ZSH completions.
- BUG #295:
Remove superfluous
memmapdependency ingrepcrate. - BUG #308:
Improve docs for
-r/--replace. - BUG #313: Update bytecount dep to latest version.
- BUG #318: Fix invalid UTF-8 output bug in Windows consoles.
0.3.2
Feature enhancements:
- Added or improved file type filtering for Less, Sass, stylus, Zsh
Bug fixes:
- BUG #229: Make smart case slightly less conservative.
- BUG #247: Clarify use of --heading/--no-heading.
- BUG #251, BUG #264, BUG #267: Fix matching bug caused by literal optimizations.
- BUG #256:
Fix bug that caused
rg fooandrg foo/to have different behavior whenfoowas a symlink. - BUG #270:
Fix bug where patterns starting with a
-couldn't be used with the-e/--regexpflag. (This resolves a regression that was introduced in ripgrep 0.3.0.)
0.3.1
Bug fixes:
- BUG #242:
ripgrep didn't respect
--colors foo:nonecorrectly. Now it does.
0.3.0
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:
- ripgrep now requires Rust 1.11 to compile. Previously, it could build on Rust 1.9. The cause of this was the move from Docopt to Clap for argument parsing.
- The
-e/--regexpflag can no longer accept a pattern starting with a-. There are two work-arounds:rg -- -fooandrg [-]fooorrg -e [-]foowill all search for the same-foopattern. The cause of this was the move from Docopt to Clap for argument parsing. This may get fixed in the future..
Performance improvements:
- PERF #33: ripgrep now performs similar to GNU grep on small corpora.
- PERF #136: ripgrep no longer slows down because of argument parsing when given a large argument list.
Feature enhancements:
- Added or improved file type filtering for Elixir.
- FEATURE #7:
Add a
-f/--fileflag that causes ripgrep to read patterns from a file. - FEATURE #51:
Add a
--colorsflag that enables one to customize the colors used in ripgrep's output. - FEATURE #138:
Add a
--files-without-matchflag that shows only file paths that contain zero matches. - FEATURE #230: Add completion files to the release (Bash, Fish and PowerShell).
Bug fixes:
- BUG #37:
Use correct ANSI escape sequences when
TERM=screen.linux. - BUG #94: ripgrep now detects stdin on Windows automatically.
- BUG #117: Colors should now work correctly and automatically inside mintty.
- BUG #182:
Colors should now work within Emacs. In particular,
--color=alwayswill emit colors regardless of the current environment. - BUG #189:
Show less content when running
rg -h. The full help content can be accessed withrg --help. - BUG #210: Support non-UTF-8 file names on Unix platforms.
- BUG #231: Switch from block buffering to line buffering.
- BUG #241:
Some error messages weren't suppressed when
--no-messageswas used.
0.2.9
Bug fixes:
- BUG #226:
File paths explicitly given on the command line weren't searched in parallel.
(This was a regression in
0.2.7.) - BUG #228:
If a directory was given to
--ignore-file, ripgrep's memory usage would grow without bound.
0.2.8
Bug fixes:
- Fixed a bug with the SIMD/AVX features for using bytecount in commit
4ca15a.
0.2.7
Performance improvements:
- PERF #223: Added a parallel recursive directory iterator. This results in major performance improvements on large repositories.
- PERF #11:
ripgrep now uses the
bytecountlibrary for counting new lines. In some cases, ripgrep runs twice as fast. UseRUSTFLAGS="-C target-cpu=native" cargo build --release --features 'simd-accel avx-accel'to get the fastest possible binary.
Feature enhancements:
- Added or improved file type filtering for Agda, Tex, Taskpaper, Markdown, asciidoc, textile, rdoc, org, creole, wiki, pod, C#, PDF, C, C++.
- FEATURE #149:
Add a new
--no-messagesflag that suppresses error messages. Note thatrg foo 2> /dev/nullalso works. - FEATURE #159:
Add a new
-m/--max-countflag that limits the total number of matches printed for each file searched.
Bug fixes:
- BUG #199:
Fixed a bug where
-S/--smart-casewasn't being applied correctly to literal optimizations. - BUG #203:
Mention the full name, ripgrep, in more places. It now appears in
the output of
--helpand--version. The repository URL is now also in the output of--helpand the man page. - BUG #215:
Include small note about how to search for a pattern that starts with a
-.
0.2.6
Feature enhancements:
- Added or improved file type filtering for Fish.
Bug fixes:
- BUG #206:
Fixed a regression with
-g/--globflag in0.2.5.
0.2.5
Feature enhancements:
- Added or improved file type filtering for Groovy, Handlebars, Tcl, zsh and Python.
- FEATURE #9:
Support global gitignore config and
.git/info/excludefiles. - FEATURE #45: Add --ignore-file flag for specifying additional ignore files.
- FEATURE #202:
Introduce a new
ignorecrate that encapsulates all of ripgrep's gitignore matching logic.
Bug fixes:
- BUG #44: ripgrep runs slowly when given lots of positional arguments that are directories.
- BUG #119:
ripgrep didn't reset terminal colors if it was interrupted by
^C. Fixed in PR #187. - BUG #184: Fixed a bug related to interpreting gitignore files in parent directories.
0.2.4
SKIPPED.
0.2.3
Bug fixes:
0.2.2
Packaging updates:
ripgrepis now in homebrew-core.brew install ripgrepwill do the trick on a Mac.ripgrepis now in the Archlinux community repository.pacman -S ripgrepwill do the trick on Archlinux.- Support has been discontinued for i686-darwin.
- Glob matching has been moved out into its own crate:
globset.
Feature enhancements:
- Added or improved file type filtering for CMake, config, Jinja, Markdown, Spark.
- FEATURE #109: Add a --max-depth flag for directory traversal.
- FEATURE #124: Add -s/--case-sensitive flag. Overrides --smart-case.
- FEATURE #139:
The
ripgreprepo is now a Homebrew tap. This is useful for installing SIMD accelerated binaries, which aren't available in homebrew-core.
Bug fixes:
- BUG #87, BUG #127, BUG #131: Various issues related to glob matching.
- BUG #116: --quiet should stop search after first match.
- BUG #121: --color always should show colors, even when --vimgrep is used.
- BUG #122: Colorize file path at beginning of line.
- BUG #134: Processing a large ignore file (thousands of globs) was very slow.
- BUG #137: Always follow symlinks when given as an explicit argument.
- BUG #147: Clarify documentation for --replace.
0.2.1
Feature enhancements:
- Added or improved file type filtering for Clojure and SystemVerilog.
- FEATURE #89: Add a --null flag that outputs a NUL byte after every file path.
Bug fixes:
- BUG #98: Fix a bug in single threaded mode when if opening a file failed, ripgrep quit instead of continuing the search.
- BUG #99: Fix another bug in single threaded mode where empty lines were being printed by mistake.
- BUG #105: Fix an off-by-one error with --column.
- BUG #106: Fix a bug where a whitespace only line in a gitignore file caused ripgrep to panic (i.e., crash).
0.2.0
Feature enhancements:
- Added or improved file type filtering for VB, R, F#, Swift, Nim, JavaScript, TypeScript
- FEATURE #20: Adds a --no-filename flag.
- FEATURE #26: Adds --files-with-matches flag. Like --count, but only prints file paths and doesn't need to count every match.
- FEATURE #40:
Switch from using
.rgignoreto.ignore. Note that.rgignoreis still supported, but deprecated. - FEATURE #68: Add --no-ignore-vcs flag that ignores .gitignore but not .ignore.
- FEATURE #70: Add -S/--smart-case flag (but is disabled by default).
- FEATURE #80:
Add support for
{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.)
- BUG #8: Don't use an intermediate buffer when --threads=1. (Permits constant memory usage.)
- BUG #15: Improves the documentation for --type-add.
- BUG #16, BUG #49, BUG #50, BUG #65: Some gitignore globs were being treated as anchored when they weren't.
- BUG #18: --vimgrep reported incorrect column number.
- BUG #19: ripgrep was hanging waiting on stdin in some Windows terminals. Note that this introduced a new bug: #94.
- BUG #21:
Removes leading
./when printing file paths. - BUG #22:
Running
rg --help | echocausedrgto panic. - BUG #24: Clarify the central purpose of rg in its usage message.
- BUG #25: Anchored gitignore globs weren't applied in subdirectories correctly.
- BUG #30:
Globs like
foo/**should match contents offoo, but notfooitself. - BUG #35,
BUG #81:
When automatically detecting stdin, only read if it's a file or a fifo.
i.e., ignore stdin in
rg foo < /dev/null. - BUG #36: Don't automatically pick memory maps on MacOS. Ever.
- BUG #38: Trailing whitespace in gitignore wasn't being ignored.
- BUG #43: --glob didn't work with directories.
- BUG #46: Use one fewer worker thread than what is provided on CLI.
- BUG #47: --help/--version now work even if other options are set.
- BUG #55: ripgrep was refusing to search /proc/cpuinfo. Fixed by disabling memory maps for files with zero size.
- BUG #64: The first path given with --files set was ignored.
- BUG #67:
Sometimes whitelist globs like
!/dirweren't interpreted as anchored. - BUG #77: When -q/--quiet flag was passed, ripgrep kept searching even after a match was found.
- BUG #90: Permit whitelisting hidden files.
- BUG #93: ripgrep was extracting an erroneous inner literal from a repeated pattern.