# What changed in ripgrep

> 31 changes in ripgrep 15 from its official release notes, upgrade guides and advisories: 2 breaking, 3 new APIs and options. Each one cited. Sources checked 2026-10-25. HTML: https://unstale.sh/pypi/ripgrep/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## ripgrep 15

### Breaking changes

- Release artifacts are no longer generated for powerpc64 because the CI release workflow stopped working. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- When the file passed to -f is empty, rg -vf now matches everything. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)

### New APIs and options

- Adds a hyperlink alias for Cursor. (15.1.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.1.0)
- Adds the highlight color type for styling non-matching text in a matching line. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- Adds italic to the available style attributes for --color. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)

### Performance

- Directory traversal is faster on very large corpora. (15.2.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.2.0)

### Behavior and default changes

- When this option is used, ripgrep no longer checks for the existence of `.jj`. (15.2.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.2.0)
- The default set of file types available for filtering has been enhanced. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- With multithreading, files are now scheduled for search in the order given on the command line. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- Fish shell completions now take ripgrep's config file into account. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- Globs now support nested curly-brace alternates. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- Directories containing .jj are treated as git repositories, so ripgrep respects Jujutsu gitignores. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- PCRE2 is statically compiled into macOS release artifacts on aarch64. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)

### Tooling

- Completions for --hyperlink-format are improved in bash, fish, and zsh. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- Release artifacts are now available for aarch64 on Windows. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)

### Fixes and other changes

- Release binaries are now included for this platform. (15.2.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.2.0)
- ripgrep now respects this Git configuration environment variable. (15.2.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.2.0)
- ripgrep now respects this Git configuration environment variable. (15.2.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.2.0)
- Fixes a matching bug when searching across multiple directories. (15.2.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.2.0)
- Fixes a regression in line buffering that could delay output or cause problems with tail -f. (15.1.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.1.0)
- Fixes the inverted exit code when -q is used with --files-without-match. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- A UTF-8 BOM marker at the start of .gitignore and similar files is now ignored. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- Fixes a memory usage regression when handling very large gitignore files. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- Fixes several gitignore matching bugs, including rules from parent directories, ancestor filters for whitelisted hidden files, and global gitignores when searching absolute paths. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- Fixes mishandling of globs that end with a period. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- Fixes incorrect summary statistics when using --json. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- Fixes a rare panic for some classes of large regexes on large haystacks. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- Fixes showing too many matches when --max-count is used with --multiline. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- Fixes a panic when --multiline and --replace are used together. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- The replacement flag now works with --json and preserves line terminators. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
- Fixes incorrect bytes-searched output in --stats. (15.0.0) — [release notes](https://github.com/BurntSushi/ripgrep/releases/tag/15.0.0)
