github/astral-sh/ruff

astral-sh/ruff: 0.15.15

Brief

Ruff 0.15.15 (released 2026-05-28) delivers a mix of correctness fixes, documentation clarifications, performance work, and broader platform packaging. Notable fixes include Markdown closing-fence handling (#25310), pyflakes changes that report duplicate imports inside typing.TYPE_CHECKING as F811 (#22560) and treat function-scope bare annotations as locals per PEP 526 (F821, #21540), plus expanded semantic errors for invalid walruses (#25415) and a formatter fix for lambdas nested in f-strings (#25398). Performance optimizations target the lexer and AST: eliminating redundant TokenValue drops (#25300), right‑sizing the initial token Vec to reduce memory (#25354), and switching to ThinVec for Stmt nodes (#25361). The release also updates docs for several plugins (C416, C901, UP007/UP045, FURB192, RUF013), adjusts LSP server codeAction/resolve behavior (#25365), and publishes prebuilt binaries for many architectures (with checksums) plus GitHub Artifact Attestations verifiable via the GitHub CLI.

Why it matters

astral-sh/ruff 0.15.15 released 2026-05-28 with installer scripts (curl/sh and PowerShell) and signed artifacts; release artifacts include attestations verifiable via `gh attestation verify` against the astral-sh/ruff repo.

Key details

  • Bug and preview fixes include Markdown closing-fence handling (#25310), reporting duplicate imports inside typing.TYPE_CHECKING as F811 (#22560), treating function-scope bare annotations as locals per PEP 526 (F821, #21540), expanded semantic errors for invalid walruses (#25415), and a formatter fix for lambdas nested in f-strings (#25398).
  • Performance improvements: avoid redundant TokenValue drops in the lexer (#25300), reduce memory by dropping token-excess capacity and approximating initial tokens Vec size (#25354), and use ThinVec in the AST to shrink Stmt memory (#25361).
  • Documentation and tooling updates across plugins (e.g., flake8-comprehensions C416, mccabe C901, pyupgrade UP007/UP045, refurb FURB192, ruff RUF013) plus server change to return code actions for codeAction/resolve requests with missing/invalid URLs (#25365); prebuilt binaries provided for many platforms (Apple Silicon, x86_64 macOS, x64/ARM Windows, multiple Linux arches including aarch64, riscv64, s390x, PPC64/LE) with checksums.
Source evidence

Release Notes

Released on 2026-05-28.

Preview features

  • Fix Markdown closing fence handling (#25310)
  • [pyflakes] Report duplicate imports in typing.TYPE_CHECKING block (F811) (#22560)

Bug fixes

  • [pyflakes] Treat function-scope bare annotations as locals per PEP 526 (F821) (#21540)

Performance

  • Avoid redundant TokenValue drops in the lexer (#25300)
  • Reduce memory usage by dropping token-excess capacity and improve performance by approximating the initial tokens Vec size (#25354)
  • Use ThinVec in AST to shrink Stmt (#25361)

Documentation

  • Fix line-length example for --config option (#25389)
  • [flake8-comprehensions] Document RecursionError edge case in __len__ (C416) (#25286)
  • [mccabe] Improve example (C901) (#25287)
  • [pyupgrade] Clarify fix safety docs (UP007, UP045) (#25288)
  • [refurb] Document FURB192 exception change for empty sequences (#25317)
  • [ruff] Document false negative for user-defined types (RUF013) (#25289)

Formatter

  • Fix formatting of lambdas nested within f-strings (#25398)

Server

  • Return code action for codeAction/resolve requests that contain no or no valid URL (#25365)

Other changes

  • Expand semantic syntax errors for invalid walruses (#25415)

Contributors

Install ruff 0.15.15

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.15/ruff-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ruff/releases/download/0.15.15/ruff-installer.ps1 | iex"

Download ruff 0.15.15

File Platform Checksum
ruff-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
ruff-x86_64-apple-darwin.tar.gz Intel macOS checksum
ruff-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
ruff-i686-pc-windows-msvc.zip x86 Windows checksum
ruff-x86_64-pc-windows-msvc.zip x64 Windows checksum
ruff-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
ruff-i686-unknown-linux-gnu.tar.gz x86 Linux checksum
ruff-powerpc64-unknown-linux-gnu.tar.gz PPC64 Linux checksum
ruff-powerpc64le-unknown-linux-gnu.tar.gz PPC64LE Linux checksum
ruff-riscv64gc-unknown-linux-gnu.tar.gz RISCV Linux checksum
ruff-s390x-unknown-linux-gnu.tar.gz S390x Linux checksum
ruff-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
ruff-armv7-unknown-linux-gnueabihf.tar.gz ARMv7 Linux checksum
ruff-aarch64-unknown-linux-musl.tar.gz ARM64 MUSL Linux checksum
ruff-i686-unknown-linux-musl.tar.gz x86 MUSL Linux checksum
ruff-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum
ruff-arm-unknown-linux-musleabihf.tar.gz ARMv6 MUSL Linux (Hardfloat) checksum
ruff-armv7-unknown-linux-musleabihf.tar.gz ARMv7 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo astral-sh/ruff

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

Repository: astral-sh/ruff | Tag: 0.15.15 | Author: github-actions[bot]