BurntSushi/ripgrep
By the numbers
Data collected on 2026-04-30 from commit 4519153e (the latest commit on master).
A quantitative snapshot of the ripgrep workspace.
Repository age and size
- First commit: 2016-02-27 (Andrew Gallant, "initial commit").
- Latest commit: 2026-02-27 (Waldir Pimenta, "doc: clarify half-boundary syntax for the
-w/--word-regexpflag"). - Total commits: 2,209.
- Total Rust source lines: 52,266 across 100
.rsfiles. - Lines in non-test workspace code: 46,510 (under
crates/). - Cargo manifests: 11 (one per workspace member + the root binary).
Languages
xychart-beta horizontal
title "Source files by language"
x-axis "Files" 0 --> 100
y-axis ["rs", "md", "toml", "yml", "sh"]
bar [100, 20, 13, 5, 2]Rust is overwhelmingly the dominant language. The 20 markdown files include the user-facing README, GUIDE, FAQ, CHANGELOG, RELEASE-CHECKLIST, plus per-crate READMEs and license files. Five YAML files are GitHub Actions workflows and Dependabot config. The two shell scripts (ci/build-deb, ci/test-complete) are CI helpers.
Largest source files
The biggest files are concentrated in the binary's flag definitions and a few central library modules:
| File | Lines | Why it's big |
|---|---|---|
crates/core/flags/defs.rs |
7,779 | Static array of every CLI flag's struct + Flag trait impl |
crates/printer/src/standard.rs |
3,987 | Every output combination for the human-readable printer |
crates/ignore/src/walk.rs |
2,494 | Single + parallel directory walker |
crates/globset/src/glob.rs |
1,686 | Glob parser, AST, and regex synthesizer |
crates/searcher/src/searcher/glue.rs |
1,549 | Wires Searcher + Matcher + LineBuffer + Sink |
crates/core/flags/hiargs.rs |
1,480 | Resolved argument struct |
crates/matcher/src/lib.rs |
1,379 | The Matcher trait + default-method machinery |
crates/ignore/src/dir.rs |
1,305 | Per-directory ignore precedence stack |
crates/printer/src/hyperlink/mod.rs |
1,165 | Terminal hyperlink format parsing/emission |
crates/printer/src/summary.rs |
1,150 | The --count, -l, -q printer |
crates/globset/src/lib.rs |
1,139 | GlobSet matching with three index strategies |
crates/searcher/src/searcher/mod.rs |
1,088 | Searcher, SearcherBuilder, BinaryDetection, Encoding, MmapChoice |
crates/printer/src/json.rs |
1,057 | JSON Lines printer |
crates/regex/src/literal.rs |
1,016 | Inner-literal extraction (the source of many historical bugs) |
For context, crates/core/main.rs (the binary's entry point) is just 483 lines — the file orchestrates work that is mostly performed by the libraries.
Activity
xychart-beta horizontal
title "Commits per year"
x-axis "Commits" 0 --> 600
y-axis ["2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026"]
bar [506, 282, 335, 186, 210, 118, 61, 275, 77, 156, 3]The repository's activity follows a "bursty maintainer" pattern: dense activity around major releases, quieter periods in between. ripgrep 14.0.0 (Nov 2023), 14.1.x (2024), and 15.0.0 (Oct 2025) each have a clear commit spike in the surrounding weeks.
Recent contributors (last ~18 months)
Since 2024-09-01, only a small core has been actively contributing:
| Contributor | Commits |
|---|---|
| Andrew Gallant | 116 |
| Lucas Trzesniewski | 3 |
| Thayne McCombs | 2 |
| Pierre Rouleau | 2 |
| ChristopherYoung | 2 |
| (single-commit contributors) | many |
Lifetime contributor count: 465 unique git authors.
ripgrep is, in practice, a single-maintainer project: Andrew Gallant authored 1,534 of the 2,209 commits (~69%). Most other contributors are "drive-by" — single-commit authors fixing a typo, adding a file type, or polishing completions.
Bot-attributed commits
git log --pretty=format:"%b" | grep -ic "co-authored-by:"
4Four commits include a Co-authored-by: trailer; none mention a known automation bot account. ripgrep does not use Dependabot, GitHub Actions auto-commits, or AI assistants in its commit history (at least not declaratively). This is a lower bound — inline AI tooling leaves no git trace.
TODO / FIXME / HACK density
grep -rE "TODO|FIXME|HACK" --include="*.rs" crates/ tests/ | wc -l
10Ten such comments across the entire workspace, eight of them in tests/regression.rs (where they typically describe known-but-not-yet-reproduced behaviour). The library crates have effectively no FIXME debt.
Workspace member sizes
xychart-beta horizontal
title "Lines of Rust per crate"
x-axis "Lines" 0 --> 16000
y-axis ["core", "printer", "ignore", "searcher", "regex", "globset", "matcher", "cli", "pcre2", "grep"]
bar [15000, 9100, 7400, 7300, 5400, 4600, 1500, 1000, 500, 10](Approximate counts; the exact numbers shift slightly with each commit.)
The core binary has the most code, despite being conceptually thin, because of the 7,779-line flag-definition table. The libraries that carry the actual search machinery (printer, ignore, searcher, regex, globset) sit in the 4–10K range each. grep is the smallest, by design — it is a six-line facade.
Test infrastructure
- Integration tests:
tests/feature.rs(38K),tests/regression.rs(54K),tests/json.rs(12K),tests/multiline.rs(4K),tests/binary.rs(17K),tests/misc.rs(36K). - Test data:
tests/data/(canned haystacks likesherlock, used across feature and regression tests). - Test harness:
tests/util.rs(17K) definesDirandTestCommand, thergtest!macro lives intests/macros.rs.
Major-version timeline
| Major | Released |
|---|---|
| 11.0.0 | Apr 2019 |
| 12.0.0 | Mar 2020 |
| 13.0.0 | Jun 2021 |
| 14.0.0 | Nov 2023 |
| 15.0.0 | Oct 2025 |
The cadence is roughly one major version per 18–24 months, often with a long gap punctuated by a few patch releases. See lore for narrative history.
Where the activity concentrates
- The biggest "churn hotspots" by file size —
crates/core/flags/defs.rs,crates/printer/src/standard.rs,crates/ignore/src/walk.rs— are also the most-modified files in recent commits, since each new flag, output option, or ignore rule adds to them. - Stable, low-touch code lives in
crates/grep/src/lib.rs(six lines, rarely changes),crates/matcher/src/lib.rs(the trait, rarely modified except for new default methods), andcrates/cli/src/escape.rs(an 18-line helper that has barely changed since 2018).
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.