GitHub
07/22/2026, 12:05 PMruff from 0.15.20 to 0.15.21
Release notes
Sourced from ruff's releases.
0.15.21
Release Notes
Released on 2026-07-09.
Preview features
• Addfor adding--add-ignorecomments (#26346)ruff:ignore
• [] Dropflake8-comprehensionstuple comprehension preview behavior (#25707)C409
• Avoid whitespace normalization when formatting comments (#26455)
• [] Lint and fix use of deprecatedpyupgradedecorators (abc) (#26417)UP051
Bug fixes
• Refine non-empty f-string detection (#26526)
• Detect syntax errors in individual notebook cells (#26419)
• [] Fixflake8-implicit-str-concatautofix incorrectly strippingISC003from comments (#26554)+
Rule changes
• [] Markflake8-executablefix as unsafe (#26033)EXE004
• [] Markflake8-pyifixes as unsafe in Python files (#26533)PYI061
• [] Skippydocstylein stub files (overload-with-docstring) (#26318)D418
Performance
• Avoid per-token source index visitor calls (#26506)
• Cache parenthesized expression boundaries in the formatter (#26344)
• Improve performance of rendering edits in preview mode (#26565)
• Inlinein formatter (#26429)fits_element
• Inline formatter printing hot paths (#26504)
• Lazily create builtin bindings (#26510)
• Skip empty trivia scans in the source indexer (#26507)
• Use ICF for macOS release builds (#25780)
Formatter
• Addto--extend-exclude(#26372)ruff format
Documentation
• Add "How does Ruff's import sorting compare to isort?" link to README (#26530)
• Fix Mozilla Firefox repository link in README (#26537)
• [] Fix misleading docstring forflake8-bandit(mako-templates) (#26432)S702
• [] Fix non-triggering example forruff(if-key-in-dict-del) (#26433)RUF051
Contributors
• `@EkriirkE`
• `@tingerrr`... (truncated) Changelog Sourced from ruff's changelog.
0.15.21
Released on 2026-07-09.
Preview features
• Addfor adding--add-ignorecomments (#26346)ruff:ignore
• [] Dropflake8-comprehensionstuple comprehension preview behavior (#25707)C409
• Avoid whitespace normalization when formatting comments (#26455)
• [] Lint and fix use of deprecatedpyupgradedecorators (abc) (#26417)UP051
Bug fixes
• Refine non-empty f-string detection (#26526)
• Detect syntax errors in individual notebook cells (#26419)
• [] Fixflake8-implicit-str-concatautofix incorrectly strippingISC003from comments (#26554)+
Rule changes
• [] Markflake8-executablefix as unsafe (#26033)EXE004
• [] Markflake8-pyifixes as unsafe in Python files (#26533)PYI061
• [] Skippydocstylein stub files (overload-with-docstring) (#26318)D418
Performance
• Avoid per-token source index visitor calls (#26506)
• Cache parenthesized expression boundaries in the formatter (#26344)
• Improve performance of rendering edits in preview mode (#26565)
• Inlinein formatter (#26429)fits_element
• Inline formatter printing hot paths (#26504)
• Lazily create builtin bindings (#26510)
• Skip empty trivia scans in the source indexer (#26507)
• Use ICF for macOS release builds (#25780)
Formatter
• Addto--extend-exclude(#26372)ruff format
Documentation
• Add "How does Ruff's import sorting compare to isort?" link to README (#26530)
• Fix Mozilla Firefox repository link in README (#26537)
• [] Fix misleading docstring forflake8-bandit(mako-templates) (#26432)S702
• [] Fix non-triggering example forruff(if-key-in-dict-del) (#26433)RUF051
Contributors
• `@EkriirkE`
• `@tingerrr`
• `@s-rigaud`... (truncated) Commits • `3e1f636` Bump 0.15.21 (#26676) • `4059807` [ty] Infer metaclass-declared attributes on class instances (#26512) • `013e5d0` [ty] Use a dedicated project name type (#26665) • `7ad39ad` [ty] Avoid allocating decorated parameter names (#26666) • `c36f662` Improve perform… meltano/hub
GitHub
07/22/2026, 1:57 PM