Rust 团队很高兴宣布 Rust 的最新版本 1.8 发布。Rust 是一门专注于安全、速度和并发性的系统编程语言。
和往常一样,你可以从我们网站的相应页面安装 Rust 1.8,并在 GitHub 上查看 1.8 的详细发布说明。此版本包含了大约 1400 个补丁。
1.8 稳定版的新特性
Rust 1.8 中有两个新特性,此外还有对 Windows 用户来说是个好消息!另外,将我们基于 make 的构建系统替换为基于 Cargo 的构建系统的工作正在进行中。
第一个特性是,各种“运算符等号”运算符,例如 += 和 -=,现在可以通过各种 trait 进行重载。这项更改已在 RFC 953 中被接受,示例如下:
use AddAssign;
这将打印出 Count { value: 6 }。与其他运算符 trait 一样,关联类型也允许您在运算符的每一侧使用不同的类型。更多详细信息请参阅 RFC。
第二个特性非常小,来自 RFC 218。在 Rust 1.8 之前,没有字段的 struct 不能使用大括号:
; // works
// error
第二种形式不再是错误。最初不允许这种形式是为了与其他空声明保持一致,并避免解析歧义。然而,在 Rust 1.0 之后,这种歧义就不存在了。此外,宏作者也因为需要特殊处理而增加了复杂性。最后,活跃的开发者有时需要在结构体的空版本和非空版本之间切换,这额外的改动和差异并不理想。
在 Windows 方面,32 位 MSVC 构建 现在实现了 unwinding。这使得 i686-pc-windows-msvc 成为 Tier 1 平台。
最后,我们使用 make 构建 Rust 已经很长时间了。然而,我们已经有一个出色的工具来构建 Rust 程序:Cargo。在 Rust 1.8 中,初步支持落地了一个用 Rust 编写的、基于 Cargo 的新构建系统。它尚未成为默认选项,还有很多工作要做。一旦完全完成,我们将在发布说明中详细讨论此事;目前,请阅读 GitHub issue 了解更多细节。
标准库稳定化
大约有 20 个标准库函数和方法在 1.8 中稳定了。主要有三组变化:与 UTF-16 相关的字符串方法、各种与时间相关的 API,以及语言部分提到的实现运算符重载所需的各种 trait。
更多详细信息请参阅详细发布说明。
Cargo 特性
Cargo 有以下几项更新:
cargo init可用于在当前工作目录中初始化一个 Cargo 项目,而不是像cargo new那样创建一个新的子目录。cargo metadata是另一个用于获取项目元数据的新子命令。.cargo/config现在新增了-v和--color的配置项- Cargo 的目标特定依赖项功能得到了增强。
更多详细信息请参阅详细发布说明。
1.8 的贡献者
共有 126 位贡献者为 1.8 版本做出了贡献。非常感谢大家!
- Aaron Turon
- Abhishek Chanda
- Adolfo Ochagavía
- Aidan Hobson Sayers
- Alan Somers
- Alejandro Wainzinger
- Aleksey Kladov
- Alex Burka
- Alex Crichton
- Amanieu d'Antras
- Andrea Canciani
- Andreas Linz
- Andrew Cantino
- Andrew Horton
- Andrew Paseltiner
- Andrey Cherkashin
- Angus Lees
- arcnmx
- Ariel Ben-Yehuda
- ashleysommer
- Benjamin Herr
- Валерий Лашманов
- Björn Steinbrink
- bors
- Brian Anderson
- Brian Bowman
- Christian Wesselhoeft
- Christopher Serr
- Corey Farwell
- Craig M. Brandenburg
- Cyryl Płotnicki-Chudyk
- Daniel J Rollins
- Dave Huseby
- David AO Lozano
- David Henningsson
- Devon Hollowood
- Dirk Gadsden
- Doug Goldstein
- Eduard Burtescu
- Eduard-Mihai Burtescu
- Eli Friedman
- Emanuel Czirai
- Erick Tryzelaar
- Evan
- Felix S. Klock II
- Florian Berger
- Geoff Catlin
- ggomez
- gohyda
- Gökhan Karabulut
- Guillaume Gomez
- ituxbag
- James Miller
- Jeffrey Seyfried
- John Talling
- Jonas Schievink
- Jonathan S
- Jorge Aparicio
- Joshua Holmer
- JP Sugarbroad
- Kai Noda
- Kamal Marhubi
- Katze
- Kevin Brothaler
- Kevin Butler
- Manish Goregaokar
- Markus Westerlind
- Marvin Löbel
- Masood Malekghassemi
- Matt Brubeck
- Michael Huynh
- Michael Neumann
- Michael Woerister
- mitaa
- Ms2ger
- Nathan Kleyn
- nicholasf
- Nick Cameron
- Niko Matsakis
- Noah
- NODA, Kai
- Novotnik, Petr
- Oliver Middleton
- Oliver Schneider
- petevine
- Philipp Oppermann
- pierzchalski
- Piotr Czarnecki
- pravic
- Pyfisch
- Richo Healey
- Ruud van Asseldonk
- Scott Olson
- Sean McArthur
- Sebastian Wicki
- Sébastien Marie
- Seo Sanghyeon
- Simonas Kazlauskas
- Simon Sapin
- srinivasreddy
- Steve Klabnik
- Steven Allen
- Steven Fackler
- Stu Black
- Tang Chenglong
- Ted Horst
- Ticki
- tiehuis
- Tim Montague
- Tim Neumann
- Timon Van Overveldt
- Tobias Bucher
- Tobias Müller
- Todd Lucas
- Tom Tromey
- Tshepang Lekhonkhobe
- ubsan
- Ulrik Sverdrup
- Vadim Petrochenkov
- vagrant
- Valentin Lorentz
- Varun Vats
- vegai
- vlastachu
- Wangshan Lu
- York Xiang