25 KiB
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.