We assumed Rust would be lower productivity than a language like Java, but that turned out to be an illusion. There was definitely a learning curve, but once the team was ramped up, they moved just as fast as they ever had.
Invoking undefined behaviour turns a tower of abstractions into a matryoshka doll of landmines.
-- Something I just came up with a few minutes ago in an e-mail to sum up an explanation of how, because a call to *_unchecked is probably going to call *_unchecked methods on whatever types are being wrapped, you have to understand every layer of abstraction to understand why breaking an invariant may invoke undefined behaviour.
Our experience is that no matter how many safeguards you put on code, thereās no cure-all that prevents bad programming. Of course, to take the contrary argument, seat belts donāt stop all traffic fatalities, but you could just choose not to have accidents. So we do have seat belts. If Rust can prevent some mistakes or malicious intent, maybe itās worth it even if it isnāt perfect.
You might be asking: why did you rewrite [...] in Rust? And yeah, I donāt really have a good reason. Itās a hobby project. Like gardening, but with more segfaults.
C has to deal with the lifetimes of pointers too. The fact that the C compiler doesn't help you find problems doesn't make the underlying problem go away
In addition to rewriting the tools in Rust, a safer language, some little-used features of sudo were not implemented in order to reduce vulnerability surface area. This turned out to be meaningful in July of 2025 when two vulnerabilities (..) were discovered in sudo features not implemented in sudo-rs. In response to one of those, sudo has deprecated and will remove the feature hosting the vulnerability.
ā Josh Aas on the prossimo blog
I like the quote because it shows that a) Rust doesnāt solve every problem (though it does solve a few), and b) it can be a very good idea not to implement all features.
I clone() everything now. The Borrow Checker permits this small rebellion, this inefficiency. It knows I suffer more knowing my code is not idiomatic. Every .clone() is a confession of my failure. Every Arc<Mutex> a monument to my inadequacy.
Many programmers dream of working on a farm or living in the woods, but when I retire, Iāll just be coding Java in Intellij all day, because that was good and nothing else is really there.