We've replaced most of Zulip's Python linters with Ruff, and it's hard to understate how big of a difference it makes for linters to be lightning fast.
Ruff has essentially all the features of major Python linters (pyflakes, flake8, pylint, pycodestyle, autoflake, even isort), and it runs more than 100x faster than the fastest of them. In practice, this means this portion of our Python linting toolchain, which previously was a thing you had to wait for on a codebase of our size (or even when linting individual large files), now completes in under a second even when checking the entire codebase.
(It can't replace `black` or `mypy` yet, though the linked post describes plans to replace `black`, which I'm very excited about).
Ruff has essentially all the features of major Python linters (pyflakes, flake8, pylint, pycodestyle, autoflake, even isort), and it runs more than 100x faster than the fastest of them. In practice, this means this portion of our Python linting toolchain, which previously was a thing you had to wait for on a codebase of our size (or even when linting individual large files), now completes in under a second even when checking the entire codebase.
(It can't replace `black` or `mypy` yet, though the linked post describes plans to replace `black`, which I'm very excited about).
I can't recommend it enough.