Zed for Windows: What's Taking So Long?

https://news.ycombinator.com/rss Hits: 2
Summary

Lots of people have been asking us when we're releasing Zed on Windows. The Windows port started as a one-person project, but for the past 6 weeks, we've had a group of four engineers focused on Windows full-time. We're excited about the progress we're making and want to share an update about the work we're doing. When we first got Zed running on Windows, we used the same rendering backend we use on Linux, which is based on Vulkan graphics API. It was useful to be able to reuse code between platforms, but we got reports from users that Zed didn't run on their machines due to the Vulkan dependency. To solve this problem, we created a new rendering backend for Zed based on DirectX 11. DirectX 11 is guaranteed to be available on Windows 7 or later, including Windows VMs, so now Zed should run for the vast majority of Windows users. The new backend also significantly reduces Zed's memory footprint. Previously, we had two implementations of our GPU shaders: one MSL implementation for macOS, and one WGSL implementation for Vulkan. To use DirectX 11, we had to create a third implementation in HLSL. The process of debugging the new rendering pipeline and shaders led us down an interesting rabbit hole of its own: glyph rasterization. When developing Zed's original macOS renderer, we had relied heavily on Xcode’s Metal debugger. It lets you capture a frame in your app, step through every draw call that happened in that frame, and inspect every vertex in the scene's geometry, and every pixel in the rendered image. On Windows, the best comparable tool for graphics debugging is RenderDoc. Unfortunately, Zed crashed on startup when run under RenderDoc, because we were relying on the Direct2D API for text rendering, and RenderDoc does not support applications that use Direct2D. To work around this limitation, we decided to stop using Direct2D and switch to rasterizing glyphs using DirectWrite instead. In the process, we fixed bugs where glyphs' boundaries were not calculated corre...

First seen: 2025-08-20 19:23

Last seen: 2025-08-20 20:23