Ruff: Python linter and formatter written in Rust

Ruff (2022) by Charlie Marsh and Astral: Python linter and formatter in Rust, 10-100x faster than flake8 + black + isort + pylint combined. Replaces entire Python dev tooling stack with a single binary.

Open SourceR&D RuffAstralCharlie MarshPythonRustLinterFormatterOpen Source

Slow Python dev tooling

The traditional Python dev tooling stack includes: flake8 (lint), pylint (deeper lint), black (format), isort (import sorting), pyupgrade (modernisation). Each is a separate Python tool, slow on large codebases (minutes on big projects).

Ruff, created by Charlie Marsh and the company Astral (founded 2022) in New York, rewrites these in Rust. Result: a single binary doing it all, 10-100x faster. MIT licence.

The first public release is August 2022; within a year Ruff is the de facto standard in numerous mainstream Python projects (Pandas, FastAPI, Django, Airflow, Hugging Face, Pydantic itself).

What Ruff does

  • 800+ linting rules, compatible with flake8 + plugins (pycodestyle, pyflakes, McCabe, isort, pydocstyle, pylint subset, pyupgrade, bandit, …)
  • Auto-fix for ~50% of rules
  • Formatter (from 0.1, 2023) drop-in black replacement
  • Import sorting (replaces isort)
  • Performance: 10-100x vs. traditional stack

Usage

ruff check src/
ruff format src/

pyproject.toml config:

[tool.ruff]
line-length = 100
select = ["E", "F", "I", "N", "UP", "B"]
ignore = ["E501"]

Astral and the strategy

Astral (the company) builds a Python-tool-in-Rust ecosystem:

  • Ruff (2022) — linter/formatter
  • UV (2024) — package manager/installer
  • Pyright-fork / ty (2024) — type checker (announced)

Model: open source (all tools) + business model to be defined (hosted services, enterprise support).

In the Italian context

Rapid adoption in Italian Python teams from 2023: startups, digital agencies, enterprise teams with slow CI pipelines. Migration from flake8/black often completed in one afternoon.


References: Ruff (August 2022). Charlie Marsh, Astral. MIT licence. Implementation language: Rust. Drop-in replacement for flake8 + black + isort + pyupgrade + others. Pyproject.toml config.

Need support? Under attack? Service Status
Need support? Under attack? Service Status