design

Technical Guide

Regex With -i Runs 2.7-3.1x Slower Than ripgrep on a Cached File — Wide Field Part 9: Where .NET and Rust Regex Agree, and Where the Rewrite Changes Your Answer

[Update, 16 October 2026] Speed today — the second run of -E -i went from a 1/2.7–1/3.1 loss to faster than ri…
Technical Guide

Our JSON Lines Carry Less Than ripgrep’s –json — Wide Field Part 11: Three Fixed Keys, and –tune Measures the Thread Count (6.33 to 16.41 GB/s From 1 to 8)

cut -d: broke. It was splitting search output into a filename and a line number, and the drive letter in C:/lo…
Technical Guide

Writing gz Without Piping rg Into gzip — Wide Field Part 10: 117.20 s to 11.89 s on 50 GB, and Level With ripgrep at 3 GB

The shape did not come back. A log kept as bz2, searched, and the result wanted as bz2 again. Seven compressio…
Technical Guide

ripgrep’s -g Can Exclude Files; Ours Cannot Yet — Wide Field Part 8: Why a File Pattern Is One Quoted Argument, and the Five Things We Fixed

Forget the quotes and it refuses. Type uvf .log ERROR and you get an error telling you to quote the pattern. r…
Technical Guide

Our CLI Gave Three Different Counts Where ripgrep Gave One — Part 5: No Default Cap, and grep’s Exit Codes for “Incomplete”

The count changed every time. Same file, same command, same machine. Three runs in a row: 356,940 hits, then 3…
Technical Guide

We Threw the CLI’s Results Away and Read 50 GB Twice — Part 6: One Temp File Cut End-to-End to 50.76 s (klogg: 108.14 s)

We were throwing the results away. Search a 50 GB file from the command line, then open the hits in the GUI. C…
Technical Guide

We Made Our CLI as Fast as ripgrep on 50 GB — Part 2: Folding 2.5 Passes Into One (203 s to 50.82 s)

203 seconds became 50.82. We did not rewrite the hot loop, and we did not parallelise anything. The only thing…