T1
Rust 1.0 Released
Metadata
- Date
- Decade
- 2010s
- Tier
- T1
- Timelines
- A History of Programming Languages
- Sources
- 07
- Connections
- 03
Rust is a systems programming language that aims to provide memory safety without relying on garbage collection or a runtime. Graydon Hoare began it as a spare-time project in 2006, and Mozilla backed its development from late 2009. The first stable release, Rust 1.0, was published by the Rust Core Team on 15 May 2015. The 1.0 announcement introduced Rust as "a new programming language aiming to make it easier to build reliable, efficient systems", combining low-level control over performance with high-level convenience and safety guarantees.
Most people who look Rust up meet one word early: ownership. This article traces where Rust came from, what 1.0 promised, and why ownership sits at the centre of the design.
| When | What happened |
|---|---|
| 2006 | Graydon Hoare starts Rust as a personal project |
| Late 2009 | Mozilla starts paying Hoare to work on it |
| July 2010 | Hoare introduces Rust at the Mozilla Annual Summit |
| Late 2014 | The Cargo package manager and the crates.io registry are announced |
| 15 May 2015 | Rust 1.0 released; the 1.1 beta ships the same day |
| 8 February 2021 | The independent, non-profit Rust Foundation launches |
| December 2022 | Linux 6.1 takes in initial Rust support |
A spare-time project, 2006–2009
In 2016 Hoare published Rust's pre-publication history on GitHub as "rust-prehistory". As he describes it, Rust was a personal project from 2006 to 2009 and, after late 2009, a Mozilla project conducted in private. The uptick in work in mid-to-late 2009, he writes, is when Mozilla started funding him on the clock.
He asks readers to take the archive in a particular light: not a grand plan being executed, but years of puttering in circles while he slowly convinced himself there was something there. He had spent years criticising other languages and making notes on how one might be done "right" or "differently"; the archive records the gradual coaxing into belief that he could make something that ran.
2010: the Mozilla Annual Summit
Hoare introduced Rust at the Mozilla Annual Summit in July 2010, in a talk titled "Project Servo". His slides say he had been writing "a compiled, concurrent, safe, systems programming language for the past four and a half years", and that a small group inside Mozilla had become interested over the past year. He was at pains to reassure: Mozilla was not rewriting the browser.
The slides gave two motives. First, C++, which he called "well past expiration date": memory unsafe, with no ownership policies and no concurrency control. Second, most new languages were unsuitable for the niche he cared about, for reasons such as a JVM or CLR tie-in, complex garbage collection combined with pointer-heavy data and poor memory use, or neglect of concurrency. Rust, he said, mostly cribbed from past languages — Mesa, CLU, Erlang, Newsqueak, Limbo and others from the 1970s to the 1990s — collecting lessons already learned rather than inventing new ones.
15 May 2015: Rust 1.0
The 1.0 announcement put Rust's difference down to its type system, which it described as a refinement and codification of the best practices hammered out by generations of C and C++ programmers. Experienced programmers would save time otherwise spent debugging; newcomers could write low-level code without minor mistakes turning into mysterious crashes. And it achieved this without requiring a garbage collector or runtime, so Rust libraries could serve as a "drop-in replacement" for C.
Above all, 1.0 meant the end of churn. Rust had gone through so much iteration that projects written in it were hard to maintain, because the language and standard library kept changing. The announcement called 1.0 "the official beginning of our commitment to stability": from then on, breaking changes were largely out of scope.
| What 1.0 settled | Detail |
|---|---|
| Stability commitment | Breaking changes largely out of scope, with caveats such as compiler bugs |
| Train releases | A new release every six weeks, as with Firefox and Chrome; the 1.1 beta shipped the same day |
| Cargo and crates.io | A package manager that adds a dependency with one line, and a central package registry |
| Open governance | Major decisions written up and debated in public as RFCs, with subteams owning each area |
The announcement closes with a long list of people who had contributed changes since the previous release. Graydon Hoare is among them.
Ownership and borrowing
At the heart of Rust's safety is ownership. The official book, The Rust Programming Language, describes two familiar ways of managing memory: a garbage collector that looks for no-longer-used memory as the program runs, or explicit allocation and freeing by the programmer. "Rust uses a third approach: Memory is managed through a system of ownership with a set of rules that the compiler checks."
| Rule | Content |
|---|---|
| Ownership 1 | Each value has an owner |
| Ownership 2 | There can only be one owner at a time |
| Ownership 3 | When the owner goes out of scope, the value is dropped |
| References 1 | At any time, either one mutable reference or any number of immutable references |
| References 2 | References must always be valid |
The book calls creating a reference borrowing: you can borrow something, but you have to give it back, and you never own it. Keep to the reference rules and data races — several threads changing the same data at once — cannot occur; in the book's words, Rust prevents them "by refusing to compile code with data races". Catching errors at compile time rather than at run time is, together with its type system, what most distinguishes Rust.
After 1.0
Stack Overflow's 2022 developer survey reported Rust "on its seventh year as the most loved language", with 87% of developers saying they wanted to continue using it. On 8 February 2021 the Rust Foundation was launched as an independent non-profit to steward the language and its ecosystem, with AWS, Huawei, Google, Microsoft and Mozilla as founding members. In December 2022 Linux 6.1 took in initial Rust support; that story is told in Rust enters the Linux kernel.
Rust's place among its contemporaries is on the programming-languages timeline. Reading the history of C++, the language Hoare called past its expiration date, shows where his frustration came from.
Questions this page answers
- What is Rust?
- A systems programming language that aims to combine low-level control over performance with high-level safety. The 1.0 announcement highlighted that it needs neither a garbage collector nor a runtime, so Rust libraries can serve as a drop-in replacement for C. Memory is managed through ownership rules that the compiler checks.
- Who created Rust?
- Graydon Hoare started it as a spare-time project in 2006. Mozilla began paying him to work on it in late 2009, and he introduced it at the Mozilla Annual Summit in July 2010. Version 1.0 was released by the Rust Core Team that grew up around the project.
- When was Rust 1.0 released, and what did it change?
- On 15 May 2015. Until then the language and standard library changed constantly; 1.0 began a commitment to stability under which breaking changes are largely out of scope. The project also moved to a release every six weeks, and the 1.1 beta came out the same day.
- What is ownership in Rust?
- It is how Rust manages memory. Each value has exactly one owner at a time, and when the owner goes out of scope the value is dropped. It is a third approach, neither a garbage collector searching for unused memory at run time nor manual freeing by the programmer, and the compiler checks the rules.
Sources
PrimaryAnnouncing Rust 1.0 — The Rust Core Team, May 15, 2015
The 1.0 release, no GC or runtime, the stability commitment, six-week releases and the 1.1 beta, Cargo and crates.io, and the RFC process
Primarygraydon/rust-prehistory — historical archive of Rust pre-publication development, 2006-2009
The 2006–09 personal-project years and Mozilla's funding from late 2009
Rust's first introduction: four and a half years of work, the case against C++, and the older languages it borrowed from
Last updated: