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