隨著 Microsoft 最近釋出的 Multilspy ,開發者社群掀起了一場關於語言伺服器實現和許可證考慮的有趣討論。雖然 Multilspy 旨在簡化語言伺服器客戶端的建立,但社群的反應突顯了語言伺服器選擇和實現的一些微妙之處。
Multilspy 目前支援的程式語言:
- Java
- Python
- C
- Rust
- JavaScript
語言伺服器許可證複雜性
關於語言伺服器的選擇,特別是在 Python 和 C# 開發方面,出現了一個重要的討論點。社群成員注意到,雖然 Microsoft 的 Pylance 是一個強大的工具,但其受限制的許可證將其使用限制在 Microsoft 官方產品中。這導致在 Multilspy 中選擇了 Jedi Language Server 作為 Python 的替代實現。同樣,從 OmniSharp 到 Roslyn Language Server 的 C# 轉換也引發了對伺服器選擇的討論。
Roslyn Language Server (即 VSC 中基礎 C# 擴充套件所使用的)沒有特殊的許可條款。閉源的是偵錯程式,而自定義許可條款主要適用於該偵錯程式和需要訂閱的 Dev Kit 擴充套件。
討論的主要語言伺服器:
- Pylance (微軟限制使用)
- Jedi Language Server (開放)
- Pyright (MIT 許可)
- Roslyn Language Server (開放)
- OmniSharp (已棄用)
開源替代方案和社群解決方案
社群強調了可行的開源替代方案,特別是將 Pyright 作為 Pylance 的替代品。Pyright 採用 MIT 許可證,提供與 Pylance 相當的功能,實際上 Pylance 就是基於它構建的。這為尋求不受限制的語言伺服器實現的開發者提供了一個實用的解決方案。
實際實現挑戰
開發者分享了他們在語言伺服器實現方面的經驗,特別提到了伺服器初始化和配置的困難。一位開發者在整合 Java 語言伺服器時遇到的困難突顯了 Multilspy 標準化方法的價值。該專案的作者積極與社群互動,提供支援並強調適當文件和配置共享的重要性。
未來影響
圍繞 Multilspy 的討論揭示了行業對標準化、文件完善的語言伺服器實現方法的廣泛需求。該專案旨在建立一個語言伺服器配置的中央儲存庫,這可能會顯著降低實現障礙並改善跨平臺開發體驗。
注:語言伺服器協議(LSP)是一個標準化協議,允許開發工具與提供自動完成、轉到定義和懸停文件等語言功能的伺服器進行通訊。