Eliza Weisman
๐ค SpeakerAppearances Over Time
Podcast Appearances
And really, the way that it has impacted me is that I will never write lock-free, wait-free, or even concurrent code that uses locks that is of sufficient complexity without using Loom. And I try very hard to avoid... anyone else's code that has not either been tested using Loom or tested using another similar model checking tool. Because I don't think that human beings unassisted do that.
And really, the way that it has impacted me is that I will never write lock-free, wait-free, or even concurrent code that uses locks that is of sufficient complexity without using Loom. And I try very hard to avoid... anyone else's code that has not either been tested using Loom or tested using another similar model checking tool. Because I don't think that human beings unassisted do that.
I think that it's sort of like C versus REST, right? It's sort of like there are plenty of C programs that have run in production and are, you know, thus far we have not seen the lurking memory errors in them. That's great. But This is a way of exhaustively proving the correctness of our programs.
I think that it's sort of like C versus REST, right? It's sort of like there are plenty of C programs that have run in production and are, you know, thus far we have not seen the lurking memory errors in them. That's great. But This is a way of exhaustively proving the correctness of our programs.
And it has taught me that I don't like this is not me saying, like, y'all don't know what you're doing, because I don't trust myself to do this unassisted either. I think that it is just fundamentally like you will regret it. not using these tools, and you will regret using any library that implements a complex concurrent data structure that is not tested using a tool like this.
And it has taught me that I don't like this is not me saying, like, y'all don't know what you're doing, because I don't trust myself to do this unassisted either. I think that it is just fundamentally like you will regret it. not using these tools, and you will regret using any library that implements a complex concurrent data structure that is not tested using a tool like this.
I'm not saying, it certainly does not have to be Zoom in particular, but something of this nature is just kind of a necessary tool to write this kind of software. I certainly was there for the gradual sort of push to cover all of Tokyo's internals with Loom. Carl developed this while he was sort of rewriting the scheduler.
I'm not saying, it certainly does not have to be Zoom in particular, but something of this nature is just kind of a necessary tool to write this kind of software. I certainly was there for the gradual sort of push to cover all of Tokyo's internals with Loom. Carl developed this while he was sort of rewriting the scheduler.
And over time, we sort of pushed to get it into more and more of the various synchronization primitives and other Tokyo internals. And we found just a kind of devastating amount of bugs by requiring that any new or changed code have tests. And many of those bugs had not been discovered directly.
And over time, we sort of pushed to get it into more and more of the various synchronization primitives and other Tokyo internals. And we found just a kind of devastating amount of bugs by requiring that any new or changed code have tests. And many of those bugs had not been discovered directly.
But they probably sort of fixed a lot of the weird, inexplainable behaviors that there were GitHub issues that nobody really knew what the answer to was.
But they probably sort of fixed a lot of the weird, inexplainable behaviors that there were GitHub issues that nobody really knew what the answer to was.
Yeah. At... It came out of, I believe, between... Some of you might be old enough to remember Tokyo 1.0, or Tokyo 0.1, where Tokyo was split into Tokyo Core and Tokyo IO and various other crates. And in the sort of...
Yeah. At... It came out of, I believe, between... Some of you might be old enough to remember Tokyo 1.0, or Tokyo 0.1, where Tokyo was split into Tokyo Core and Tokyo IO and various other crates. And in the sort of...
process of writing Tokyo 0.2 Carl rewrote the entire multi-threaded runtime more or less on his own and in the process of doing that he realized that this was just like extremely difficult and somewhere along the line found the paper I believe the original the paper is called CDS Checker And it describes a very similar thing in C++.
process of writing Tokyo 0.2 Carl rewrote the entire multi-threaded runtime more or less on his own and in the process of doing that he realized that this was just like extremely difficult and somewhere along the line found the paper I believe the original the paper is called CDS Checker And it describes a very similar thing in C++.
And Carl basically said to himself, I can't keep continuing the scheduler rewrite without this. I have to stop what I'm doing and go and implement it. And I'm sure Carl can recount this story much better than I can. He sort of stopped everything he was doing and went and materialized the thing.
And Carl basically said to himself, I can't keep continuing the scheduler rewrite without this. I have to stop what I'm doing and go and implement it. And I'm sure Carl can recount this story much better than I can. He sort of stopped everything he was doing and went and materialized the thing.
Since then, it has been kind of improved substantially, in particular with regards to actually being able to tell you what went wrong in your program instead of just sort of, well, you did a data race. Good luck. And also its performance has been kind of optimized substantially because we might not generally think like, oh, it's a testing tool. Performance is like very, very important.
Since then, it has been kind of improved substantially, in particular with regards to actually being able to tell you what went wrong in your program instead of just sort of, well, you did a data race. Good luck. And also its performance has been kind of optimized substantially because we might not generally think like, oh, it's a testing tool. Performance is like very, very important.