Ruff v0.16.0
read at source ↗ astral.sh
Ruff v0.16.0
Source: Astral Date: 2026-07-23 URL: https://astral.sh/blog/ruff-v0.16.0
Summary
Ruff’s first minor bump in a while is a posture shift, not a feature drop: the default rule set jumps from 59 to 413 rules — Ruff now lints far more aggressively out of the box, with no config. It also formats Python code blocks inside Markdown by default, adds ruff: ignore[CODE] end-of-line/preceding-line suppression comments (mirroring noqa), shows fixes inline in check/format --check output, and gives format --check the linter’s full output formats (including github/gitlab CI annotations). A batch of security (S-prefixed) and correctness rules stabilized out of preview.
Implications
Feeds the untrusted-config / distrust posture thread from a different angle: where hk and mise treat config as hostile input, Ruff flips the default toward maximum scrutiny of the code itself — 413 rules on by default is an “assume the code needs checking” stance replacing an opt-in-strictness one.
- Default-strict is the trend. Tools are moving the burden from “opt into scrutiny” to “opt out of it.” A 7× jump in default rules is the lint-layer version of the same default-suspicion move the dev-tooling layer keeps making this month.
- CI annotation parity (
format --check --output-format github) closes the last gap between lint and format in pipeline reporting — the formatter is now a first-class CI citizen, not a pre-commit-only concern. - Markdown code formatting by default extends the formatter’s reach into docs/literate surfaces — the same “format everything, everywhere” expansion that agent-authored codebases (lots of Markdown, lots of embedded snippets) benefit from.