宣布 Rust 1.0

2015 年 5 月 15 日 · Rust 核心团队

今天,我们非常自豪地宣布 Rust 1.0 版本 发布,这是一种新的编程语言,旨在简化可靠、高效系统的构建。Rust 将对性能的低级控制与高级便利性和安全保证相结合。更妙的是,它在不依赖垃圾收集器或运行时的情况下实现了这些目标,使其能够 将 Rust 库用作 C 的“直接替换”。如果您想尝试使用 Rust,Rust 书籍的“入门”部分 是您的最佳选择(如果您更喜欢使用电子阅读器,Pascal Hertleif 也维护着 非官方的电子书版本)。

使 Rust 与其他语言不同的因素是其类型系统,它代表了对“最佳实践”的改进和编码,这些最佳实践是由几代 C 和 C++ 程序员锤炼出来的。因此,Rust 对经验丰富的系统程序员和新手都有吸引力:经验丰富的程序员会发现他们节省了本应花费在调试上的时间,而新手则可以编写低级代码,而无需担心小错误会导致神秘的崩溃。

Rust 1.0 版本意味着什么?

当前的 Rust 语言是大量迭代和实验的结果。这个过程对我们来说非常有效:今天的 Rust 比我们最初认为可能的更简单、更强大。但是,所有这些实验也使得维护用 Rust 编写的项目变得困难,因为语言和标准库一直在不断变化。

1.0 版本标志着这种动荡的结束。此版本是我们 对稳定性承诺 的正式开始,因此它为构建应用程序和库提供了坚实的基础。从现在开始,重大更改基本上不在范围之内(一些 次要 注意事项 适用,例如编译器错误)。

也就是说,发布 1.0 版本并不意味着 Rust 语言已经“完成”。我们还有很多 改进计划。事实上,Rust 的 Nightly 版本已经展示了 编译 时间 的改进(还有更多改进即将推出),并且包括对新 API 和语言功能的工作,例如 std::fs关联常量

为了帮助确保编译器和语言改进尽快地进入整个生态系统,我们采用了 基于火车 的发布模型。这意味着我们将像 Firefox 和 Chrome 网络浏览器一样,每六周发布一次定期版本。为了启动这个过程,我们今天还发布了 Rust 1.1 beta 版本,与 Rust 1.0 版本同时发布。

Cargo 和 crates.io

构建一个真正的项目不仅仅是编写代码——它还包括管理依赖项。 Cargo 是 Rust 的包管理器和构建系统,旨在简化此过程。使用 Cargo,下载和安装新库就像在您的清单中添加一行代码一样简单。

当然,要使用依赖项,您首先需要找到它。这就是 crates.io 的用武之地——crates.io 是 Rust 代码的中央包存储库。它使搜索其他人的包或发布您自己的包变得容易。

自从我们 宣布 cargo 和 crates.io 大约六个月以来,包的数量一直在稳步增长。尽管如此,这仍然是早期阶段,还有很多很棒的包有待编写。如果您有兴趣构建一个将席卷 Rust 世界的库,现在正是时候!

开源和开放治理

Rust 从一开始就是一个开源项目。在过去的几年里,我们一直在不断寻找方法来使我们的治理更加开放和社区驱动。自从我们一年前引入 RFC 过程 以来,所有关于 Rust 的重大决定都以 RFC 的形式公开撰写和讨论。最近,我们采用了一个 新的治理模型,该模型建立了一组子团队,每个子团队负责一个特定领域的 RFC。如果您想帮助塑造 Rust 的未来,我们鼓励您参与进来,无论是将库上传到 crates.io、评论 RFC 还是 为 Rust 本身编写代码

我们要特别感谢以下人员,他们每个人都在我们之前的版本(完整的贡献者列表 在这里)之后做出了贡献。

  • 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
  • らいどっと