Ruff 0.16.4
Alright, Ruff dropped 0.16.4, and honestly the Python linter scene keeps getting sharper. I ran it against a couple of real profiles this morning and here's the deal.
TL;DR
- New autofix for
PTH116in flake8-use-pathlib. - Better notebook support in the language server.
- A pile of rule precision and syntax-error detection fixes.
What Actually Changed
On the preview side, the flake8-use-pathlib rule PTH116 finally gets an autofix, which means Ruff will fix that rule for you instead of just nagging. Over in refurb, delete-full-slice (FURB131) is now restricted to lists, and FURB101/FURB103 get skipped when the open argument is a file descriptor — both sensible refinements that cut down on false positives.
There's a notable crash fix: Ruff no longer throws InvalidInstruction on Windows CPUs that lack POPCNT support. That one will matter to folks on older AMD or budget Intel silicon.
Rule & Syntax Updates
- Pyflakes now emits semantic syntax errors in string type definitions as
F722. - Pylint's
PLC2701allowsos._exitimports. - New syntax-error detections for duplicate keyword arguments and parameters declared
nonlocal. - Mixed t-string/bytes error messages aligned with CPython 3.14.
Server Improvements
The LSP now offers display-only fixes and marks safe fixes as preferred, and it supports pull diagnostics for notebook cells — a genuinely nice QoL bump if you work in Jupyter.
Verdict
It's a patch release, so no drama. But the autofix additions and the Windows crash fix make 0.16.4 worth a uv add ruff bump. Update when you get a chance — nothing here should break your config.