Type Server Protocol
111 points by adamnemecek 3 hours ago | 57 comments

nikolatt 40 minutes ago
DetachHead (maintainer of basedpyright) has criticized the TSP before:

- https://docs.basedpyright.com/v1.40.2/type-server/

- https://github.com/microsoft/pylance-release/discussions/718...

Ty (the type checker maintained by astral) however will apparently support the TSP: https://github.com/astral-sh/ruff/discussions/23432

reply
anonymous908213 2 hours ago
This should be called Python Type Server Protocol, no? Seems weird to mine the generic protocol namespace for a protocol that only supports Python. Especially coming from the company behind LSP, which actually is generic.
reply
rzzzt 53 minutes ago
Type Server Subsystem for Python
reply
wolttam 2 hours ago
It is namespaced under the pylance project. I also don't see any announcement here, just a markdown file.

Perhaps the post title could use a tweak

reply
pantsforbirds 2 hours ago
I do wonder if it generalizes outside of python similar to how LSPs do.
reply
Blackarea 2 hours ago
100% - it would make more sense if they also supported elixir or other dynamic languages
reply
pipes 30 minutes ago
Can someone explain what this is to someone like me that doesn't know python very well, but programs a lot in c#?
reply
tobz1000 26 minutes ago
As someone with minimal knowledge of LSP specifics, I'm a bit confused about why this exists. Is it the case that LSP alone does not provide adequate functionality for Python type queries?
reply
Tarean 2 hours ago
So basically adding machine readable type-at-point queries as an lsp extension so Pylance and Pywright can be separated?

The 'result types'format is super python specific, like not having a for all binder. I don't think this specific schema will be used for any non-python languages.

reply
rjbwork 51 minutes ago
It's such a shame python got such mindshare. It's a disaster of a language and ecosystem that people keep bolting and hacking things that much better thought out languages have had for decades.
reply
svachalek 38 seconds ago
I've been thinking recently, there's hardly any reason not to use a native language like Rust anymore. The classic reasoning for languages like Python is that it prioritizes developer time and resources over compute resources, but now developer time is rapidly trending to zero and everything is compute dominated.
reply
chuckadams 24 minutes ago
I remember falling in love with Python when I first learned it at version 1.5, liked it even more with 2.0, but when 3.0 came around, that's when I noticed the ecosystem falling apart. Not for the obvious incompatibility schism: I do think most of 3.0's changes were good ones, and it finally is the standard default version now, but in many other ways it feels like the ecosystem has still never really recovered. Virtualenv is still the same grotesque hack, where rather than doing what other languages like Perl and Ruby do and making some wrapper around setting PYTHONPATH, it relies on python's behavior of locating the library path relative to the install, thus hardlinking a whole python installation in and making you "activate" it first. That nothing has managed to replace it in 20 years speaks volumes.
reply
jacquesm 14 minutes ago
Roughly the time when Guido stopped fighting the hordes. The hordes won, wrested the language away from its creator and now they own the pieces. 2 to 3 was the worst possible way a language has ever been upgraded bar none. Hilariously, even today Python 2 persists in many places because of this.
reply
rspeele 10 minutes ago
> 2 to 3 was the worst possible way a language has ever been upgraded bar none

Perl 6?

reply
giancarlostoro 21 seconds ago
Which gave up and became its own language, its own level of confusion.
reply
benrutter 33 minutes ago
I work in python daily, it's not necessarily my favourite language, but I'd say it's mostly fine.

What languages are you thinking of specifically when you mention better thought out ones?

reply
pphysch 14 minutes ago
They are a heavy C# user. Coke/Pepsi situation.
reply
stackghost 48 seconds ago
I don't agree at all that it's a coke/pepsi situation. That analogy is for when two mostly-interchangeable choices develop tribal followings based largely on personal preference. Coke and Pepsi are both caramel carbonated soft drinks that are terrible for your health differing only slightly in flavour. Otherwise they're materially identical.

C# is strongly/statically typed, compiled, and quite fast (after the vm has started), whereas python is weakly/dynamically typed, interpreted, and generally slow as fuck. Those are two fundamentally different languages, how could it possibly be a coke/pepsi situation?

I think python is fantastic for certain use cases: gluing other tools together (like LAPACK or other ancient libraries), system automation, prototyping, exploitation (I think pretty much all of us were working on stealmybitcoin in python), and exploratory data analysis.

The problems arise when people try to write, say, gigantic GUI applications in python, or really anything with CPU-bound workloads. Part of being an engineer is using the right tool for the right job. Python is the wrong tool for lots of jobs. That shouldn't be a controversial statement.

reply
YuechenLi 18 minutes ago
At this point, Python is less of a programming language by itself but more of an interop protocol between various C/C++/Fortran/Rust binaries. But again, it's just part of the cycle, Python was a breath of fresh air 10 years ago when academia is still dominated by Matlab, but now it is mostly a mess of a language that's good for throwaway scripts but not very convenient for large software projects compared to statically typed languages.
reply
lijok 43 minutes ago
Fascinating take.

What do you attribute Python's success to, in spite of being a disaster of a language and ecosystem?

reply
johnfn 39 minutes ago
It's incredibly easy for new engineers to pick up. On the spectrum between "features easy for beginners but nightmarish for experienced engineers" and "features complex for beginners but great for experienced engineers" it always makes the tradeoff for the former.
reply
dude250711 36 minutes ago
Yes, just like Go, it's a junior developer onboarding language, that somehow managed to overstay its welcome.
reply
bheadmaster 30 minutes ago
If Go is a junior developer onboarding language, then I proclaim myself a perpetual onboarding junior.
reply
dijit 9 minutes ago
And that's ok.
reply
theplumber 33 minutes ago
Go is awesome and has great ecosystem. I think if you want to just deliver Go is one of the best language out there. Of course as long as the project makes sense(I.e no client side/GUI stuff, there it gets messy)
reply
konart 16 minutes ago
Some people live to shit on Go since you can't really do "crazy cool shit" as someone I knew put it.

Apparently you can't be a senior dev unless you "just here to deliver"

reply
dijit 45 seconds ago
C++ is the "just here to deliver" language.

It can do everything, it's a nightmare to write correctly and is so full of warts that really only a mother could love it.

Go is "elegant" and properly designed, which leads to fundamental unassailable limitations; like its GUI story or writing a backend for other languages (cgo is so slow and -build-mode=c-shared is a hog).

No operator overloading makes it difficult for numerical/scientific work - Python is stronger here.

"just get stuff done" is your crappy dump truck which is welded together out of spare bits and is barely hanging on, this is how I feel about C++.

Go is a lot more elegant and well designed, it requires "smooth roads" (An OS and Runtime) and goes fast... it's more like a Dodge Hellcat..

reply
jacquesm 12 minutes ago
BASIC rebooted. Right at the right time too, BASIC was never going to thrive in the days of the internet.

I'll give Python one thing though, it is by far the most elegant way to glue together a large number of otherwise incompatible C libraries.

reply
kingstnap 27 minutes ago
Probably the batteries included Standard Library.

Cross platform interpreter.

NumPy and SciPy really set the stage.

reply
chuckadams 19 minutes ago
It's definitely a better language than Matlab, and Numpy made it actually fast for that purpose. AI research really took advantage of that even before LLMs hit the scene.
reply
stronglikedan 25 minutes ago
well, for one, my boss can use it and kinda understand it, so it must be dead simple
reply
Pxtl 14 minutes ago
It was the first language that actually felt ready-to-use, available for free-as-in-speech. Batteries included, robust online development community, sensible featureset, main libs that were designed bottom-up instead of top-down. I remember learning Java 1.2 or 1.4 after learning Python and it felt like a huge regression. Swing was a joke compared to TkInter (which was weak compared to proper GUI editors like VB but at least made nice scalable native-feeling GUIs and had a sensible API) and the standard collections were miserable without generics.

But Python peaked like 20 years ago. The later features were too ugly, and it was too slow to fill the obvious gaps in the language.

reply
rsalus 27 minutes ago
Definitely ease of use...
reply
aaabbbbb 33 minutes ago
Marketing in academia, decent C-API that led to use in scientific Python.

The language is a disaster since it deviated from its original purpose. The community is ruled by insane, mediocre narcissists who drove away all reasonable people.

reply
avaer 37 minutes ago
- Math + visualization libraries (which ironically have to break out of Python to do their job)

- Reasonable ergonomics for describing data flows, as long as you never run the code, which you often don't care about if you're a mathematician

- Adoption by people who optimize pumping citations, not reproducible results -- non-working code is a feature when you're trying to BS

reply
loeg 31 minutes ago
I’m not a fan either, but it doesn’t bother me at all. Who cares? Let the python people do their thing.
reply
risyachka 26 minutes ago
I will take Python over typescript every second of every day. TypeScript is just so unreadable compared to Python.
reply
brcmthrowaway 36 minutes ago
The packaging is a nightmare thats for sure.

Venvs, activate, deactivate, shitty scripts hacking on $PATH. How did this ever ship? Then there was poetry, `uv`, and maybe something in else in $CURRENT_YEAR.

Try to set it up on a new macOS, go on. Install a package from pip, and there's a bunch of garbage that won't let you do it.

It's horrible. Python packaging engineer is now an FTE, maybe that's what they wanted.

reply
Pxtl 13 minutes ago
The fact that they didn't solve Venv when they did the breaking change in Python 3 is absolutely bonkers.
reply
Toutouxc 31 minutes ago
As a Ruby dev I'm kind of primed to hate on Python a little bit, but I have to agree. I've written some Python over the years, I've tried to like it, but it just doesn't feel good to me. There are things that are really great about Rust, Elixir, C#, Swift, Java, Common Lisp... Sometimes it's the standard library, sometimes the package manager, sometimes a feature (borrow checker, pattern matching), sometimes a principle (everything is an object, the code is just data). In Python, everything is kind of meh. Like they came up with the list comprehension syntax and that was it for cool things.
reply
Pxtl 10 minutes ago
List comprehensions? Really? I remember when they were pretty and I was learning them alongside other languages with higher order functions and Python's approach seemed to be the ugliest of its cohort. They were neither as logical as simple Lispy "take a function as a parameter" things like Ruby, nor were they the kind of clean and legible stuff we expect from Python.
reply
westurner 12 minutes ago
Python should have done runtime type checking instead of compile-time only String and List annotations and so on
reply
mi_lk 43 minutes ago
OTOH I don't want to live in a universe where Haskell wins
reply
Quitschquat 32 minutes ago
I blame Perl 6
reply
esafak 44 minutes ago
Worse is better. Avoid using it yourself and tell others; that's the best you can do.
reply
theplumber 34 minutes ago
it could be worse like …PHP
reply
quotemstr 35 minutes ago
Python is pretty decent. What are you talking about?
reply
okanat 11 minutes ago
The syntax and meaningful spaces are annoying. The dynamic typing is abused to hell in everything including the standard library. It has wacky paradigms like "exceptions instead of conditionals" or having "else" clause for loops.

It lacks decent packaging and by design cannot handle multiple versions of dependencies or perform metadata-only/declarative resolution. To resolve the dependencies of a Python package you need to install it. Many Python packages resolve their dependencies imperatively depending on the current system state. When you need binary dependencies like numpy it gets even worse since libpython doesn't have a stable ABI.

It is one of the most underdesigned languages but it holds a dear place due to being easier to translate from pseudocode to actual implementation. This resulted many academics to pick it up and write advanced math libraries in it.

reply
mathisfun123 30 minutes ago
> It's a disaster of a language and ecosystem

"unhinged" take

reply
0cf8612b2e1e 2 hours ago
It kept with UTF-16. New protocol is a chance to correct that poor decision.
reply
rmzs0711 58 minutes ago
Is there any application for that, except python?
reply
ChrisArchitect 29 minutes ago
Blog posts:

Pylance + Pyrefly: bring your preferred type checker to Visual Studio Code

https://devblogs.microsoft.com/python/announcing-tsp/

Pyrefly + Pylance Integration in VS Code

https://pyrefly.org/blog/pyrefly-pylance/

reply
ahgrta 2 hours ago
Type-shed, type-server. When can this Python madness stop? How about using CORBA to make it even more enterprisey?

Why don't you spend your resources on F# instead of this nonsense?

reply
SwamyM 13 minutes ago
> Why don't you spend your resources on F# instead of this nonsense?

Absolutely!

F# is criminally under-invested in.

reply
rednb 4 minutes ago
Exactly what i came to write as well. I'd expect Microsoft to invest in F# so that python can slowly fade away the way php did.
reply
paaloeye 2 hours ago
Interesting, LSP, DAP, MCP, and TSP now...
reply
intrasight 2 hours ago
TSP : TriSodium Phosphate. Very good for cleaning up a mess.
reply
beaconflint 2 hours ago
[flagged]
reply
wetpaws 2 hours ago
[dead]
reply