Conrad Irwin
๐ค SpeakerAppearances Over Time
Podcast Appearances
It's something that evolved naturally. So back to GPUI again, it provides contexts. And contexts are roughly a way of storing global state, but not in a global. But what that lets you do is that code that is sync takes an app context, and code that is async takes an async context. And so if you build something slow, you make it take an async context. You can't call it on the main thread anymore.
It's something that evolved naturally. So back to GPUI again, it provides contexts. And contexts are roughly a way of storing global state, but not in a global. But what that lets you do is that code that is sync takes an app context, and code that is async takes an async context. And so if you build something slow, you make it take an async context. You can't call it on the main thread anymore.
It's something that evolved naturally. So back to GPUI again, it provides contexts. And contexts are roughly a way of storing global state, but not in a global. But what that lets you do is that code that is sync takes an app context, and code that is async takes an async context. And so if you build something slow, you make it take an async context. You can't call it on the main thread anymore.
And so it gets easy to manage it kind of at a type level. But it does require when you're building a new feature that is CPU bound to notice and put that in the background.
And so it gets easy to manage it kind of at a type level. But it does require when you're building a new feature that is CPU bound to notice and put that in the background.
And so it gets easy to manage it kind of at a type level. But it does require when you're building a new feature that is CPU bound to notice and put that in the background.
Yeah, exactly. I hadn't thought about it that way, but you're right. It's kind of nice. This is async. Go away.
Yeah, exactly. I hadn't thought about it that way, but you're right. It's kind of nice. This is async. Go away.
Yeah, exactly. I hadn't thought about it that way, but you're right. It's kind of nice. This is async. Go away.
Well, I mean, beyond the complexity of the editor piece, one of the things that is tricky with Rust, and we kind of touched on this a bit of time, is the ownership rules make it challenging because the text editor is fairly self-referential. You have all of the... All of the things want to know about the editor and the editor needs to be able to tell lots of things stuff.
Well, I mean, beyond the complexity of the editor piece, one of the things that is tricky with Rust, and we kind of touched on this a bit of time, is the ownership rules make it challenging because the text editor is fairly self-referential. You have all of the... All of the things want to know about the editor and the editor needs to be able to tell lots of things stuff.
Well, I mean, beyond the complexity of the editor piece, one of the things that is tricky with Rust, and we kind of touched on this a bit of time, is the ownership rules make it challenging because the text editor is fairly self-referential. You have all of the... All of the things want to know about the editor and the editor needs to be able to tell lots of things stuff.
And so we have several different solutions for, okay, here's the editor, we'll send events this way, or you can observe it and get things out. But it's not as easy as it would be in a language like JavaScript to just, okay, we'll plonk this thing on the side and the editor could talk to it and it could talk to the editor and we don't have to worry about it.
And so we have several different solutions for, okay, here's the editor, we'll send events this way, or you can observe it and get things out. But it's not as easy as it would be in a language like JavaScript to just, okay, we'll plonk this thing on the side and the editor could talk to it and it could talk to the editor and we don't have to worry about it.
And so we have several different solutions for, okay, here's the editor, we'll send events this way, or you can observe it and get things out. But it's not as easy as it would be in a language like JavaScript to just, okay, we'll plonk this thing on the side and the editor could talk to it and it could talk to the editor and we don't have to worry about it.
And so that's probably the main piece that Rust makes it tricky. Other than that, the hard bit is just building a text editor. There's so many features that people expect to just work.
And so that's probably the main piece that Rust makes it tricky. Other than that, the hard bit is just building a text editor. There's so many features that people expect to just work.
And so that's probably the main piece that Rust makes it tricky. Other than that, the hard bit is just building a text editor. There's so many features that people expect to just work.
Why is that? Because the people who want Vim Mode can't live without it, and everyone else is like, I don't care about this. So that's true for not every feature we build, but a number of them. We've been working on Jupyter Notebooks, for example, and people who need Jupyter Notebooks, they love that feature. And everyone else is like, yeah, whatever. I don't use that.
Why is that? Because the people who want Vim Mode can't live without it, and everyone else is like, I don't care about this. So that's true for not every feature we build, but a number of them. We've been working on Jupyter Notebooks, for example, and people who need Jupyter Notebooks, they love that feature. And everyone else is like, yeah, whatever. I don't use that.