Today we are very proud to announce the 1.0 release of Rust, a new programming language aiming to make it easier to build reliable, efficient systems. Rust combines low-level control over performance with high-level convenience and safety guarantees. Better yet, it achieves these goals without requiring a garbage collector or runtime, making it possible to use Rust libraries as a “drop-in replacement” for C. If you’d like to experiment with Rust, the “Getting Started” section of the Rust book is your best bet (if you prefer to use an e-reader, Pascal Hertleif maintains unofficial e-book versions as well).

What makes Rust different from other languages is its type system, which represents a refinement and codification of “best practices” that have been hammered out by generations of C and C++ programmers. As such, Rust has something to offer for both experienced systems programmers and newcomers alike: experienced programmers will find they save time they would have spent debugging, whereas newcomers can write low-level code without worrying about minor mistakes leading to mysterious crashes.

What does it mean for Rust to be 1.0?

The current Rust language is the result of a lot of iteration and experimentation. The process has worked out well for us: Rust today is both simpler and more powerful than we originally thought would be possible. But all that experimentation also made it difficult to maintain projects written in Rust, since the language and standard library were constantly changing.

The 1.0 release marks the end of that churn. This release is the official beginning of our commitment to stability, and as such it offers a firm foundation for building applications and libraries. From this point forward, breaking changes are largely out of scope (some minor caveats apply, such as compiler bugs).

That said, releasing 1.0 doesn’t mean that the Rust language is “done”. We have many improvements in store. In fact, the Nightly builds of Rust already demonstrate improvements to compile times (with more to come) and includes work on new APIs and language features, like std::fs and associated constants.

To help ensure that compiler and language improvements make their way out into the ecosystem at large as quickly as possible, we’ve adopted a train-based release model. This means that we’ll be issuing regular releases every six weeks, just like the Firefox and Chrome web browsers. To kick off that process, we are also releasing Rust 1.1 beta today, simultaneously with Rust 1.0.

Cargo and crates.io

Building a real project is about more than just writing code – it’s also about managing dependencies. Cargo, the Rust package manager and build system, is designed to make this easy. Using Cargo, downloading and installing new libraries is as simple as adding one line to your manifest.

Of course, to use a dependency, you first have to find it. This is where crates.io comes in – crates.io is a central package repository for Rust code. It makes it easy to search for other people’s packages or to publish your own.

Since we announced cargo and crates.io approximately six months ago, the number of packages has been growing steadily. Nonetheless, it’s still early days, and there are still lots of great packages yet to be written. If you’re interested in building a library that will take the Rust world by storm, there’s no time like the present!

Open Source and Open Governance

Rust has been an open-source project from the start. Over the last few years, we’ve been constantly looking for ways to make our governance more open and community driven. Since we introduced the RFC process a little over a year ago, all major decisions about Rust are written up and discussed in the open in the form of an RFC. Recently, we adopted a new governance model, which establishes a set of subteams, each responsible for RFCs in one particular area. If you’d like help shape the future of Rust, we encourage you to get involved, either by uploading libraries to crates.io, commenting on RFCs, or writing code for Rust itself.

We’d like to give a special thank you to the following people, each of whom contributed changes since our previous release (the complete list of contributors is here):

  • Aaron Gallagher
  • Aaron Turon
  • Abhishek Chanda
  • Adolfo Ochagavía
  • Alex Burka
  • Alex Crichton
  • Alex Quach
  • Alexander Polakov
  • Andrea Canciani
  • Andreas Martens
  • Andreas Tolfsen
  • Andrei Oprea
  • Andrew Paseltiner
  • Andrew Seidl
  • Andrew Straw
  • Andrzej Janik
  • Aram Visser
  • Ariel Ben-Yehuda
  • Augusto Hack
  • Avdi Grimm
  • Barosl Lee
  • Ben Ashford
  • Ben Gesoff
  • Björn Steinbrink
  • Brad King
  • Brendan Graetz
  • Brett Cannon
  • Brian Anderson
  • Brian Campbell
  • Carlos Galarza
  • Carol (Nichols || Goulding)
  • Carol Nichols
  • Chris Morgan
  • Chris Wong
  • Christopher Chambers
  • Clark Gaebel
  • Cole Reynolds
  • Colin Walters
  • Conrad Kleinespel
  • Corey Farwell
  • Dan Callahan
  • Dave Huseby
  • David Reid
  • Diggory Hardy
  • Dominic van Berkel
  • Dominick Allen
  • Don Petersen
  • Dzmitry Malyshau
  • Earl St Sauver
  • Eduard Burtescu
  • Erick Tryzelaar
  • Felix S. Klock II
  • Florian Hahn
  • Florian Hartwig
  • Franziska Hinkelmann
  • FuGangqiang
  • Garming Sam
  • Geoffrey Thomas
  • Geoffry Song
  • Gleb Kozyrev
  • Graydon Hoare
  • Guillaume Gomez
  • Hajime Morrita
  • Hech
  • Heejong Ahn
  • Hika Hibariya
  • Huon Wilson
  • Igor Strebezhev
  • Isaac Ge
  • J Bailey
  • Jake Goulding
  • James Miller
  • James Perry
  • Jan Andersson
  • Jan Bujak
  • Jan-Erik Rediger
  • Jannis Redmann
  • Jason Yeo
  • Johann
  • Johann Hofmann
  • Johannes Oertel
  • John Gallagher
  • John Van Enk
  • Jonathan S
  • Jordan Humphreys
  • Joseph Crail
  • Josh Triplett
  • Kang Seonghoon
  • Keegan McAllister
  • Kelvin Ly
  • Kevin Ballard
  • Kevin Butler
  • Kevin Mehall
  • Krzysztof Drewniak
  • Lee Aronson
  • Lee Jeffery
  • Liam Monahan
  • Liigo Zhuang
  • Luke Gallagher
  • Luqman Aden
  • Manish Goregaokar
  • Manuel Hoffmann
  • Marin Atanasov Nikolov
  • Mark Mossberg
  • Marvin Löbel
  • Mathieu Rochette
  • Mathijs van de Nes
  • Matt Brubeck
  • Michael Alexander
  • Michael Macias
  • Michael Park
  • Michael Rosenberg
  • Michael Sproul
  • Michael Woerister
  • Michael Wu
  • Michał Czardybon
  • Mickaël Salaün
  • Mike Boutin
  • Mike Sampson
  • Ms2ger
  • Nelo Onyiah
  • Nicholas
  • Nicholas Mazzuca
  • Nick Cameron
  • Nick Hamann
  • Nick Platt
  • Niko Matsakis
  • Oak
  • Oliver Schneider
  • P1start
  • Pascal Hertleif
  • Paul Banks
  • Paul Faria
  • Paul Quint
  • Pete Hunt
  • Peter Marheine
  • Phil Dawes
  • Philip Munksgaard
  • Piotr Czarnecki
  • Piotr Szotkowski
  • Poga Po
  • Przemysław Wesołek
  • Ralph Giles
  • Raphael Speyer
  • Remi Rampin
  • Ricardo Martins
  • Richo Healey
  • Rob Young
  • Robin Kruppe
  • Robin Stocker
  • Rory O’Kane
  • Ruud van Asseldonk
  • Ryan Prichard
  • Scott Olson
  • Sean Bowe
  • Sean McArthur
  • Sean Patrick Santos
  • Seo Sanghyeon
  • Shmuale Mark
  • Simon Kern
  • Simon Sapin
  • Simonas Kazlauskas
  • Sindre Johansen
  • Skyler
  • Steve Klabnik
  • Steven Allen
  • Swaroop C H
  • Sébastien Marie
  • Tamir Duberstein
  • Tero Hänninen
  • Theo Belaire
  • Theo Belaire
  • Thiago Carvalho
  • Thomas Jespersen
  • Tibor Benke
  • Tim Cuthbertson
  • Tincan
  • Ting-Yu Lin
  • Tobias Bucher
  • Toni Cárdenas
  • Tshepang Lekhonkhobe
  • Ulrik Sverdrup
  • Vadim Chugunov
  • Vadim Petrochenkov
  • Valerii Hiora
  • Wangshan Lu
  • Wei-Ming Yang
  • Will
  • Will Hipschman
  • Wojciech Ogrodowczyk
  • Xue Fuqiao
  • Xuefeng Wu
  • York Xiang
  • Young Wu
  • bcoopers
  • critiqjo
  • diwic
  • fenduru
  • gareins
  • github-monoculture
  • inrustwetrust
  • jooert
  • kgv
  • klutzy
  • kwantam
  • leunggamciu
  • mdinger
  • nwin
  • pez
  • robertfoss
  • rundrop1
  • sinkuu
  • tynopex
  • Łukasz Niemier
  • らいどっと