21 KiB
0.5.0
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/--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 - FEATURE #129:
Add a new
-M/--max-columns
flag 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/--unrestricted
flags are aliases. - BUG #343:
Global git ignore config should use
$HOME/.config/git/ignore
and not$HOME/git/ignore
. - BUG #345:
Clarify docs for
-g/--glob
flag. - 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/--glob
flag.
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 theupper
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. - 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
--column
flag now implies--line-number
. - FEATURE #263:
Add a new
--sort-files
flag. - FEATURE #275:
Add a new
--path-separator
flag. 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
globset
crate docs. - BUG #279:
ripgrep did not terminate when
-q/--quiet
was given. - BUG #281:
BREAKING CHANGE: Completely remove
^C
handling from ripgrep. - BUG #284:
Make docs for
-g/--glob
clearer. - BUG #286: When stdout is redirected to a file, don't search that file.
- BUG #287: Fix ZSH completions.
- BUG #295:
Remove superfluous
memmap
dependency ingrep
crate. - 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 foo
andrg foo/
to have different behavior whenfoo
was a symlink. - BUG #270:
Fix bug where patterns starting with a
-
couldn't be used with the-e/--regexp
flag. (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:none
correctly. 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/--regexp
flag can no longer accept a pattern starting with a-
. There are two work-arounds:rg -- -foo
andrg [-]foo
orrg -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:
- 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/--file
flag that causes ripgrep to read patterns from a file. - FEATURE #51:
Add a
--colors
flag that enables one to customize the colors used in ripgrep's output. - FEATURE #138:
Add a
--files-without-match
flag 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=always
will 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-messages
was 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
bytecount
library 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-messages
flag that suppresses error messages. Note thatrg foo 2> /dev/null
also works. - FEATURE #159:
Add a new
-m/--max-count
flag that limits the total number of matches printed for each file searched.
Bug fixes:
- BUG #199:
Fixed a bug where
-S/--smart-case
wasn't being applied correctly to literal optimizations. - BUG #203:
Mention the full name, ripgrep, in more places. It now appears in
the output of
--help
and--version
. The repository URL is now also in the output of--help
and 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/--glob
flag 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/exclude
files. - FEATURE #45: Add --ignore-file flag for specifying additional ignore files.
- FEATURE #202:
Introduce a new
ignore
crate 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:
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.- 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
ripgrep
repo 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
.rgignore
to.ignore
. Note that.rgignore
is 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 | echo
causedrg
to 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 notfoo
itself. - 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
!/dir
weren'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.