出来事の日付:2026年7月26日。 AstralはRuff 0.16をリリースし、このPythonツールのデフォルトのLint対象を59ルールから413ルールへ拡大するとともに、フォーマット機能と診断機能を追加した。同社によると、このバージョンで大半の利用者に影響する破壊的変更は比較的少なく、主な例外はデフォルトルールの拡大だという。
RuffはRustで実装されたPython向けのリンター兼フォーマッターで、Black、Flake8プラグイン、isort、pydocstyle、pyupgradeなどのツールが一般に担う作業を統合することを目的としている。ルールの総数は、デフォルトが前回変更されたバージョン0.1.0時点の708件から、新リリースでは968件へ増えた。
拡大されたデフォルトの選択範囲には、構文上の問題や即座に発生するランタイムエラーのチェックに加え、flake8-bugbear、pyupgrade、Ruff独自のRUFカテゴリーのルールが含まれる。一方、Astralは、より主観的な18件のpycodestyleおよびpyflakesルールをデフォルトセットから削除した。従来の動作を必要とするプロジェクトは、以前のルール群を設定で明示的に選択できる。したがって既存ユーザーは、自動チェックにこのリリースを導入する前に、新たに有効化された診断を確認する必要がある。
Ruff 0.16は、Markdownに埋め込まれたPythonコードもフォーマットできる。`python`、`py`、`python3`、`py3`、`pyi`、`pycon`のラベルが付いたフェンス付きブロックを認識し、スタブや対話型セッションには専用の処理を適用する。言語ラベルが波括弧内に記載されていればQuartoのコードブロックにも対応するが、`.qmd`拡張子を使用するプロジェクトでは拡張子のマッピングが必要になる場合がある。ユーザーは、個々の領域についてフォーマットを無効にしたり、設定によってMarkdownファイルを除外したりできる。
このリリースでは、Ruffの抑制システムに独立したコメントが追加された。`ruff: ignore`ディレクティブは同じ行または次の論理行にある診断を抑制でき、`ruff: file-ignore`はファイル全体に適用される。どちらにも人間が読める理由を含めることができ、コマンドラインツールで無視コメントを自動的に追加することもできる。プレビューモードでは、コメントからコードだけでなくルール名も参照できる。
診断の表示方法も変更された。Ruffは、リンターとフォーマッターが提案する修正を、説明付きの診断と並べ、通常の完全出力内に差分として表示するようになった。フォーマッターのチェックモードでは、機械可読なJSONやGitHubおよびGitLabのアノテーション向け形式など、リンターですでに利用できる出力形式が使えるようになった。
小規模な互換性変更の一つはJSONの利用者に影響する。ファイル名および位置関連のフィールドは、プレースホルダーの空文字列やデフォルトの行・列の値ではなく、`null`になる場合がある。Astralによると、この表現はRuffの内部診断とよりよく一致しており、今後さらに多くのルールで使われる可能性がある。
これまでプレビュー限定だった複数のルールと動作も安定版になった。総合すると、バージョン0.16では、初期設定のままで検出できるエラーが増える一方、Ruffの役割はPythonソースファイル以外にも広がった。Lint出力を固定しているチームやJSON診断を解析するチームでは、移行作業が最も明確になる。拡大されたルールを評価し、後段のツールがnullを許容する位置フィールドを受け入れられることを確認する必要がある。



