Conrad Irwin
👤 PersonAppearances Over Time
Podcast Appearances
Well, before it did exist, I kept switching between NeoVim and VS Code. VS Code, because I like the language servers and all of that stuff, but it would just frustrate me too often. So I'd go back to NeoVim where I know how to be productive. And so I've spent a lot of my time making Zed's Vim mode work for me and for the other people who use Vim. So that's been fun.
And so you're kind of the ideal target user, someone who wants better things from their tools. And so building that the right way has been very fun.
And so you're kind of the ideal target user, someone who wants better things from their tools. And so building that the right way has been very fun.
And so you're kind of the ideal target user, someone who wants better things from their tools. And so building that the right way has been very fun.
Rust definitely helps a lot. It's not JavaScript, which is really nice. But one of the things that we do that is very different is that we render like a game renders. So each frame, so every 8 milliseconds or 16 milliseconds, we redraw the entire screen to the GPU.
Rust definitely helps a lot. It's not JavaScript, which is really nice. But one of the things that we do that is very different is that we render like a game renders. So each frame, so every 8 milliseconds or 16 milliseconds, we redraw the entire screen to the GPU.
Rust definitely helps a lot. It's not JavaScript, which is really nice. But one of the things that we do that is very different is that we render like a game renders. So each frame, so every 8 milliseconds or 16 milliseconds, we redraw the entire screen to the GPU.
and that means that we are not CPU-bound when it comes to rendering stuff, unlike, say, a VS Code or an HTML that has to do a lot of CPU work to get stuff onto the screen. Ours is all GPU out there. And so that's kind of the biggest difference, I would say. Also, because of the time we started it, language servers are built in in VS Code. Each language server is wrapped in an extension.
and that means that we are not CPU-bound when it comes to rendering stuff, unlike, say, a VS Code or an HTML that has to do a lot of CPU work to get stuff onto the screen. Ours is all GPU out there. And so that's kind of the biggest difference, I would say. Also, because of the time we started it, language servers are built in in VS Code. Each language server is wrapped in an extension.
and that means that we are not CPU-bound when it comes to rendering stuff, unlike, say, a VS Code or an HTML that has to do a lot of CPU work to get stuff onto the screen. Ours is all GPU out there. And so that's kind of the biggest difference, I would say. Also, because of the time we started it, language servers are built in in VS Code. Each language server is wrapped in an extension.
In Z, we do have some extensions that provide that, but language server is really kind of like the thing it's based on. And then the other big piece of tech that we use a lot of is TreeSitter. So when you're trying to do things like jumping to matching brackets, we don't have to pause the entire file.
In Z, we do have some extensions that provide that, but language server is really kind of like the thing it's based on. And then the other big piece of tech that we use a lot of is TreeSitter. So when you're trying to do things like jumping to matching brackets, we don't have to pause the entire file.
In Z, we do have some extensions that provide that, but language server is really kind of like the thing it's based on. And then the other big piece of tech that we use a lot of is TreeSitter. So when you're trying to do things like jumping to matching brackets, we don't have to pause the entire file.
We already have a tree of what the syntax looks like, and we can just jump you to the other end of the node. And so building on sensible foundations means that most operations are faster. We're not trying to iterate over the whole file at one time or that kind of stuff.
We already have a tree of what the syntax looks like, and we can just jump you to the other end of the node. And so building on sensible foundations means that most operations are faster. We're not trying to iterate over the whole file at one time or that kind of stuff.
We already have a tree of what the syntax looks like, and we can just jump you to the other end of the node. And so building on sensible foundations means that most operations are faster. We're not trying to iterate over the whole file at one time or that kind of stuff.
Yeah, there's still some CPU work involved in rendering the screen, like when you change the UI. But the CPU creates this kind of tree of nodes, very similar to HTML. And then the GPU is responsible for taking that tree of nodes and flushing that to pixels.
Yeah, there's still some CPU work involved in rendering the screen, like when you change the UI. But the CPU creates this kind of tree of nodes, very similar to HTML. And then the GPU is responsible for taking that tree of nodes and flushing that to pixels.
Yeah, there's still some CPU work involved in rendering the screen, like when you change the UI. But the CPU creates this kind of tree of nodes, very similar to HTML. And then the GPU is responsible for taking that tree of nodes and flushing that to pixels.
It doesn't happen automatically. A lot of the code in Zed is built to handle those things. And so where Rust really helps is things like lifetimes. You close a file that should be deallocated, and Rust makes really good guarantees about that kind of stuff.