LSP-ийн дараагийн хувьсал: Microsoft ба Meta төрөл шалгагчийг хүссэнээрээ солих "Type Server Protocol" (TSP)-ийг танилцууллаа
2016 онд Microsoft компани анх Language Server Protocol (LSP) стандартыг танилцуулснаар программчлалын хэл бүрт зориулж редактор бүрийг тус тусад нь интеграци хийдэг $M \times N$ ярвигтай асуудлыг нэгмөсөн шийдэж чадсан билээ. Редактор болон хэлний анализыг стандарт протоколоор тусгаарласан нь VS Code, Neovim, Emacs, Zed зэрэг орчин үеийн кодын редакторуудын тэсрэлт болох суурийг тавьсан юм.
Гэвч Python зэрэг динамик хэлүүдэд нэгэн том саад үүссээр ирсэн: Хэлний редактор (Language Server) болон Төрөл шалгагч (Type Checker) хоёр хоорондоо хэт хатуу уялдаатай байсан явдал юм.
Өнөөдөр Microsoft болон Meta хамтран уг хязгаарлалтыг эвдсэн Type Server Protocol (TSP) хэмээх шинэ нээлттэй стандартыг албан ёсоор танилцуулж, VS Code дээр Meta-ийн Rust хэл дээр бичсэн, хэт өндөр хурдтай Pyrefly хөдөлгүүрийг ашиглах боломжтой болсноо зарлалаа.
Асуудал юунд байсан бэ?
VS Code дээр олон сая хөгжүүлэгчдийн өдөр тутмын хэрэглээ болсон Pylance өргөтгөл нь доод давхаргадаа Microsoft-ийн Pyright хэмээх статик төрөл шалгагчийг ашигладаг. Pylance нь кодын авто-гүйцээлт (autocomplete), quick info, орчны тохиргоо болон хамгийн гол нь GitHub Copilot-ийн семантик өгөгдлийг (context grounding) хариуцдаг.
Гэвч Pyright болон Pylance хоёр хоорондоо хатуу уягдсан байв. Хэрэв та өөрийн төсөлд Meta-ийн Pyrefly, MyPy, эсвэл шинэ гарч ирж буй Rust-суурьтай бусад шалгагчдыг ашиглахыг хүсвэл Pylance-аас бүрэн татгалзаж, хязгаарлагдмал боломжтой өөр нэмэлтүүд суулгах шаардлага тулгардаг байсан юм. Өөрөөр хэлбэл, хөгжүүлэгч нэг бол Pylance-ийн баялаг IDE боломжуудыг, эсвэл өөр өндөр хурдны төрөл шалгагчийг сонгох гэсэн хоёр туйл дунд түгжигдэж байв.
Type Server Protocol (TSP) гэж юу вэ?
Энэхүү асуудлыг шийдэхээр Microsoft болон Meta хамтран Type Server Protocol (TSP)-ийг зохион бүтээжээ. Энэ нь LSP-тэй нэгэн ижил JSON-RPC дээр суурилсан тээвэрлэлтийн түвшнийг ашигладаг боловч илүү гүн түвшний үүрэгтэй.
Хэрэв LSP нь текст засварлах, файл нээх, курсорын байршил дээрх товч мэдээлэл харуулах зэрэг хэрэглэгчийн интерфэйст (UI/UX) чиглэсэн протокол бол, TSP нь төрөл шалгагч хөдөлгүүрээс статик төрлийн семантик өгөгдлийг шууд асуух протокол юм.
TSP-ээр дамжуулан үйлчлүүлэгч (client) серверээс дараах асуултуудыг шууд тавьдаг:
typeServer/getComputedType: Тухайн синтакс модны (AST) зангилаан дээр тооцоологдсон төрөл нь юу вэ?typeServer/getDeclaredType: Тухайн хувьсагч эсвэл функцийн анхлан зарлагдсан төрөл нь юу вэ?typeServer/getExpectedType: Энэ байрлалд ямар төрлийн утга хүлээгдэж байна вэ?typeServer/resolveImport: Импортыг файлын систем дэх бодит замтай уях.typeServer/getSnapshot: Баримтын өөрчлөлтийг тооцоолох анализын хувилбар (snapshot) синхрончлол.
Үүний ачаар Pylance нь зөвхөн VS Code-ийн "ухаалаг бүрхүүл" (UI & intelligence layer) болж, түүний доор ажиллах хөдөлгүүрийг залгаж салгадаг "модуль" болгон өөрчиллөө.
[ VS Code & GitHub Copilot ]
|
[ Pylance ] (UI, Context, Completions)
|
--- Type Server Protocol (TSP) ---
|
+---------+---------+
| |
[ Pyright ] [ Meta Pyrefly ] (эсвэл бусад TSP хөдөлгүүрүүд)
Meta ба Pyrefly: Секундэд 1.8 сая мөр код
TSP протоколын анхны бодит хэрэгжүүлэлт нь Meta компанийн хөгжүүлсэн Pyrefly дээр хийгдлээ.
Meta компани Instagram-ийн 20 сая гаруй мөр бүхий асар том Python монорепо дээр олон жил Pyre хэмээх хөдөлгүүрийг OCaml дээр хөгжүүлж ашиглаж байсан ч орчин үеийн шаардлагад нийцүүлэн Rust хэл дээр цоо шинэ архитектуртай Pyrefly-ийг бичсэн юм. Pyrefly нь:
- Галзуу хурд: Секундэд 1.85 сая мөр код шалгах хүчин чадалтай. Төслийн бүрэн шалгалтыг Mypy болон Pyright-аас 10–15 дахин хурдан хийдэг.
- Агшин зуурын санал хүсэлт: Файлаа хадгалсны дараа дахин шалгах хугацаа нь 10 миллисекундээс бага байдаг.
- Google-ийн шилжилт: Google хүртэл сүүлийн үед өөрсдийн 10 гаруй жил ашигласан Pytype хөдөлгүүрээсээ татгалзаж, Pyrefly-ийг албан ёсоор үндсэн монореподоо нэвтрүүлсэн билээ.
Одоо Pylance суулгасан аливаа хөгжүүлэгч VS Code-ийн status bar эсвэл settings.json тохиргооноосоо ганц товшилтоор үндсэн Pyright шалгагчийг Pyrefly-ээр сольж ажиллах боломжтой боллоо. Pylance нь таны орчинд Pyrefly суусан байгааг илрүүлбэл шууд шилжихийг өөрөө санал болгох юм.
AI агентуудын эринд энэ яагаад чухал вэ?
Энэхүү өөрчлөлт нь зөвхөн хөгжүүлэгчид кодын алдаагаа хурдан харахад зориулагдаагүй. Өнөөдөр код бичигч AI агентуудын (GitHub Copilot Workspace, Cursor, Claude Code г.м.) хамгийн том сул тал нь хийсвэрлэл (hallucination) болон динамик төрлийн алдаа гаргах явдал байдаг.
AI агент кодод засвар хийх үед миллисекундийн дотор тухайн төслийн бүтэн хамаарлыг шалгаж, бодит төрлийн алдааг (static semantic intelligence) газар дээр нь агентдаа буцаан өгч засуулах нь нэн чухал болоод байна. Type Server Protocol нь AI агент ба кодын суурийн хоорондох төрлийн мэдээллийн гүүрийг асар найдвартай, хөнгөн болгож өгч байгаа юм.
Дүгнэлт
LSP нь хөгжүүлэгчийн багаж хэрэгслийг ардчилсан анхны том хувьсгал байсан бол Type Server Protocol (TSP) нь түүнийг илүү гүн түвшинд нарийвчлан салгасан дараагийн шат болж байна. Microsoft өөрийн бүтээгдэхүүнийг өрсөлдөгч Meta-ийн хурдан технологитой нээлттэй протоколоор холбосон нь экосистем бүхэлдээ хожих маш эрүүл жишиг боллоо. Хэрэв та том Python төсөл дээр ажиллаж, төрөл шалгах хурдандаа сэтгэл дундуур байсан бол өнөөдрөөс эхлэн VS Code дээр Pyrefly-ийг туршиж үзэх цаг нь болжээ.
Эх сурвалж: Microsoft for Python Developers Blog, GitHub microsoft/pylance-release
Сэтгэгдэл
Ачаалж байна...