Astral shipped Ruff v0.16.0 on July 23rd, bumping the default-enabled ruleset from 59 rules to 413 — a 7× jump that hadn't changed since v0.1.0. The total rule library also grew from 708 to 968. Teams with unpinned ruff dev dependencies are already seeing CI pipelines fail on previously-ignored issues: Simon Willison reported 1,618 violations in sqlite-utils alone on first run, covering categories like bare-except catches, timezone-naive datetime calls, and useless attribute accesses.
The expansion is deliberately agent-friendly. Astral — now operating under OpenAI — structures each diagnostic with enough context (rule code, file path, line range, plain-English fix hint) that AI coding tools can consume and remediate the output directly. Willison used OpenAI Codex (GPT-5.6 Sol) on LLM and sqlite-utils and Claude Code (Opus 5) on Datasette to bulk-apply fixes, with the command `uvx ruff@latest check . --fix --unsafe-fixes` handling the majority of mechanical changes automatically.
Other notable additions in v0.16: Ruff can now format Python code blocks embedded in Markdown files (relevant for README examples and Quarto notebooks); a new `ruff: ignore` comment syntax supplements the older `# noqa` style with range and file-level suppression; and the `check` and `format --check` commands now render fix diffs inline rather than requiring a separate `--diff` flag. Teams that want to preserve the old behavior can pin back with `select = ["E4", "E7", "E9", "F"]` in their Ruff config.