- Sources: Astral release post, Ruff CHANGELOG, Ruff default rules, HN 49056112
- Summary: Ruff 0.16.0 was released 2026-07-23. The changelog records the default rule set growing from 59 rules to 413, so a project that upgrades without pinning its own
select list gets a large increase in diagnostics. The changelog lists six breaking changes for this release, so five beyond the rule-count change. Ruff now formats Python code blocks inside Markdown files by default. Fixes are printed in check and format --check output. format --check gained the linter output formats including github and gitlab. Ruff now honours ruff: ignore suppression comments placed at end of line or on the preceding line. In JSON output the filename, location, end_location, and fix.edits location fields may now be null instead of defaulting to an empty string and to row 1 column 1, which breaks consumers that assumed those fields were always populated. The release post at astral.sh returns a JavaScript shell to this run's fetch, so the figures above are read from the repository CHANGELOG. - Why it matters: A linter that multiplies its own default rule count by seven turns a routine version bump into a CI failure for every repository that relied on the previous defaults.
- Follow-up: Watch for whether the nullable JSON location fields break published Ruff integrations and editor plugins, and for whether the default-rule expansion is revisited.
send feedback on this story