마이크로소프트, 파이썬 전용 JSON-RPC 타입 서버 규격 TSP 문서 공개
- 마이크로소프트가 pylance-release 저장소에 Type Server Protocol(TSP) 문서를 올림. 타입 서버에 파이썬 분석 데이터를 요청하는 JSON-RPC 규격이고 메서드 접두사는 typeServer/임
- 프로토콜 정의는 typeServerProtocol.ts, tsp.json, tsp.schema.json 세 파일이 기준이며, 위치와 범위, URI 문자열 표현은 LSP의 Position, Range 방식을 그대로 씀
- 버전은 0.1.0에서 0.4.1까지 올라갔고, 0.x 동안 마이너 버전 변경은 호환성을 깨도 된다고 명시함. 0.4.1에서 멀티 커넥션 협상과 typeServer/connection 제어 요청이 추가됨
- 멀티 커넥션 모드는 선택 기능으로, LSP initialize의 capabilities.experimental.typeServerMultiConnection에서 양쪽이 supportedTransports를 광고하고 ipc 같은 공통 전송이 하나라도 있을 때만 켜짐
- 세션은 getSupportedProtocolVersion으로 semver 호환성을 확인하고 getSnapshot으로 첫 스냅샷 ID를 받은 뒤, 이전 타입 결과가 무효가 되면 snapshotChanged를 보내는 순서로 진행됨
Hacker News 의견들
이름이 왜 Type Server Protocol임? 파이썬만 지원하는데 범용 프로토콜 네임스페이스를 먹는 건 좀 이상하지. LSP 만든 회사가 그러네.
pylance 프로젝트 아래 네임스페이스라 그런 거고, 공지도 없이 마크다운 파일 하나만 덩그러니 있음. 제목을 좀 손봐야 할 듯.
elixir나 다른 동적 언어도 같이 지원하면 이름이 말이 되는데, 지금은 파이썬뿐임.
LSP처럼 파이썬 밖으로 일반화될 수 있을지 궁금하긴 함.
이 회사가 웹 프레임워크 이름을 MVC라고 지은 전적이 있잖아. 이번엔 산업 표준 용어 검색 결과를 영원히 오염시키지는 않네.
이제 LSP랑 TSP 둘 다 띄워놓고 메모리 먹이면서 써야 하는 거임?
LSP, DAP, MCP에 TSP까지 프로토콜만 계속 늘어나네. TSP는 트리소듐 포스페이트라 세척에 좋은 걸로 아는데.
결국 type-at-point를 기계가 읽는 형태로 LSP 확장에 넣어서 Pylance랑 Pyright를 떼어내려는 것 같음. 결과 타입 포맷이 파이썬 전용이라 다른 언어용으로는 안 쓰일 스키마임.
UTF-16 그대로 간 게 아쉽다. 새 프로토콜이면 바로잡을 기회였는데.
그냥 md 파일 하나에 JSON 스키마 몇백 줄로 확장 메시지 정의한 수준이라, 프로토콜을 밑바닥부터 다시 설계한 건 아님. 전송에 UTF-16 쓰는 게 뭐가 문제임?
파이썬 말고 쓸 데가 있나 싶긴 한데, 공식 타입 체커가 없는 PHP나 Erlang, Ruby 같은 데는 도움이 될 수도 있겠음.
파이썬이 이렇게 점유율을 먹은 게 아쉽다. 생태계가 재앙인데 더 잘 설계된 언어들이 수십 년 전에 갖춘 걸 계속 덧대고 있음.
패키징은 진짜 문제임. venv에 activate/deactivate, $PATH 건드리는 스크립트 지옥에 poetry에 uv까지 나왔는데, 20년 동안 이 꼴을 대체한 게 없다는 게 말이 됨?
그래도 파이썬은 지금 당장 내 문제를 푸는 데 맞춰져 있음. 벤더 지원도 마케팅도 없이 사람들이 쓰고 싶어서 퍼진 언어인데, 대체 언어들이 왜 그 자리를 못 가져갔는지 생각해 봐야 함.
DetachHead가 basedpyright 메인테이너인데 TSP를 전에 비판했고, astral의 Ty는 TSP를 지원할 거라고 함. MS는 결국 생태계 락인으로 돈 버는 방법밖에 모르는 것 같음.
파이썬은 잘 모르고 C# 위주로 하는 사람인데, 이게 대체 뭘 하는 건지 설명해 줄 사람 있음?