Popular: Data updated November 5, 2026

Categories

Internet1,369
Communication322
Audio & video908
Graphics & design548
Office & productivity1,133
Developer tools3,163
AI tools544
Security & privacy394
System tools3,152
Games531
Education & science240
Network & IT287

Ruff 0.8.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.8.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
See also, the "Remapped rules" section which may result in disabled rules.

- Default to Python 3.9

Ruff now defaults to Python 3.9 instead of 3.8 if no explicit Python version is configured using `ruff.target-version` or `project.requires-python` (#13896)

- **Changed location of `pydoclint` diagnostics**

`pydoclint` diagnostics now point to the first-line of the problematic docstring. Previously, this was not the case.

If you've opted into these preview rules but have them suppressed using
`noqa` comments in
some places, this change may mean that you need to move the `noqa` suppression
comments. Most users should be unaffected by this change.

- **Use XDG (i.e. `~/.local/bin`) instead of the Cargo home directory in the standalone installer**

Previously, Ruff's installer used `$CARGO_HOME` or `~/.cargo/bin` for its target install directory. Now, Ruff will be installed into `$XDG_BIN_HOME`, `$XDG_DATA_HOME/../bin`, or `~/.local/bin` (in that order).

This change is only relevant to users of the standalone Ruff installer (using the shell or PowerShell script). If you installed Ruff using uv or pip, you should be unaffected.

- Changes to the line width calculation

Ruff now uses a new version of the unicode-width Rust crate to calculate the line width. In very rare cases, this may lead to lines containing Unicode characters being reformatted, or being considered too long when they were not before (E501).

Removed Rules
The following deprecated rules have been removed:

- `missing-type-self` (ANN101)
- `missing-type-cls` (ANN102)
- `syntax-error` (E999)
- `pytest-missing-fixture-name-underscore` (PT004)
- `pytest-incorrect-fixture-name-underscore` (PT005)
- `unpacked-list-comprehension` (UP027)

Remapped rules
The following rules have been remapped to new rule codes:

- `flake8-type-checking`: `TCH` to `TC`

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

- `builtin-import-shadowing` (A004)
- `mutable-contextvar-default` (B039)
- `fast-api-redundant-response-model` (FAST001)
- `fast-api-non-annotated-dependency` (FAST002)
- `dict-index-missing-items` (PLC0206)
- `pep484-style-positional-only-argument` (PYI063)
- `redundant-final-literal` (PYI064)
- `bad-version-info-order` (PYI066)
- `parenthesize-chained-operators` (RUF021)
- `unsorted-dunder-all` (RUF022)
- `unsorted-dunder-slots` (RUF023)
- `assert-with-print-message` (RUF030)
- `unnecessary-default-type-args` (UP043)

The following behaviors have been stabilized:

- `ambiguous-variable-name` (E741): Violations in stub files are now ignored. Stub authors typically don't control variable names.
- `printf-string-formatting` (UP031): Report all `printf`-like usages even if no autofix is available

The following fixes have been stabilized:

- `zip-instead-of-pairwise` (RUF007)

Preview features
- [flake8-datetimez] Exempt `min.time()` and `max.time()` (DTZ901) (#14394)
- [flake8-pie] Mark fix as unsafe if the following statement is a string literal (PIE790) (#14393)
- [flake8-pyi] New rule `redundant-none-literal` (PYI061) (#14316)
- [flake8-pyi] Add autofix for `redundant-numeric-union` (PYI041) (#14273)
- [ruff] New rule `map-int-version-parsing` (RUF048) (#14373)
- [ruff] New rule `redundant-bool-literal` (RUF038) (#14319)
- [ruff] New rule `unraw-re-pattern` (RUF039) (#14446)
- [pycodestyle] Exempt `pytest.importorskip()` calls (E402) (#14474)
- [pylint] Autofix suggests using sets when possible (PLR1714) (#14372)

Rule changes
- `invalid-pyproject-toml` (RUF200): Updated to reflect the provisionally accepted PEP 639.
- [flake8-pyi] Avoid panic in unfixable case (PYI041) (#14402)
- [flake8-type-checking] Correctly handle quotes in subscript expression when generating an autofix (#14371)
- [pylint] Suggest correct autofix for `__contains__` (PLC2801) (#14424)

Configuration
- Ruff now emits a warning instead of an error when a configuration `ignore`s a rule that has been removed (#14435)
- Ruff now validates that `lint.flake8-import-conventions.aliases` only uses valid module names and aliases (#14477)

https://github.com/astral-sh/ruff/releases/tag/0.8.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. TelegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.

Tags

Share