Simon Willison: Ruff v0.16.0 Expands Default Rules from 59 to 413
Main idea
Astral released Ruff v0.16.0, which now checks 413 rules by default instead of 59. Willison tested the new linter on three of his projects and found hundreds of previously undetected issues, from datetime calls without timezone to overly broad exception handling.
Context
Ruff is an extremely fast Python linter written in Rust that has become the de facto standard for many Python projects. Expanding default rules is significant as it will affect all projects using default settings after updating.
Why it's worth attention
Willison demonstrates an interesting workflow: Ruff surfaces problems with detailed messages, and AI models (GPT-5.6, Claude Opus) fix them automatically. This is an example of synergy between traditional tools and AI coding assistants.
Details / arguments
- New rules catch: datetime without timezone, overly broad exception handling, unused attribute access
- Willison used GPT-5.6 and Claude Opus to automatically fix found issues in three projects
- Ruff's detailed error messages provide AI models sufficient context to fix issues without manual intervention
- The jump from 59 to 413 rules means most projects will see new findings after updating
Open original source
Simon Willison