ripgrep v12.0.0 Release Notes

Release Date: 2020-03-15 // about 4 years ago
  • 🚀 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 case you haven't heard of it before, ripgrep is a line-oriented search
    tool that recursively searches your current directory for a regex pattern. By
    0️⃣ default, ripgrep will respect your .gitignore and automatically skip hidden
    files/directories and binary files.

    🚀 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-unicode flag is deprecated. Instead, use the --no-unicode
      0️⃣ 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.
    • 🗄 The --auto-hybrid-regex flag is deprecated. Instead, use the new --engine
      flag with the auto value.

    🐎 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 has Sherlock Holmes extracted instead
      of .
    • PERF 6a0e0147:
      👌 Improve literal detection when the -w/--word-regexp flag is used.
    • PERF ad97e9c9:
      👌 Improve overall performance of the -w/--word-regexp flag.

    🔋 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-zero flag that shows files searched without matches.
    • FEATURE #1390:
      ➕ Add --no-context-separator flag that always hides context separators.
    • FEATURE #1414:
      ➕ Add --no-require-git flag to allow ripgrep to respect gitignores anywhere.
    • FEATURE #1420:
      ➕ Add --no-ignore-exclude to disregard rules in .git/info/exclude files.
    • FEATURE #1466:
      ➕ Add --no-ignore-files flag to disable all --ignore-file flags.
    • FEATURE #1488:
      ➕ Add '--engine' flag for easier switching between regex engines.
    • FEATURE 75cbe88f:
      ➕ Add --no-unicode flag. 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/--glob flag.
    • 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.