ripgrep v0.10.0 Release Notes

Release Date: 2018-09-07 // over 5 years ago
  • ๐Ÿš€ 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-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:

    • FEATURE #162: libripgrep is now a thing. The primary crate is grep.
    • FEATURE #176: Add -U/--multiline flag that permits matching over multiple lines.
    • FEATURE #188: Add -P/--pcre2 flag that gives support for look-around and backreferences.
    • FEATURE #244: Add --json flag that prints results in a JSON Lines format.
    • FEATURE #321: Add --one-file-system flag to skip directories on different file systems.
    • FEATURE #404: Add --sort and --sortr flag for more sorting. Deprecate --sort-files.
    • FEATURE #416: Add --crlf flag to permit $ to work with carriage returns on Windows.
    • FEATURE #917: The --trim flag strips prefix whitespace from all lines printed.
    • FEATURE #993: Add --null-data flag, which makes ripgrep use NUL as a line terminator.
    • FEATURE #997: The --passthru flag now works with the --replace flag.
    • FEATURE #1038-1: Add --line-buffered and --block-buffered for forcing a buffer strategy.
    • FEATURE #1038-2: Add --pre-glob for filtering files through the --pre flag.

    ๐Ÿ› 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-regexp flag 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 --passthru flag should not impact process exit status.
    • BUG #984: Fixes bug in ignore crate 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 --version output.
    • BUG #1028: Don't complete bare pattern after -f in zsh.