Ruff v0.16.0 – Significant new updates – 413 default rules up from 59
by vismit2000 on 7/26/2026, 9:01:39 AM
https://astral.sh/blog/ruff-v0.16.0
Comments
by: maratc
The amount of fascination that people have with these "grammar nazi" bots -- some of them implementing completely arbitrary "rules" and some of them disagreeing with others on what "good" Python code should look like -- doesn't stop to amaze me.<p>Here's "bad" code:<p><pre><code> important_numbers = { "x": 3, "y": 42, # Answer to the Ultimate Question! "z": 2 } </code></pre> Here's what "good" code should look like:<p><pre><code> important_numbers = {"x": 3, "y": 42, "z": 2} # Answer to the Ultimate Question! </code></pre> Which completely misses the writer's intent. But did you notice that there are <i>two spaces</i> before the pound now?<p>The actual problems in the code I work with are not the spaces at the end of line or imports in non-alphabetic order, it's the 10-line list comprehensions that are so long that they're impossible for me to parse. None of these tools catch that. My place used pylint, flake8, black, ruff -- with hundreds of commits on every change. All that energy could be better spent elsewhere.
7/26/2026, 10:52:28 AM
by: gempir
I wish Go had something like Ruff! A lot of languages are getting amazing tool but Go has a very fragmented ecosystem with a lot of tools but none of them feel as high quality has the likes of Ruff, Oxc, Biome or even PHP's Mago
7/26/2026, 10:48:54 AM
by: woadwarrior01
Great to see ruff, ty and uv being actively developed, even after Astral was acquired by OpenAI.
7/26/2026, 9:57:05 AM
by:
7/26/2026, 10:42:22 AM
by: kstenerud
This is great news! With the advent of agentic coding, strong linting is more important than ever. What I'd really like to see is forbidigo for more languages.
7/26/2026, 9:46:31 AM
by: hyeongjun
Good news. enabling 413 rules by default means most projects get useful linting without touching the config at all!
7/26/2026, 10:18:36 AM
by: vanyaland
ran 0.16 on a file with no config, it flags unsorted imports and `except Exception` by default now
7/26/2026, 10:27:49 AM
by: bbor
<p><pre><code> Ruff v0.16 has a small number of breaking changes </code></pre> Why. Why must my poor semver be hurt so!<p>I sorta kinda get why `ty` is pre v1.0.0 -- it's a typechecker that doesn't check a huge number of types. But what are we waiting for with `ruff`? Surely it's eaten whatever the old options were (black? maybe a few takes on py+lint?) by now many times over, and is even more dominant than `uv`.<p>I run this program hundreds of times a day so I'm generally excited for new features, but I guess the OAI acquisition has made me ornery when it comes to these folks. Apologies to kindly nerds who made this release happen, and congrats <3
7/26/2026, 10:20:38 AM