|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## 0.15.8 |
| 4 | + |
| 5 | +Released on 2026-03-26. |
| 6 | + |
| 7 | +### Preview features |
| 8 | + |
| 9 | +- \[`ruff`\] New rule `unnecessary-if` (`RUF050`) ([#24114](https://github.com/astral-sh/ruff/pull/24114)) |
| 10 | +- \[`ruff`\] New rule `useless-finally` (`RUF072`) ([#24165](https://github.com/astral-sh/ruff/pull/24165)) |
| 11 | +- \[`ruff`\] New rule `f-string-percent-format` (`RUF073`): warn when using `%` operator on an f-string ([#24162](https://github.com/astral-sh/ruff/pull/24162)) |
| 12 | +- \[`pyflakes`\] Recognize `frozendict` as a builtin for Python 3.15+ ([#24100](https://github.com/astral-sh/ruff/pull/24100)) |
| 13 | + |
| 14 | +### Bug fixes |
| 15 | + |
| 16 | +- \[`flake8-async`\] Use fully-qualified `anyio.lowlevel` import in autofix (`ASYNC115`) ([#24166](https://github.com/astral-sh/ruff/pull/24166)) |
| 17 | +- \[`flake8-bandit`\] Check tuple arguments for partial paths in `S607` ([#24080](https://github.com/astral-sh/ruff/pull/24080)) |
| 18 | +- \[`pyflakes`\] Skip `undefined-name` (`F821`) for conditionally deleted variables ([#24088](https://github.com/astral-sh/ruff/pull/24088)) |
| 19 | +- `E501`/`W505`/formatter: Exclude nested pragma comments from line width calculation ([#24071](https://github.com/astral-sh/ruff/pull/24071)) |
| 20 | +- Fix `%foo?` parsing in IPython assignment expressions ([#24152](https://github.com/astral-sh/ruff/pull/24152)) |
| 21 | +- `analyze graph`: resolve string imports that reference attributes, not just modules ([#24058](https://github.com/astral-sh/ruff/pull/24058)) |
| 22 | + |
| 23 | +### Rule changes |
| 24 | + |
| 25 | +- \[`eradicate`\] ignore `ty: ignore` comments in `ERA001` ([#24192](https://github.com/astral-sh/ruff/pull/24192)) |
| 26 | +- \[`flake8-bandit`\] Treat `sys.executable` as trusted input in `S603` ([#24106](https://github.com/astral-sh/ruff/pull/24106)) |
| 27 | +- \[`flake8-self`\] Recognize `Self` annotation and `self` assignment in `SLF001` ([#24144](https://github.com/astral-sh/ruff/pull/24144)) |
| 28 | +- \[`pyflakes`\] `F507`: Fix false negative for non-tuple RHS in `%`-formatting ([#24142](https://github.com/astral-sh/ruff/pull/24142)) |
| 29 | +- \[`refurb`\] Parenthesize generator arguments in `FURB142` fixer ([#24200](https://github.com/astral-sh/ruff/pull/24200)) |
| 30 | + |
| 31 | +### Performance |
| 32 | + |
| 33 | +- Speed up diagnostic rendering ([#24146](https://github.com/astral-sh/ruff/pull/24146)) |
| 34 | + |
| 35 | +### Server |
| 36 | + |
| 37 | +- Warn when Markdown files are skipped due to preview being disabled ([#24150](https://github.com/astral-sh/ruff/pull/24150)) |
| 38 | + |
| 39 | +### Documentation |
| 40 | + |
| 41 | +- Clarify `extend-ignore` and `extend-select` settings documentation ([#24064](https://github.com/astral-sh/ruff/pull/24064)) |
| 42 | +- Mention AI policy in PR template ([#24198](https://github.com/astral-sh/ruff/pull/24198)) |
| 43 | + |
| 44 | +### Other changes |
| 45 | + |
| 46 | +- Use trusted publishing for NPM packages ([#24171](https://github.com/astral-sh/ruff/pull/24171)) |
| 47 | + |
| 48 | +### Contributors |
| 49 | + |
| 50 | +- [@bitloi](https://github.com/bitloi) |
| 51 | +- [@Sim-hu](https://github.com/Sim-hu) |
| 52 | +- [@mvanhorn](https://github.com/mvanhorn) |
| 53 | +- [@chinar-amrutkar](https://github.com/chinar-amrutkar) |
| 54 | +- [@markjm](https://github.com/markjm) |
| 55 | +- [@RenzoMXD](https://github.com/RenzoMXD) |
| 56 | +- [@vivekkhimani](https://github.com/vivekkhimani) |
| 57 | +- [@seroperson](https://github.com/seroperson) |
| 58 | +- [@moktamd](https://github.com/moktamd) |
| 59 | +- [@charliermarsh](https://github.com/charliermarsh) |
| 60 | +- [@ntBre](https://github.com/ntBre) |
| 61 | +- [@zanieb](https://github.com/zanieb) |
| 62 | +- [@dylwil3](https://github.com/dylwil3) |
| 63 | +- [@MichaReiser](https://github.com/MichaReiser) |
| 64 | + |
3 | 65 | ## 0.15.7 |
4 | 66 |
|
5 | 67 | Released on 2026-03-19. |
|
0 commit comments