I was an early adopter of Ruff, what sold me wasn't even the performance win, but the advantage of having a single configuration file without third-party plugins, making it much easier to run the linter in my editor, CLI, pre-commit hooks, and CI without any fuss.
The speed of the tool and its development pace astound me.
If the authors/maintainers are lurking here: know that you're doing an amazing job.
I've been using Xonsh as my main shell for a few years now, and I'm really pleased with the switch.
There are some downsides you need to overcome:
* Slower to start. Takes a second or two before I can start typing when I open a new tab.
* Less stable. Upgrading will occasionally break something, or spit out warnings you gotta find a way to silence.
* Lack of compatibility. Tools that change you shell profiles to shim some executables (like rvm or pyenv) will not work. I typically source some files manually, or resort to bash if I need to.
* Tab completion is not straightforward.
But IMO I get ample compensation:
* I can write much better and cleaner scripts using Python's syntax and standard lib. Being able to use `argparse` is a blessing, compared to how you read arguments and flags in bash.
* I'm actually able to remember the syntax for looping and conditional.
* I'm more self-sufficient in the terminal for small things like arithmetic operations, generating a UUID, testing regexes, etc.
* Having typed/structured data in the shell, vs everything being plain text is also quite useful when you don't want to turn some easy task into some complex text processing pipeline.