发布 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 版本。

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