0.15.0
Breaking Changes📦 ruffView on GitHub →
⚠ 6 breaking✨ 2 features🐛 9 fixes🔧 34 symbols
Summary
This release introduces the new 2026 style guide for formatting and stabilizes numerous linter rules. It also adds support for block-level suppression comments in the linter.
⚠️ Breaking Changes
- Ruff now formats code according to the 2026 style guide, requiring review of formatter changes.
- The linter now supports block suppression comments (e.g., # ruff: disable[N803] ... # ruff: enable[N803]).
- The `ruff:alpine` Docker image is now based on Alpine 3.23 (up from 3.21).
- The `ruff:debian` and `ruff:debian-slim` Docker images are now based on Debian 13 "Trixie" instead of Debian 12 "Bookworm."
- Binaries for the `ppc64` (64-bit big-endian PowerPC) architecture are no longer included in releases.
- Ruff now resolves all `extend`ed configuration files before falling back on a default Python version.
Migration Steps
- Review the formatter section of the blog post for changes related to the 2026 style guide.
- If using `ppc64` architecture, you may need to build Ruff manually.
✨ New Features
- The formatter now supports applying formatting to Markdown code blocks (preview feature).
- The `--color` CLI option was added to force colored output.
🐛 Bug Fixes
- Fixed suppression indentation matching.
- The `--output-format` flag is now respected when running Ruff in `--watch` mode, defaulting to `full` output format.
- Rule `A003` (`builtin-attribute-shadowing`) now detects shadowed built-in names in additional contexts like decorators, default arguments, and other attribute definitions.
- Rule `PYI016` (`duplicate-union-member`) now considers `typing.Optional` when searching for duplicate union members.
- Rule `SIM905` (`split-static-string`) now offers an autofix when the `maxsplit` argument is provided, even without a `sep` argument.
- Rule `SIM910` (`dict-get-with-none-default`) now applies to more types of key expressions.
- Rule `UP008` (`super-call-with-parameters`) now has a safe fix when it will not delete comments.
- Rule `UP043` (`unnecessary-default-type-args`) now applies to stub (.pyi) files on Python versions before 3.13.
- Notebooks are now identified by LSP `didOpen` instead of the `.ipynb` file extension.