You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The current situation is confusing and it's unclear which LSP to use.
ruff-lsp was deprecated saying ruff server should be used. Now there's ty server which ostensibly duplicates that functionality. It is unclear which one should be used, which one will stay, and which one will go. It is also unclear why ty exists and isn't included in ruff.
Can somebody give some insight?
Reacted by 5j9, Hoxy-Yoxy, Arne de Laat, Sean Turner, Chris Rodrigue, Cierra-Runis, Přemysl Karbula, Joel Ostblom, Georgios Adzhygai and T-256
ruff-lsp is deprecated and shouldn't be used anymore; it's likely going to go away in the near future (we'll archive the project), and we haven't made a new release in a very long time.
ruff server provides linting and formatting using ruff. It's the recommended way of using ruff within your editor
ty server is the recommended way of using ty in your editor. ty is our in-progress type checker, and its server provides you with go-to-definition, semantic token highlighting, hover, etc. It provides you similar functionality to Pylance
There's some overlap between ty and ruff in that both tools try to catch errors, but Ruff offers more opinionated lints and helps you make your code more idiomatic, whereas ty focuses on catching hard errors (things that are wrong with very high certainty).
Long-term, our goal is to either combine ty and ruff into a single tool or have a single extension that allows you to use both. However, this will be a lot of work, and we didn't want to delay shipping a type checker that we expect to be useful to many users today.
For now, use Ruff for linting and formatting in your editor. Use ty if you want a type checker that allows you to replace Pylance in your editor.
Reacted by mttgl, Philipp Kolberg, Hoxy-Yoxy, Arne de Laat, Cierra-Runis, Xaver Wenhart, simone viozzi, fbrakl, RGH271, Joel Ostblom and 5 more
Ah. That's confusion on my end. I saw two diagnostics that were similar (but different). Which led me to look at running language servers which listed ruff. Thanks for the super quick response!
Type checking is a subset of linting so it seems reasonable to assume that there could be overlapping or conflicting settings between ruff and ty.
ruff vs ty is probably going to be a frequently asked question for devs who want to use all of Astral's tools together. ruff is mentioned in 14/52 (27%) of ty issues so it's a pretty natural comparison.
Activity
MichaReiser commentedon Nov 17, 2025
Hi @tm-michael
I'm sorry for the confusion.
ruff-lspis deprecated and shouldn't be used anymore; it's likely going to go away in the near future (we'll archive the project), and we haven't made a new release in a very long time.ruff serverprovides linting and formatting using ruff. It's the recommended way of using ruff within your editorty serveris the recommended way of using ty in your editor. ty is our in-progress type checker, and its server provides you with go-to-definition, semantic token highlighting, hover, etc. It provides you similar functionality to PylanceThere's some overlap between ty and ruff in that both tools try to catch errors, but Ruff offers more opinionated lints and helps you make your code more idiomatic, whereas ty focuses on catching hard errors (things that are wrong with very high certainty).
Long-term, our goal is to either combine ty and ruff into a single tool or have a single extension that allows you to use both. However, this will be a lot of work, and we didn't want to delay shipping a type checker that we expect to be useful to many users today.
For now, use Ruff for linting and formatting in your editor. Use ty if you want a type checker that allows you to replace Pylance in your editor.
tm-michael commentedon Nov 19, 2025
Thanks for clearing that up @MichaReiser . It might be good to dd a similar blurb to the documentation.
P.S I asked this in an issue because discussions aren't opened.
seanturner026 commentedon Dec 17, 2025
Congrats on the beta release for
ty🎉The blog post mentions that
tyis also a language server which I think is great but has also brought me here.Is there a way to disable the LSP component of
ruffso that justtyis used for that? It seems like while there's overlaptyis a better language server whereasruffis more of a linter / formatter? It looks like it's possible on thetyside of things https://docs.astral.sh/ty/reference/editor-settings/#disablelanguageservices but not really on theruffside of things?MichaReiser commentedon Dec 17, 2025
Ruff only provides formatting and linting, it doesn't have any other LSP functionality that could be disabled.
seanturner026 commentedon Dec 17, 2025
Ah. That's confusion on my end. I saw two diagnostics that were similar (but different). Which led me to look at running language servers which listed
ruff. Thanks for the super quick response!MichaReiser commentedon Dec 17, 2025
Ruff can show diagnostics and you may want to disable syntax errors in ruff to avoid seeing syntax errors twice (once by ruff and once by ty) https://docs.astral.sh/ruff/editors/settings/#showsyntaxerrors
chrisrodrigue commentedon Dec 17, 2025
Type checking is a subset of linting so it seems reasonable to assume that there could be overlapping or conflicting settings between ruff and ty.
ruff vs ty is probably going to be a frequently asked question for devs who want to use all of Astral's tools together. ruff is mentioned in 14/52 (27%) of ty issues so it's a pretty natural comparison.
@zanieb affirmed in astral-sh/ruff-vscode#835 that they will take a look at unification in the future.