---
title: "Ruff v0.12.0"
url: https://daily.dev/posts/ruff-v0-12-0-r4tzstxch
source_url: https://astral.sh/blog/ruff-v0.12.0
type: article
source: "Astral"
published: 2026-03-31T12:27:08.038Z
updated: 2026-03-31T12:32:21.018Z
tags: ["python", "rust"]
reading_time: 7
upvotes: 0
comments: 0
language: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Ruff v0.12.0

**[Astral](https://daily.dev/sources/astral-sh)** · 7 min read · 0 upvotes · 0 comments

## Summary

Ruff v0.12.0 is released with several notable changes. The linter now detects two additional classes of syntax errors: version-related syntax errors (e.g., using match statements before Python 3.10) and errors previously only caught by CPython's bytecode compiler (e.g., duplicate function parameter names, yield/return outside functions). A new dual-default Python version system is introduced: 'latest' (3.13) for syntax error detection and 'oldest' (3.9) for everything else. The rust-toolchain.toml file is no longer bundled in source distributions, making it easier to build from source with MSRV-compatible toolchains. F-string formatting with format specifiers is updated to comply with Python 3.13.4's grammar changes. Twenty-two rules are stabilized out of preview, one rule is deprecated, and one (S320) is removed.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://astral.sh/blog/ruff-v0.12.0>

## Similar posts on daily.dev

- [Ruff v0.16.0](https://daily.dev/posts/ruff-v0-16-0-by368rknj) · Astral · 22 upvotes · 0 comments

---

Tags: [#python](https://daily.dev/tags/python), [#rust](https://daily.dev/tags/rust)

[View this post on daily.dev](https://daily.dev/posts/ruff-v0-12-0-r4tzstxch)
