Versi Windows yang dinanti-nantikan bagi Zed, sebuah editor kod yang memfokuskan prestasi, telah menghadapi cabaran teknikal yang ketara yang menyerlahkan kerumitan pembangunan merentas platform. Walaupun pasukan telah mencapai kemajuan yang besar dengan empat jurutera bekerja sepenuh masa pada port tersebut selama enam minggu, perjalanan ini telah mendedahkan perbezaan asas dalam cara Windows mengendalikan grafik, sistem fail, dan operasi sistem berbanding macOS dan Linux.
Baik Pulih Backend Grafik Mencetuskan Perbincangan Pembangun
Cabaran paling ketara datang daripada pergantungan awal Zed pada API grafik Vulkan, yang menyebabkan isu keserasian pada banyak mesin Windows. Pasukan mendapati bahawa penggunaan mereka terhadap sambungan rendering dinamik Vulkan 1.3 terlalu bercita-cita tinggi untuk keserasian yang meluas. Ini memaksa mereka mencipta backend rendering DirectX 11 yang baharu sepenuhnya, lengkap dengan pelaksanaan shader HLSL untuk melengkapkan versi MSL (macOS) dan WGSL (Vulkan) sedia ada mereka.
Baik pulih grafik melangkaui sekadar menukar API. Pasukan terpaksa meninggalkan Direct2D untuk rendering teks kerana ia bercanggah dengan RenderDoc, alat nyahpepijat penting untuk pembangunan grafik Windows. Mereka beralih kepada DirectWrite untuk rasterisasi glyph, yang sebenarnya membantu membetulkan pepijat sedia ada dengan sempadan aksara dan isu pemotongan.
Nota: Vulkan ialah API grafik moden yang menyediakan akses peringkat rendah kepada perkakasan GPU, manakala DirectX 11 ialah API grafik mantap Microsoft yang dijamin berfungsi pada Windows 7 dan yang terkini.
Cabaran Teknikal yang Dihadapi:
- Graphics API: Bertukar daripada Vulkan 1.3 kepada DirectX 11 untuk keserasian yang lebih luas
- Shader Languages: Kini mengekalkan tiga pelaksanaan ( MSL , WGSL , HLSL )
- Text Rendering: Beralih daripada Direct2D kepada DirectWrite untuk keserasian penyahpepijatan
- Penggunaan Memori: Membetulkan ketidakcekapan VRAM dalam pemaparan laluan dengan pengoptimuman MSAA
- Auto-Updates: Mencipta binari pembantu khusus untuk sekatan sistem fail Windows
- Crash Reporting: Melaksanakan simbolikasi sebelah pelayan menggunakan fail minidump
![]() |
---|
Imej ini menyerlahkan cabaran yang dihadapi oleh pasukan pembangunan Zed akibat isu keserasian grafik semasa memindahkan ke Windows |
Isu Pengurusan Memori Mendedahkan Perbezaan Platform
Masalah kritikal muncul apabila ahli pasukan mula menggunakan Zed sebagai pemacu harian mereka pada Windows - kerap ranap disebabkan kegagalan peruntukan memori GPU. Isu ini tidak kelihatan pada macOS kerana Mac terkini menggunakan seni bina memori bersepadu, di mana RAM sistem dan memori grafik dikongsi. Sistem Windows dan Linux biasanya mempunyai memori grafik yang berasingan dan lebih terhad.
Penyelesaian datang daripada sumber yang tidak dijangka: pasukan Longbridge, yang menggunakan rangka kerja UI Zed untuk aplikasi mereka sendiri. Mereka mengenal pasti ketidakcekapan dalam cara Zed merender laluan (garisan dan lengkung yang digunakan untuk pemilihan dan sorotan). Pendekatan asal mencipta berbilang tekstur besar untuk anti-aliasing, menggunakan memori video yang berlebihan. Pembetulan melibatkan melukis semua laluan ke tekstur tunggal, mengurangkan penggunaan memori sambil sebenarnya meningkatkan prestasi merentas semua platform.
Komuniti Berpecah Mengenai Pendekatan Pembangunan Merentas Platform
Cabaran teknikal telah mencetuskan semula perdebatan dalam komuniti pembangun mengenai strategi pembangunan merentas platform. Sesetengah pihak berhujah bahawa membina kit alat tersuai membawa kepada masalah seperti ini, mencadangkan bahawa rangka kerja yang mantap akan mengelakkan isu keserasian grafik sepenuhnya.
Walau bagaimanapun, penyokong membalas bahawa pendekatan ini membolehkan Zed berasa benar-benar asli pada setiap platform dan bukannya menyampaikan editor perlahan lain yang membungkus keseluruhan pelayar. Faedah prestasi pendekatan tersuai mereka jelas dalam penggunaan harian, walaupun proses pembangunan lebih kompleks.
Inilah sebabnya anda tidak membuat kit alat merentas platform anda sendiri.
Perbincangan mencerminkan ketegangan yang lebih luas dalam pembangunan perisian antara mengambil jalan pintas dengan rangka kerja sedia ada berbanding membina penyelesaian yang dioptimumkan dan khusus platform.
Item Kerja yang Tinggal:
- Penyesuaian pengikatan kunci untuk konvensyen Windows
- SSH remoting dengan keserasian laluan Windows/Linux
- Sokongan kelas pertama WSL (Windows Subsystem for Linux)
- Pembetulan konvensyen laluan sambungan
- Pengoptimuman prestasi untuk backend DirectX 11 yang baharu
Cabaran Khusus Windows Melangkaui Grafik
Port Windows mendedahkan banyak halangan khusus platform melangkaui rendering grafik. Pengemas kini automatik memerlukan reka bentuk semula lengkap kerana Windows menghalang penimpaan fail boleh laku semasa ia berjalan. Pasukan mencipta pembantu kemas kini automatik berasingan yang mengendalikan operasi fail apabila Zed tidak aktif.
Malah pelaporan ranap memerlukan pengerjaan semula. Analisis ranap Windows memerlukan fail PDB yang terlalu besar untuk dihantar dengan pemasang, jadi pasukan melaksanakan simbolikasi sebelah pelayan bagi fail minidump untuk pengguna yang memilih masuk.
Memandang ke hadapan, pasukan masih menghadapi cabaran dengan pengikatan kunci (pengguna Windows menjangkakan pintasan papan kekunci yang berbeza), remoting SSH (konvensyen laluan fail yang berbeza), integrasi WSL, keserasian sambungan, dan pengoptimuman prestasi untuk backend grafik baharu.
Port Windows Zed menggambarkan bagaimana perbezaan platform berjalan jauh lebih mendalam daripada elemen UI peringkat permukaan. Walaupun komitmen pasukan terhadap prestasi asli patut dipuji, hutang teknikal daripada pendekatan tersuai mereka terus terkumpul ketika mereka berkembang ke platform baharu.