Open-Source Wikis

/

ripgrep

/

By the numbers

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-regexp flag").
  • Total commits: 2,209.
  • Total Rust source lines: 52,266 across 100 .rs files.
  • 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:"
4

Four 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
10

Ten 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 like sherlock, used across feature and regression tests).
  • Test harness: tests/util.rs (17K) defines Dir and TestCommand, the rgtest! macro lives in tests/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), and crates/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.

By the numbers – ripgrep wiki | Factory