Things Have History
Rust, or how a broken elevator changed systems programming

programming-languages

Rust, or how a broken elevator changed systems programming

Listen · 3:55

The elevator in Graydon Hoare’s Vancouver apartment building stopped working in 2006. A software bug. He was on the twenty-first floor. Somewhere between the lobby and his front door — that climb taking considerably longer than it should — he decided to write a programming language.

Hoare was 29, a programmer at Mozilla Research, and in the habit of thinking about why software crashed. C and C++ — the languages that ran the world’s infrastructure, from operating systems to browsers to hospital equipment — were built on a model where the programmer managed every byte of memory by hand. Get it right, and your code ran fast. Get it wrong, and you got buffer overflows, use-after-free errors, dangling pointers: the entire taxonomy of bugs that had been causing security failures for forty years. The elevator was not a metaphor. It was just the latest example.

By 2009, Hoare had spent three years on a side project he had told no one at Mozilla about. That year, a small group at the company noticed what he was building and the project received official sponsorship. In July 2010, at the Mozilla Annual Summit, he announced it publicly: “I have been writing a compiled, concurrent, safe systems programming language for the past four and a half years.” Rust had a name, a public debut, and a stated ambition: to be as fast as C, and as safe as a language with a garbage collector — without actually having one.

The central invention was the ownership system. In most languages, multiple parts of a program can hold references to the same piece of memory, which is convenient until two of them try to modify it at the same time. In Rust, every value has exactly one owner at compile time. Temporary access can be lent out — “borrowed,” in the language’s terminology — but the compiler’s borrow checker enforces the rules strictly, refusing to compile any code that violates them. The result is that an entire class of bugs — Microsoft later estimated to account for roughly 70% of security vulnerabilities in C/C++ codebases — simply cannot appear in a valid Rust program.

The name came from rust fungi, which Hoare described as “over-engineered for survival.” The same spirit ran through the design: redundant safety checks, aggressively enforced invariants, a compiler that argues with you until the code is correct. Early Rust programmers found the error messages unusually verbose. They also found that once the program compiled, it tended not to crash.

Hoare stepped back from active development in 2013, handing the project to a community team at Mozilla. Rust 1.0 — the first stable release — shipped in May 2015. In the Stack Overflow Developer Survey, Rust held the title of “most loved” or “most admired” programming language every year from 2016 through 2025, a streak that became something of a running joke in the industry. In late 2022, the Linux kernel — arguably the most conservative large codebase on earth — accepted its first Rust code. By 2025, kernel developers declared the experiment a success.

The argument from 2006 — that you could write fast, safe systems code without choosing between the two — turned out to be correct. The elevator was a symptom; the ownership model was the diagnosis.

Sources

Spot a mistake?

Wrong date, broken citation, a fact that doesn't hold? Tell us. It lands in an inbox a human reads and the post can be pulled or corrected.