Popular: Data updated October 31, 2026

Categories

Internet1,361
Communication321
Audio & video903
Graphics & design543
Office & productivity1,120
Developer tools3,139
AI tools534
Security & privacy388
System tools3,126
Games524
Education & science239
Network & IT283

Ruff 0.9.0 download

An extremely fast Python linter, written in Rust.

Astral Languages & SDKs #42 Languages & SDKs
This is an older version. The current version is 0.17.1. Ruff 0.17.1 · Released:

Installer files 0.9.0

ArchitectureTypeScopeFile sizeDownloadSHA256
64-bit ZIP → Portable — — github.com VirusTotal
ARM64 ZIP → Portable — — github.com VirusTotal
32-bit ZIP → Portable — — github.com VirusTotal

Link and SHA256 come from the Windows Package Manager community manifest. Compare the hash of the downloaded file before running it.

Release notes

Check out the blog post for a migration guide and overview of the changes!

Breaking changes
Ruff now formats your code according to the 2025 style guide. As a result, your code might now get formatted differently. See the formatter section for a detailed list of changes.

This release doesn’t remove or remap any existing stable rules.

Stabilization
The following rules have been stabilized and are no longer in preview:

- `stdlib-module-shadowing` (A005).
This rule has also been renamed: previously, it was called `builtin-module-shadowing`.
- `builtin-lambda-argument-shadowing` (A006)
- `slice-to-remove-prefix-or-suffix` (FURB188)
- `boolean-chained-comparison` (PLR1716)
- `decimal-from-float-literal` (RUF032)
- `post-init-default` (RUF033)
- `useless-if-else` (RUF034)

The following behaviors have been stabilized:

- `pytest-parametrize-names-wrong-type` (PT006): Detect `pytest.parametrize` calls outside decorators and calls with keyword arguments.
- `module-import-not-at-top-of-file` (E402): Ignore `pytest.importorskip` calls between import statements.
- `mutable-dataclass-default` (RUF008) and `function-call-in-dataclass-default-argument` (RUF009): Add support for `attrs`.
- `bad-version-info-comparison` (PYI006): Extend the rule to check non-stub files.

The following fixes or improvements to fixes have been stabilized:

- `redundant-numeric-union` (PYI041)
- `duplicate-union-members` (PYI016)

Formatter
This release introduces the new 2025 stable style (#13371), stabilizing the following changes:

- Format expressions in f-string elements (#7594)
- Alternate quotes for strings inside f-strings (#13860)
- Preserve the casing of hex codes in f-string debug expressions (#14766)
- Choose the quote style for each string literal in an implicitly concatenated f-string rather than for the entire string (#13539)
- Automatically join an implicitly concatenated string into a single string literal if it fits on a single line (#9457)
- Remove the ISC001 incompatibility warning (#15123)
- Prefer parenthesizing the `assert` message over breaking the assertion expression (#9457)
- Automatically parenthesize over-long `if` guards in `match` `case` clauses (#13513)
- More consistent formatting for `match` `case` patterns (#6933)
- Avoid unnecessary parentheses around return type annotations (#13381)
- Keep the opening parentheses on the same line as the `if` keyword for comprehensions where the condition has a leading comment (#12282)
- More consistent formatting for `with` statements with a single context manager for Python 3.8 or older (#10276)
- Correctly calculate the line-width for code blocks in docstrings when using `max-doc-code-line-length = "dynamic"` (#13523)

Preview features
- [flake8-bugbear] Implement `class-as-data-structure` (B903) (#9601)
- [flake8-type-checking] Apply `quoted-type-alias` more eagerly in `TYPE_CHECKING` blocks and ignore it in stubs (TC008) (#15180)
- [pylint] Ignore `eq-without-hash` in stub files (PLW1641) (#15310)
- [pyupgrade] Split UP007 into two individual rules: UP007 for `Union` and UP045 for `Optional` (UP007, UP045) (#15313)
- [ruff] New rule that detects classes that are both an enum and a `dataclass` (RUF049) (#15299)
- [ruff] Recode RUF025 to RUF037 (RUF037) (#15258)

Rule changes
- [flake8-builtins] Ignore `stdlib-module-shadowing` in stub files(A005) (#15350)
- [flake8-return] Add support for functions returning `typing.Never` (RET503) (#15298)

Server
- Improve the observability by removing the need for the "trace" value to turn on or off logging. The server logging is solely controlled using the `logLevel` server setting
which defaults to `info`. This addresses the issue where users were notified about an error and told to consult the log, but it didn’t contain any messages. (#15232)
- Ignore diagnostics from other sources for code action requests (#15373)

CLI
- Improve the error message for `--config key=value` when the `key` is for a table and it’s a simple `value`

Bug fixes
- [eradicate] Ignore metadata blocks directly followed by normal blocks (ERA001) (#15330)
- [flake8-django] Recognize other magic methods (DJ012) (#15365)
- [pycodestyle] Avoid false positives related to type aliases (E252) (#15356)
- [pydocstyle] Avoid treating newline-separated sections as sub-sections (D405) (#15311)
- [pyflakes] Remove call when removing final argument from `format` (F523) (#15309)
- [refurb] Mark fix as unsafe when the right-hand side is a string (FURB171) (#15273)
- [ruff] Treat `)` as a regex metacharacter (RUF043, RUF055) (#15318)
- [ruff] Parenthesize the `int`-call argument when removing the `int` call would change semantics (RUF046) (#15277)

https://github.com/astral-sh/ruff/releases/tag/0.9.0

Most popular in Languages & SDKs

See all
  1. Go Programming LanguageAn open source programming language that makes it simple to build secure, scalable systems.
  2. LLVMA collection of modular and reusable compiler and toolchain technologies.
  3. DenoA modern runtime for JavaScript and TypeScript
  4. CMakeCMake is a cross-platform, open-source build system generator.
  5. YarnYarn is a package manager that doubles down as project manager. Whether you work on one-shot projects or large monorepos, as a hobbyist or an enterprise user, we've got you covered.
  6. CcacheCcache is a compiler cache. It speeds up recompilation by caching previous compilations and detecting when the same compilation is being done again.
  7. sbtA build tool for Scala, Java, and more
  8. BOINCOpen-source software for volunteer computing and grid computing.
  9. Dart SDKA set of tools and libraries for the Dart programming language.
  10. NVM for WindowsA node.js version management utility for Windows. Ironically written in Go.

Tags

Share