Remix.run Logo
Zed editor switching graphics lib from blade to wgpu(github.com)
114 points by jpeeler 2 hours ago | 70 comments
satvikpendem 37 minutes ago | parent | next [-]

Zed also stopped GPUI (their GPU accelerated Rust UI framework) development for now, sadly.

> Hey y'all, GPUI develoment is getting some major brakes put on it. We gotta focus on some business relevant work in 2026, and so I'm going to be pushing off anything that isn't directly related to Zed's use case from now on. However, Nate, former employee #1 at Zed, has started a little side repo that people can keep iterating on if they're interested: https://github.com/gpui-ce/gpui-ce. I'm also a maintainer on that one, and would like to try to help maintain it off of work hours. But I'm not sure how much I'll be able to commit to this

https://discord.com/channels/869392257814519848/144044062864...

nu11ptr 12 minutes ago | parent [-]

While unfortunate, to me this just says any user requested features aren't going to get merged anytime soon. As is, it already runs on windows/linux/mac, and will need to do so maturely for Zed to function. Therefore, to me, this isn't that big of a deal, and when they need things like web support (on their roadmap), they will then add that.

I'm curious... does anyone have any PRs or features that they feel need merging in order to use GPUI in their own projects? (other than web support)

piker an hour ago | parent | prev | next [-]

Rust GUI is in a tough spot right now with critical dependencies under-staffed and lots of projects half implemented. I think the advent of LLMs has been timed perfectly to set the ecosystem back for a few more years. I wrote about it, and how it affected our development yesterday: https://tritium.legal/blog/desktop

pjmlp an hour ago | parent | next [-]

Interesting read, however as someone from the same age group as Casey Muratori, this does not make much sense.

> The "immediate mode" GUI was conceived by Casey Muratori in a talk over 20 years ago.

Maybe he might have made it known to people not old enough to have lived through the old days, however this is how we used to program GUIs in 8 and 16 bit home computers, and has always been a thing in game consoles.

Jtsummers 19 minutes ago | parent | next [-]

It's like the common claim that data-oriented programming came out of game development. It's ahistorical, but a common belief. People can't see past their heroes (Casey Muratori, Jonathon Blow) or the past decade or two of work.

PKop 7 minutes ago | parent | prev | next [-]

> Maybe he might have made it known to people

Yes he coined the term not the technique

piker an hour ago | parent | prev [-]

I mean fair enough, but even wikipedia agrees with that take!

> Graphical user interfaces traditionally use retained mode-style API design,[2][5] but immediate mode GUIs instead use an immediate mode-style API design, in which user code directly specifies the GUI elements to draw in the user input loop. For example, rather than having a CreateButton() function that a user would call once to instantiate a button, an immediate-mode GUI API may have a DoButton() function which should be called whenever the button should be on screen.[6][5] The technique was developed by Casey Muratori in 2002.[6][5] Prominent implementations include Omar Cornut's Dear ImGui[7] in C++, Nic Barker's Clay[8][9] in C and Micha Mettke's Nuklear[10] in C.

https://en.wikipedia.org/wiki/Immediate_mode_(computer_graph...

[Edit: I'll add an update to the post.]

pjmlp 43 minutes ago | parent | next [-]

Dig out any source code for Atari, Spectrum or Commodore 64 games, written in Assembly, or early PC games, for example.

And you will see which information is more accurate.

piker 40 minutes ago | parent [-]

Yeah no doubt you're correct. I wasn't disagreeing - just establishing the reasonableness of my original statement. I must have read it in the Dear ImGui docs somewhere.

vodou 13 minutes ago | parent | prev | next [-]

I am pretty sure there are people here qualified enough to edit that Wikipedia page in a proper way.

arandomhuman an hour ago | parent | prev [-]

Wikipedia clearly has never been shown to have faults regarding accuracy.

tux3 33 minutes ago | parent [-]

{{cn}}

jsheard 34 minutes ago | parent | prev | next [-]

> Rust GUI is in a tough spot right now with critical dependencies under-staffed and lots of projects half implemented.

Down the stack, low-level 3D acceleration is in a rough spot too unfortunately. The canonical Rust Vulkan wrapper (ash) hasn't cut a release for nearly two years, and even git main is far behind the latest spec updates.

kelvinjps10 12 minutes ago | parent | prev | next [-]

I don't feel like having one main library for creating windows it's bad, I feel like that way the work gets shared and more collaboration happens

queuebert 36 minutes ago | parent | prev | next [-]

This is why I'm using LLMs to help me hand code the GUI for my Rust app in SDL2. I'm hoping that minimizing the low-level, drawing-specific code and maximizing the abstractions in Rust will allow me to easily switch to a better GUI library if one arises. Meanwhile, SDL is not half bad.

paddy_m an hour ago | parent | prev | next [-]

I'd love to read a writeup of the state of Rust GUI and the ecosystem if you could point me at one.

IshKebab 35 minutes ago | parent [-]

https://www.boringcactus.com/2025/04/13/2025-survey-of-rust-...

I started writing a program that needed to have a table with 1 million rows. This means it needs to be virtualised. Pretty common in GUI libraries. The only Rust GUI library I found that could do this easily was gpui-component (https://github.com/longbridge/gpui-component). It also renders text crisply (rules out egui), looks nice with the default style (rules out GTK, FLTK, etc.), isn't web-based (rules out Dioxus), was pretty easy to use and the developers were very responsive.

Definitely the best option today (I would say it's probably the first option that I haven't hated in some way). The only other reasonable choices I would say are:

* egui - doesn't render very nicely and some of the APIs are amateurish, but it's quick and it works. Good option for simple tools.

* Iced - looks nice and seemed to work fairly well. No virtualised lists though.

* Slint (though in some ways it is weird and it requires quite a lot of boilerplate setup).

All the others will cause you pain in some way. I think the "ones to watch" are:

* Makepad - from the demos I've seen this looks really cool, especially for arty GUI projects like synthesizers and car UIs. However it has basically no documentation so don't bother yet.

* Xilem - this is an attempt to make an 100% perfect Rust GUI library, which is cool and all but I imagine it also will never be finished.

WD-42 13 minutes ago | parent | next [-]

I’m currently writing an application that uses virtual lists in GTK: GtkListView, GtkGridView, there may be others. You ruled out GTK because of its looks I guess, I’m targeting Linux so the looks are perfect.

nu11ptr 8 minutes ago | parent [-]

Yeah, I need cross platform, and GTK looks quite foreign on Windows/macOS IMO. I toyed with custom themes, but couldn't find any I liked for a cross platform look (wanted something closer to Fluent UI).

chiffaa 26 minutes ago | parent | prev [-]

I believe latest Iced versions do have a `Lazy` widget wrapper, but I believe that effectively means you need to make your own virtual list on top of it

nu11ptr an hour ago | parent | prev | next [-]

Really? It seems better than ever to me now that we have gpui-component. That seems to finally open doors to have fully native guis that are polished enough for even commercial release. I haven't seen anything else that I would put in that category, but one choice is a start.

piker an hour ago | parent | next [-]

The problem is that Zed has understandably and transparently abandoned supporting GPUI as an open source endeavour except to the extent contributions align with its business mission.

nu11ptr 40 minutes ago | parent [-]

I remember when that came out, but I'm not sure I understand the concern. They use GPUI, so therefore they MUST keep it working and supportable, even if updating it isn't their current priority. Or are you saying they have a closed source fork now?

Actually, this story is literally them changing their renderer on linux, so they are maintaining it.

> except to the extent contributions align with its business mission

Isn't that every single open source project that is tied to a commercial entity?

piker 33 minutes ago | parent [-]

I don't know what the message means exactly, but I can't plan to build on GPUI with it out there, especially when crates that don't carry that caveat are suffering from being under-resourced.

nu11ptr 22 minutes ago | parent [-]

IMO, as long as Zed uses it, we are safe. If it doesn't, we aren't. I'm keeping it that simple.

atombender 39 minutes ago | parent | prev [-]

I tried gpui recently and I found it to be very, very immature. Turns out even things like input components aren't in gpui, so if you want to display a dialog box with some text fields, you have to write it from scratch, including cursor, selection, clipboard etc. — Zed has all of that, but it's in their own internal crates.

Do you know how well gpui-component supports typical use cases like that? Edit boxes, buttons, scroll views, tables, checkbox/radio buttons, context menus, consistent native selection and clipboard support, etc. are table stakes for desktop apps.

nu11ptr 23 minutes ago | parent [-]

Yeah, running just gpui is kinda like writing a react app without a component library. It is going to be on you to implement all your components.

All of those are handled. Run the "story" app. It is very impressive IMO.

Components list: https://longbridge.github.io/gpui-component/docs/components/

airstrike 18 minutes ago | parent | prev | next [-]

iced is doing great

karel-3d 37 minutes ago | parent | prev [-]

Can I humbly ask how are LLMs and Rust GUIs related?

tonyedgecombe 19 minutes ago | parent | next [-]

What’s the point of writing open source if it’s just going to be vacuumed up by the AI companies and regurgitated for $20 a month.

piker 35 minutes ago | parent | prev [-]

They're just straining already-strained resources on the "contributions" side and pushing interest in other directions (e.g. Electron).

ZeroCool2u 2 hours ago | parent | prev | next [-]

An interesting side effect of moving to wgpu is that in theory with some additional work, this could allow you to run Zed in a web browser similarly to how some folks run VSCode as a remote interface to the backend running on a server.

nu11ptr an hour ago | parent | next [-]

From the PR, it sounds like the switch to WGPU is only for linux. The team was reluctant to do the same for macOS/Windows since they felt their native renderer on those platforms was better and less memory intensive.

swiftcoder an hour ago | parent | next [-]

> they felt their native renderer on those platforms was better and less memory intensive

This definitely would be worth some profiling. I don't think it's a given that their custom stacks are going to beat wgpu in a meaningful way.

flohofwoe an hour ago | parent | next [-]

WebGPU has some surprising performance problems (although I only checked Google's Dawn library, not Rust's wgpu), and the amount of code that's pulled into the project is massive. A well-made Metal renderer which only implements the needed features will easily be 100x smaller (in terms of linecount) and most likely faster.

pjmlp 7 minutes ago | parent [-]

There is also the issue that it is designed with JavaScript and browser sandbox in mind, thus the wrong abstraction level for native graphics middleware.

I am still curious how much uptake WebGPU will end up having on Android, or if Java/Kotlin folks will keep targeting OpenGL ES.

vitorsr 42 minutes ago | parent | prev [-]

Please elaborate, I am curious to why would you think WebGPU would meaningfully beat their Metal/DirectX renderers.

ZeroCool2u an hour ago | parent | prev [-]

Yes, but they can add a flag to switch renderers on startup like they had for blade.

nindalf an hour ago | parent | prev | next [-]

Quoting maddythewisp from that PR:

> There is significant work beyond the renderer that would need to happen to run Zed in a browser - notably background tasks and filesystem/input APIs would need web/wasm-compatible implementations.

rafaelmn an hour ago | parent | prev | next [-]

Rendering in the browser has nothing to do with being able to do remote editing like you can in VSCode - you would just be able to edit files accessible to the browser.

Just like you can hook up local VS code native up to a random server via SSH, browser rendering is just a convenience for client distribution.

You would need a full client/server editor architecture that VS code has.

arghwhat an hour ago | parent | prev | next [-]

Well, not really. It means you have a renderer that is closer to being portable to web, not an editor that will run in web "with some additional work". The renderer was already modular before this PR.

usefulcat 33 minutes ago | parent | prev | next [-]

If you're talking about remote editing (editing files which reside on a remote server), Zed already supports that?

Octoth0rpe 29 minutes ago | parent [-]

I believe they're referring to running Zed entirely in a browser. This opens up possibilities like using zed for something like codepen, or embedding it into a git web frontend like gitea. Many projects like this basically embed vscode, a rare benefit of being an electron app which Zed is not.

ZeroCool2u 24 minutes ago | parent [-]

Exactly.

readitalready an hour ago | parent | prev [-]

Can this be done on a cheap AWS EC2 instance?

ZeroCool2u an hour ago | parent [-]

Sure it takes very little hardware power to do this, but Zed isn't actually setup for this yet. This is in theory and after a few more API's are adapted.

g947o an hour ago | parent | prev | next [-]

Will this help running Zed in environments with no GPU/old GPUs? There have been some complaints about not being able to run Zed on Ivy Bridge or in VMs, even though browsers and other applications work perfectly fine

flohofwoe 44 minutes ago | parent | prev | next [-]

Seeing that the author of Blade (kvark) isn't exactly a 3D API newbie and also worked on WebGPU I really wonder if a switch to wgpu will actually have the desired long term effect. A WebGPU implementation isn't exactly slim either, especially when all is needed is just a very small 3D API wrapper specialized for text rendering.

amelius 35 minutes ago | parent | prev | next [-]

Will this make Zed slower, since Wgpu is just a compatibility layer, adding more code?

throwup238 an hour ago | parent | prev | next [-]

Oh sweet! I threw out GPUI completely from one of my projects because of Blade. I needed headless with rendering to image for e2e testing and gave up on GPUI after trying to mess with Blade. It’s definitely a mess and moving to egui has only shuffled the deck chairs around.

fishgoesblub 37 minutes ago | parent | prev | next [-]

I hope this can somehow improve the font situation. Even on a 1440p monitor, the fonts in Zed are much blurrier than any other editor I've used. I Can't even use bitmap fonts like VSCode.

andsoitis 2 hours ago | parent | prev | next [-]

(for the linux renderer only)

skerit an hour ago | parent | prev | next [-]

Why was Blade ever decided upon? Is it older than wgpu?

suby an hour ago | parent [-]

I don't know why Blade was decided on, but it was started by Kvark who worked on WGPU for Mozilla for some time. I assumed it would be a good library on that basis.

alphazard an hour ago | parent | prev | next [-]

Can someone, who knows computer graphics, explain why the old library had so many issues with flickering and black triangles or rectangles flashing on the app, and why the new library is expected to not have those same problems?

StilesCrisis an hour ago | parent [-]

The old graphics library was basically unmaintained; bug fix PRs were being ignored. WGPU is very actively maintained.

athrowaway3z 44 minutes ago | parent | prev | next [-]

A bit of a tangent, but I wish the makepad project would get more traction in rust. Their cross-platform approach is extremely ambitious.

Muromec an hour ago | parent | prev | next [-]

Oh, this is nice. Latest builds stopped working on panfrost because it does not announce the sufrace capabilities or something like that. Maybe I can have it back to working on the orange pi

conorbergin an hour ago | parent | prev | next [-]

Is webgpu a good standard at this point? I am learning vulkan atm and 1.3 is significantly different to the previous APIs, and apparently webgpu is closer in behavior to 1.0. I am by no means an authority on the topic, I just see a lack of interest in targeting webgpu from people in game engines and scientific computing.

flohofwoe an hour ago | parent | next [-]

For a text editor it's definitely good enough if not extreme overkill.

Other then that the one big downside of WebGPU is the rigid binding model via baked BindGroup objects. This is both inflexible and slow when any sort of 'dynamism' is needed because you end up creating and destroying BindGroup objects in the hot path.

Vulkan's binding model will really only be fixed properly with the very new VK_EXT_descriptor_heap extension (https://docs.vulkan.org/features/latest/features/proposals/V...).

pornel 25 minutes ago | parent | prev | next [-]

Bevy engine uses wgpu and supports both native and WebGPU browser targets through it.

The WebGPU API gets you to rendering your first triangle quicker and without thinking about vendor-specific APIs and histories of their extensions. It's designed to be fully checkable in browsers, so if you mess up you generally get errors caught before they crash your GPU drivers :)

The downside is that it's the lowest common denominator, so it always lags behind what you can do directly in DX or VK. It was late to get subgroups, and now it's late to get bindless resources. When you target desktops, wgpu can cheat and expose more features that haven't landed in browsers yet, but of course that takes you back to the vendor API fragmentation.

swiftcoder an hour ago | parent | prev [-]

It's a good standard if you want a sort of lowest-common-denominator that is still about a decade newer than GLES 3 / WebGL 2.

The scientific folks don't have all that much reason to upgrade from OpenGL (it still works, after all), and the games folks are often targeting even newer DX/Vulkan/Metal features that aren't supported by WebGPU yet (for example, hardware-accelerated raytracing)

pjmlp 4 minutes ago | parent [-]

Khronos is trying to entice scientific folks with ANARI, because there was zero interest to move from OpenGL as you mention.

https://www.khronos.org/anari/

badhorseman 33 minutes ago | parent | prev [-]

The Zed editor seems kind of silly to me. I would rather my editor works in many possible environments maybe even one that only has a tty interface.

What advantages are people finding with this editor other then high fidelity scrolling.

chiffaa 22 minutes ago | parent | next [-]

A lot of people use VSCode. Zed's value proposition is being basically that but with fully native code, so without the madness that is Electron. If you're not a fan of this kind of tooling, it's totally fine, but many people see the value in having an extensible graphical code editor

badhorseman 8 minutes ago | parent [-]

My tone probably came off as antagonistic and that was not my intention. I was interested in if anyone was using the high fidelity graphical features for something other then making the environment prettier.

I am always interested in what features new editors and how people use them and such and if I am missing out.

pkilgore a minute ago | parent [-]

[delayed]

linolevan 25 minutes ago | parent | prev | next [-]

Early Zed user here.

There’s a lot of small things you’ll hit if you use Zed where it’s a subtlety nicer design point, but one of the big ones for me is project-wide search. Zed’s multibuffers are SO much better than VS Code’s equivalent.

If I’m debugging something on a coworkers laptop, VSCode is mostly usable until I hit that.

If you’re a craftsman, it’s worth trying different tools!

nu11ptr 6 minutes ago | parent | prev | next [-]

Does Zed have cursor-like tab completion yet?

eklavya 7 minutes ago | parent | prev [-]

I wanted to check the hype, so I installed Zed and opened a go project.

Ram usage:

VS Code 580 MB

Zed 410 MB

I don't see a reason yet to switch away from VS Code, more feature complete and I don't care about scroll speed, it's good enough in vs code.