Dev tooling Python lento
La pila di dev tooling Python tradizionale include: flake8 (lint), pylint (lint più profondo), black (format), isort (import sorting), pyupgrade (modernization). Ognuno è uno strumento separato Python, lento su large codebase (minuti su progetti grandi).
Ruff, creato da Charlie Marsh e l’azienda Astral (fondata 2022) a New York, riscrive queste funzionalità in Rust. Risultato: un solo binario che fa tutto, 10-100x più veloce. Licenza MIT.
La prima release pubblica è agosto 2022; entro un anno Ruff è standard de facto in numerosi progetti Python mainstream (Pandas, FastAPI, Django, Airflow, Apache Airflow, Hugging Face, Pydantic stessa).
Cosa fa Ruff
- 800+ rules di linting, compatibili con flake8 + plugins (pycodestyle, pyflakes, McCabe, isort, pydocstyle, pylint subset, pyupgrade, bandit, …)
- Auto-fix per ~50% delle rule
- Formatter (dalla 0.1, 2023) drop-in sostituto di black
- Ordinamento import (sostituisce isort)
- Performance: 10-100x vs. pila tradizionale
Uso
ruff check src/
ruff format src/
pyproject.toml config:
[tool.ruff]
line-length = 100
select = ["E", "F", "I", "N", "UP", "B"]
ignore = ["E501"]
Astral e la strategia
Astral (la company) costruisce un ecosistema di tool Python in Rust:
- Ruff (2022) — linter/formatter
- UV (2024) — package manager/installer
- Pyright-fork / ty (2024) — type checker (annunciato)
Modello: open source (tutti i tool) + business model da definire (hosted services, enterprise support).
Nel contesto italiano
Adoption rapida nei team Python italiani dal 2023: startup, agenzie digitali, team enterprise con CI pipeline lente. Migrazione da flake8/black spesso conclusa in un pomeriggio.
Riferimenti: Ruff (agosto 2022). Charlie Marsh, Astral. Licenza MIT. Linguaggio implementazione: Rust. Drop-in replacement di flake8 + black + isort + pyupgrade + altri. Pyproject.toml config.
