burntsushi/ripgrep
ripgrep recursively searches directories for a regex pattern while respecting your gitignore
How ripgrep is put together
ripgrep is a line-oriented recursive regex search tool (the `rg` CLI) written entirely in Rust as a Cargo workspace of ~10 library crates plus a thin `crates/core` binary. Data flow: CLI arguments and an optional RIPGREP_CONFIG_PATH rc-file are parsed into low/high-level arg structs, the `ignore` crate performs parallel directory traversal honoring gitignore/hidden/binary filtering, the `searcher` crate scans each haystack (optionally memory-mapped or transcoded via encoding_rs) using a matcher from the default Rust `regex` engine or optional PCRE2, and the `printer` crate formats matches to stdout (standard, JSON, summary, stats, hyperlinks). An experimental indexing mode backed by an embedded redb database is gated behind the `unstable-index` feature.
Languages
Frameworks
Datastores
Infrastructure
Major components
crates/core (rg binary)
Entry point that parses flags, dispatches to single-threaded search, parallel search, file listing, type listing, generation of completions/man page, and index read/write modes.
crates/core/flags
Full CLI flag definitions, lexopt-based parsing, shell completion generators, and conversion into high-level search configuration.
crates/ignore
Parallel directory walker implementing gitignore/.ignore/.rgignore semantics, hidden/binary filtering, file-type matching, and override rules.
crates/searcher
Core search execution over files or memory maps, including line buffering, multi-line matching, encoding transcoding, and sink-based result delivery.
crates/matcher + crates/regex + crates/pcre2
Matcher trait abstraction over the default Rust regex engine and the optional PCRE2 FFI engine.
crates/printer
Output formatting: standard colored output, JSON/events, summary/stats, path printing, counters, and terminal hyperlinks.
crates/globset
Glob pattern compilation and matching (single globs and sets), also exposed for fuzzing.
crates/cli (grep-cli)
CLI utilities: decompression/preprocessing filter plumbing, escape handling, hostname lookup, human-readable sizes, stdout writer setup.
crates/index (grep-index)
Experimental search index built on redb, discovered via RIPGREP_INDEX_PATH or ancestor `.ripgrep` directories.
New versions of the ignore and globset libraries shipped, with internal improvements to how they share resources.
3 weeksWeek of 2026-08-03
Week of 2026-08-03latest
New versions of the ignore and globset libraries shipped, with internal improvements to how they share resources.
Week of 2026-07-27
Searches got smarter about ignoring irrelevant files, and released downloads are now cryptographically attested.
Week of 2026-07-20
Early scaffolding landed for a future indexing feature, plus a batch of housekeeping across the project.
The past few weeks of ripgrep development have focused on groundwork for a new indexing capability, alongside routine releases and maintenance of the supporting 'ignore' and 'globset' libraries. The team also tightened up release tooling, including build provenance attestations for downloads and fixes to continuous-integration checks.
Week by week
2026-08-03New versions of the ignore and globset libraries shipped, with internal improvements to how they share resources.latest5 changes
Chore
ignore 0.4.33 released
A new version of the library that decides which files ripgrep skips was published.
Chore
globset 0.4.20 released
A new version of the pattern-matching library used for include/exclude rules was published.
Refactor
Larger shared resource pools
Both libraries now allow bigger pools of reusable resources, which can improve performance on large searches.
Fix
Fixed automated binary discovery in CI
The automated build-and-test pipeline had trouble locating compiled programs, and this fix repairs that.
Chore
ignore 0.4.32 released
An earlier point release of the ignore library went out the same week.
2026-07-27Searches got smarter about ignoring irrelevant files, and released downloads are now cryptographically attested.2 changes
Refactor
Skip unreachable ignore files
Ripgrep no longer wastes time loading ignore files it could never apply during a search.
Fix
Build provenance attestations for releases
Downloadable release archives now come with cryptographic proof of exactly how they were built, helping users verify their authenticity.
2026-07-20Early scaffolding landed for a future indexing feature, plus a batch of housekeeping across the project.6 changes
Feature
Initial indexing groundwork
First building blocks were added for an experimental feature that indexes search results.
Refactor
New core index module
A dedicated module was created in the codebase to house indexing logic.
Feature
Flags disabled during indexing
Many command-line options are turned off while indexing is active, keeping the new mode predictable.
Docs
Removed incorrect README
An inaccurate readme file accompanying the index work was deleted.
Chore
ignore 0.4.31 released
Another maintenance release of the file-filtering library went out.
Chore
Minimum Rust version declared
Every crate in the project now explicitly states the minimum Rust compiler version it supports.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 0 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required