基于Rust語言的代碼編輯器Zed的聯(lián)合創(chuàng)始人Max Brunsfeld近日解釋了為什么該編輯器Windows版本移植耗時如此之久,這一情況凸顯了跨平臺應用開發(fā)者在支持微軟操作系統(tǒng)時面臨的技術摩擦。
Zed首個測試版于2023年3月發(fā)布,但僅支持macOS。Linux版本隨后在2024年6月推出。Windows移植工作從2024年初開始,最初主要由貢獻者Junkui Zhang提供代碼提交,但Brunsfeld表示,在過去六周里,Zed已有四名工程師專門負責Windows移植工作。目前Windows版本處于封閉內(nèi)測階段,用戶也可以通過源代碼自行構建。
Zed在所有平臺上都處于預覽狀態(tài),計劃在2025年底前發(fā)布1.0正式版。根據(jù)路線圖,Windows支持也是其中一部分,不過從Brunsfeld對當前狀態(tài)的描述來看,某種形式的預覽版發(fā)布可能性更大。
對于使用Qt等框架(主要面向C++)的開發(fā)者來說,開發(fā)支持Windows的跨平臺應用并不困難。但Zed團隊決定使用自己開發(fā)的GPU加速UI框架GPUI來優(yōu)化性能表現(xiàn)。這意味著需要使用圖形API來渲染用戶界面。在macOS上使用Metal和MSL(Metal著色語言),在Linux上則使用封裝了Vulkan(Khronos開發(fā)的跨平臺圖形API)的Blade API。
這是一種底層開發(fā)方法,與微軟Visual Studio Code使用JavaScript運行時的方式不同,但這讓Zed在響應速度和資源占用方面表現(xiàn)出眾。
Zed團隊最初在Windows上也使用Blade,但在Windows ARM64構建版本上遇到了問題。最新代碼改用DirectX 11,這是Windows原生圖形API。雖然運行效果更好,內(nèi)存占用更低,但這意味著需要支持Zed GPU著色器的三種不同實現(xiàn)。
Windows平臺的差異不僅體現(xiàn)在GPU代碼上。Brunsfeld還列出了其他問題,包括:
文件系統(tǒng)操作差異,包括無法在.exe文件運行時覆蓋該文件,這使更新變得復雜。
崩潰報告機制不同,需要重新構建崩潰報告基礎設施。
按鍵綁定習慣不同。
文件系統(tǒng)路徑約定不同,影響從Windows客戶端編輯遠程Linux機器上的文件。
需要為WSL(Windows Linux子系統(tǒng))提供一流支持,而不是依賴SSH進行授權驗證。
Windows構建說明顯示了其他問題,如"路徑過長"錯誤(可通過設置長路徑支持來解決)。
正如Zed開發(fā)團隊的經(jīng)驗所示,編寫在Windows、Mac和Linux上同樣表現(xiàn)出色的原生應用程序具有挑戰(zhàn)性。這也解釋了為什么Windows在商業(yè)和游戲領域具有粘性,因為反向移植同樣困難。
Q&A
Q1:Zed編輯器是什么?目前支持哪些平臺?
A:Zed是一款基于Rust語言開發(fā)的代碼編輯器,使用自研的GPU加速UI框架GPUI來優(yōu)化性能。目前已發(fā)布macOS和Linux版本,Windows版本正在封閉內(nèi)測中。該編輯器以快速響應和低資源占用著稱。
Q2:為什么Zed的Windows版本開發(fā)這么困難?
A:主要因為Zed使用了自研的底層GPU加速框架,需要針對不同平臺使用不同的圖形API。Windows平臺在文件系統(tǒng)操作、崩潰報告、按鍵綁定、路徑約定等方面都與其他平臺存在差異,還需要支持WSL,這些都增加了開發(fā)復雜度。
Q3:Zed什么時候會正式發(fā)布1.0版本?
A:根據(jù)官方路線圖,Zed計劃在2025年底前發(fā)布1.0正式版,Windows支持也將包含在內(nèi)。目前所有平臺的Zed都處于預覽狀態(tài),Windows版本可能會先以某種預覽形式發(fā)布。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.