Ripgrep is faster than grep, ag, git grep, ucg, pt, sift (2016)
Ripgrep (`rg`), a fast Rust-based alternative to traditional `grep`, is widely praised for its performance and thoughtful engineering, to the point that many modern tools and code editors now embed it as their default search backend. Commenters highlight both its strengths—speed on large codebases, smart defaults like honoring `.gitignore`, and reusable internal crates—and its pain points, such as surprising default exclusion of files, incompatibility with stock `grep` syntax, and challenges using it on locked-down or nonstandard environments. The conversation situates ripgrep among a broader ecosystem of search tools (like `ag`, `ugrep`, and indexed approaches) and reflects a recurring tradeoff between powerful, opinionated tools and the simplicity and ubiquity of long-established Unix utilities.
Adoption and Use Cases
- Widely seen as a “killer app” in Rust; many commenters use it as their default search tool.
- Embedded as the search backend in editors and tools (VS Code, AI coding assistants, ArchiveBox, Cursor before their custom engine).
- Some rely on traditional
grep/git grepinstead, mainly for ubiquity on remote or locked-down systems.
Performance and Competing Tools
- Praised for speed, especially on large codebases; OS disk caching can dominate first-run latency.
- Alternatives mentioned:
ugrep,qgrep(indexed),cgrep,gg,nowgrep(Windows),ag,pt,ack,upgrep,rgafor binary formats. - Some benchmarks and blog posts claim specific competitors can beat ripgrep in certain scenarios or resource usage (e.g., CPU time, indexing).
Ignore Rules, Defaults, and POLA
- Major controversy: by default,
rgrespects.gitignore,.ignore, hidden files, and encodings. - Supporters: default ignoring of
node_modules, minified JS, build artifacts makes searches usable and fast. - Critics: behavior violates the Principle of Least Astonishment; searches silently miss files, eroding trust.
- Workarounds: flags like
-u/-uu/-uuu,--no-ignore,--no-ignore-vcs,--ignore-file, config files, or aliases; some find this too complex and revert to plaingrep.
Reliability and “Missing Results” Stories
- Several anecdotes of
rgfailing to find text thatgrepdid, causing confusion and panic. - Common root causes suggested: ignored/hidden files, VCS-specific excludes, binary or UTF‑16 files, encoding detection.
- At least one report of data truncation in a large
rgpipeline; details and root cause are unclear. - Some users now routinely cross-check with
grep.
CLI UX, Naming, and Configuration
- Discussion over naming (
rgvsripgrep, lowercase binaries likenvim) and reliance on aliases. - In corporate/locked-down Windows environments, persistent shell config or aliases may be disallowed, limiting customization.
- Some prefer sticking close to stock tools (
grep,awk,sed) to avoid managing custom setups.
Ecosystem, Architecture, and Ports
- Ripgrep is built from many reusable Rust crates, making it easy to repurpose components.
- Notable porting effort to IRIX, using reverse engineering tools and LLM assistance to fix ABI issues and enable modern software on legacy systems.