世界を動かす技術を、日本語で。

Ripgrep 15.0.0

2025年10月18日原文(github.com)

概要

  • ripgrep 15の主な内容は バグ修正パフォーマンス改善小規模な新機能追加
  • gitignore関連の問題大規模gitignoreファイルのメモリ使用量 のバグ修正。
  • 新たに Windows aarch64対応jjリポジトリ対応 などのプラットフォーム強化。
  • -r/--replaceと--jsonの併用ネストした中括弧のglob など機能拡張。
  • CIやリリースアーティファクト の変更、 LTO有効化 による軽量化。

ripgrep 15の新機能と改善点

  • ripgrep 15 は主に バグ修正軽微な機能追加パフォーマンス向上 が中心
  • ripgrep は正規表現でディレクトリを再帰的に検索する 高速検索ツール
  • デフォルトで gitignoreルール を尊重し、 隠しファイルやバイナリファイル を自動的にスキップ
  • jjリポジトリ(Jujutsu) もgitリポジトリ同様に扱い、gitignoreを適用
  • Windows aarch64 向けリリースアーティファクト追加、 powerpc64 向けは生成停止

パフォーマンス改善

  • LTO(Link Time Optimization) をフル有効化し、 バイナリサイズ削減性能向上
  • -z/--search-zip 未使用時、Windowsで 補助バイナリ解決処理 をスキップ
  • Windows環境で ハイパーリンク出力時のパス正規化 を回避し高速化
  • -A/--after-context オプション使用時の大規模値でのパフォーマンス向上

バグ修正

  • gitignoreの親ディレクトリ適用バグ大規模gitignoreファイルのメモリ問題 など解消
  • rg -vf file でfileが空の場合、全件一致するよう修正
  • .gitignore先頭のUTF-8 BOM を無視する処理追加
  • --stats出力の検索バイト数誤表示globパターンの誤動作 など細かな不具合修正
  • -m/--max-countと-U/--multiline 併用時の一致数過多問題を修正
  • -r/--replaceフラグ使用時 の行終端記号保持など細部を改善
  • --json 利用時の統計値誤りや 絶対パス検索時のgitignoreバグ も修正

新機能・拡張

  • -r/--replace--json の併用をサポート
  • fishシェル補完 がripgrep設定ファイルを考慮
  • --color のstyle属性にitalic追加、 --hyperlink-format の補完強化
  • .jjディレクトリ を含むディレクトリをgitリポジトリとして扱う機能
  • マルチスレッド時 にCLIで指定した順番でファイルを検索する仕様
  • ハイライトカラータイプ 追加、マッチしないテキストの装飾が可能に
  • globパターン入れ子の中括弧(ネストしたalternates) をサポート

プラットフォーム・リリース関連

  • Windows aarch64 用バイナリ配布開始
  • powerpc64 向けアーティファクト生成は停止(CI問題のため、要望があれば再検討)
  • macOS aarch64 向けリリースで PCRE2の静的リンク を実施

まとめ

  • ripgrep 15は 安定性使い勝手 の向上を目指したアップデート
  • バグ修正細かな機能追加 が中心で、既存ユーザーも安心して移行可能
  • パフォーマンス改善新プラットフォーム対応 で、より広範な環境で利用可能

Hackerたちの意見

ripgrepのコードベースは、まさに「飲み物を pourして、最高に居心地のいい椅子に座って、高品質なソフトウェアを読む」ためのものだよ。ちょっとクリックしてみて、その素晴らしさに驚いてみて。

fdと同じように、rgを使うのが楽しいし、この新しいコマンドラインツールのセットも好きだな。

ripgrepとfdの両方の作者がAstralで働いてるって知ったんだけど、Astralがこんなに素晴らしいソフトウェアを作るのも納得だね。

両方とも、パラメータなしのデフォルトが99%の時に必要なものになってるのが好き。時間の節約になるよ。rgとfd。

すごく便利なツールで、使いやすい。最初はLinuxで使い始めて、今はWindowsでも使ってる。多分、これのおかげで正規表現を最初の検索オプションとして使うようになったんだ。標準のワイルドカードで検索してから正規表現に頼ることがなくなった。

普通のgrepよりも優れてるし、便利なrg --filesもあるよ。

ripgrepは毎日仕事で使ってる。コマンドラインでも、vscodeで検索する時でもね。ありがとう、burntsushi!

追加してほしい機能は「拡張子」フラグだな。-gに相当するけど、指定した引数を拡張子として扱うやつ(だから、rg -e c,hの代わりにrg -g '*.{c,h}')。99%の時、グロブパターンを使うのは拡張子にマッチさせるためなんだ。

-t/--typeフラグ見たことある?君の例は-tcって書けるよ。それに、ripgrepにまだない一般的なタイプは自分で定義できるからね。

ripgrepは、僕がRustに興味を持った主な理由の一つなんだ。めっちゃうまく動いて、Rustで書かれてるってことに興味が湧いたんだよね。何年も経った今、ほんとに良かったと思ってる。以来、毎日rgを使ってるよ!

今週、gitで管理されているファイルだけにripgrepをかける小さなbash関数を書いたんだ:rgg() { readarray -d '' -t FILES これ、バイナリファイルやコミットされたドットファイルがたくさんあるディレクトリではかなり速くなるよ。ドットファイルを検索するには-uuが必要だけど、それだとバイナリファイルも検索しちゃうんだ。数百のファイルがあるリポジトリでは、git ls-filesのオーバーヘッドがちょっと大きいね。

このコメントを書いた後、もう一度manページを読んでみたら、-uuの代わりに使える-.フラグを見つけたよ。gitで管理されている隠しファイルを検索できたらいいけど、全ての管理ファイルをリストするためにgitに問い合わせるオーバーヘッドは、Rustでもかなり大きいかもね。

Hacker Newsで議論の続きを見る