9 Nov 2026
A stray closing bracket in a search pattern is now plain text
- What was broken
- GNU grep treats a closing round bracket with no opening one as an ordinary character. This grep rejected the pattern with an error and stopped.
- What I changed
- Extended patterns now accept it as a literal character, while basic patterns keep their existing rules.
- Why it matters
- Scripts that search with these patterns work the same as with GNU grep.
see the code, #150 ↗ (opens in a new tab)
9 Nov 2026
Line numbers and byte offsets now line up like GNU grep
- What was broken
- With the option that lines up output with a tab, a file read from standard input got far too much padding, and byte offsets got none at all.
- What I changed
- The padding now follows the size of the input and also covers byte offsets, matching GNU grep.
- Why it matters
- Output has the same columns as GNU grep, so scripts that read it keep working.
see the code, #149 ↗ (opens in a new tab)
24 Oct 2026
The last matching include or exclude rule now decides
- What was broken
- When a search mixed rules for which files to include and which to skip, any skip rule won, whatever the order. GNU grep lets the last rule that matches a file decide, so the two picked different files.
- What I changed
- The rules are now kept in the order you typed them, and the last one that matches a file decides, like GNU grep.
- Why it matters
- Searches over a folder look at the same files as GNU grep.
see the code, #146 ↗ (opens in a new tab)
← every project