Type Server Protocol(TSP)是微軟在 Pylance 專案中提出的一套 JSON-RPC 通訊協定,用來讓客戶端工具查詢「型別伺服器」所維護的程式碼型別分析結果。所謂型別伺服器,是負責持續追蹤整個工作區型別分析狀態的服務。TSP 的目標是讓不同的編輯器與工具,都能用統一的方式取得 Python 程式碼的精確型別資訊,而不必各自重新分析。
TSP 區分三種型別結果:計算型別(實際推斷出的型別)、聲明型別(程式碼中明確標註的型別)與預期型別(根據上下文要求的型別)。運作上,客戶端先啟動型別伺服器,透過 stdio 或 Node IPC 以 JSON-RPC 通訊;伺服器用非負整數「快照」標記每次分析狀態,程式碼一有變動就推進快照版本,也支援額外開啟唯讀連線讓多個查詢並行處理,位置編碼則沿用 Language Server Protocol 的零基索引與 UTF-16 慣例。
TSP 刻意沿用了 Language Server Protocol(LSP)的部分資料格式與慣例,例如 Position 與 Range,主連線通常同時負責 LSP 的初始化與文件同步,額外連線則專門處理 TSP 的型別查詢,這樣的設計讓既有支援 LSP 的工具鏈比較容易銜接。目前協定版本為 0.4.1,仍屬於 0.x 開發階段,minor 版本變更可能不相容,patch 版本則保證向後相容,顯示協定仍在持續演進中。
這則新聞對正在學程式的孩子來說比較偏技術底層,不是初學者會直接碰到的東西,反而更貼近專業開發者或工具開發者的世界。但如果家長想讓孩子理解「編輯器為什麼知道這個變數是字串、那個函式該傳什麼參數」,這類型別伺服器與協定正是背後讓程式碼提示與自動完成變聰明的機制,可以當成讓孩子看見工具背後運作邏輯的一個例子。
開發工具程式語言開源