Skip to content

Commit c2a8815

Browse files
authored
Release 0.15.8 (#24217)
- **changelog** - **everything else**
1 parent d444d52 commit c2a8815

File tree

14 files changed

+82
-20
lines changed

14 files changed

+82
-20
lines changed

CHANGELOG.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,67 @@
11
# Changelog
22

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+
365
## 0.15.7
466

567
Released on 2026-03-19.

Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ curl -LsSf https://astral.sh/ruff/install.sh | sh
152152
powershell -c "irm https://astral.sh/ruff/install.ps1 | iex"
153153

154154
# For a specific version.
155-
curl -LsSf https://astral.sh/ruff/0.15.7/install.sh | sh
156-
powershell -c "irm https://astral.sh/ruff/0.15.7/install.ps1 | iex"
155+
curl -LsSf https://astral.sh/ruff/0.15.8/install.sh | sh
156+
powershell -c "irm https://astral.sh/ruff/0.15.8/install.ps1 | iex"
157157
```
158158

159159
You can also install Ruff via [Homebrew](https://formulae.brew.sh/formula/ruff), [Conda](https://anaconda.org/conda-forge/ruff),
@@ -186,7 +186,7 @@ Ruff can also be used as a [pre-commit](https://pre-commit.com/) hook via [`ruff
186186
```yaml
187187
- repo: https://github.com/astral-sh/ruff-pre-commit
188188
# Ruff version.
189-
rev: v0.15.7
189+
rev: v0.15.8
190190
hooks:
191191
# Run the linter.
192192
- id: ruff-check

crates/ruff/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ruff"
3-
version = "0.15.7"
3+
version = "0.15.8"
44
publish = true
55
authors = { workspace = true }
66
edition = { workspace = true }

crates/ruff_linter/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ruff_linter"
3-
version = "0.15.7"
3+
version = "0.15.8"
44
publish = false
55
authors = { workspace = true }
66
edition = { workspace = true }

crates/ruff_linter/src/rules/ruff/rules/fstring_percent_format.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use crate::checkers::ast::Checker;
2727
/// f"hello {first} {second}"
2828
/// ```
2929
#[derive(ViolationMetadata)]
30-
#[violation_metadata(preview_since = "NEXT_RUFF_VERSION")]
30+
#[violation_metadata(preview_since = "0.15.8")]
3131
pub(crate) struct FStringPercentFormat;
3232

3333
impl Violation for FStringPercentFormat {

crates/ruff_linter/src/rules/ruff/rules/unnecessary_if.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ use crate::{AlwaysFixableViolation, Edit, Fix, fix};
5959
/// - [`empty-type-checking-block (TC005)`]: Detects empty `if TYPE_CHECKING`
6060
/// blocks specifically.
6161
#[derive(ViolationMetadata)]
62-
#[violation_metadata(preview_since = "NEXT_RUFF_VERSION")]
62+
#[violation_metadata(preview_since = "0.15.8")]
6363
pub(crate) struct UnnecessaryIf;
6464

6565
impl AlwaysFixableViolation for UnnecessaryIf {

crates/ruff_linter/src/rules/ruff/rules/useless_finally.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ use crate::{Edit, Fix, FixAvailability, Violation};
5959
/// so RUF072 must remove it first
6060
/// - [`useless-try-except`][TRY203]: Flags `try/except` that only re-raises
6161
#[derive(ViolationMetadata)]
62-
#[violation_metadata(preview_since = "NEXT_RUFF_VERSION")]
62+
#[violation_metadata(preview_since = "0.15.8")]
6363
pub(crate) struct UselessFinally;
6464

6565
impl Violation for UselessFinally {

crates/ruff_wasm/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ruff_wasm"
3-
version = "0.15.7"
3+
version = "0.15.8"
44
publish = false
55
authors = { workspace = true }
66
edition = { workspace = true }

docs/formatter.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ support needs to be explicitly included by adding it to `types_or`:
306306
```yaml title=".pre-commit-config.yaml"
307307
repos:
308308
- repo: https://github.com/astral-sh/ruff-pre-commit
309-
rev: v0.15.7
309+
rev: v0.15.8
310310
hooks:
311311
- id: ruff-format
312312
types_or: [python, pyi, jupyter, markdown]

0 commit comments

Comments
 (0)