今天,我们非常自豪地宣布 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
らいどっと