Rust 团队很高兴宣布 Rust 的最新版本 1.8。Rust 是一种系统编程语言,专注于安全、速度和并发。
与往常一样,您可以从我们网站上的相应页面安装 Rust 1.8,并在 GitHub 上查看1.8 的详细发布说明。此版本中包含了大约 1400 个补丁。
1.8 稳定版中的新功能
Rust 1.8 中有两个新功能,以及对 Windows 用户的好消息!此外,我们正在努力用基于 Cargo 的构建系统替换基于 make
的构建系统。
第一个功能是各种“运算符等于”运算符(例如 +=
和 -=
)现在可以通过各种特征进行重载。此更改在RFC 953 中被接受,看起来像这样
use std::ops::AddAssign;
#[derive(Debug)]
struct Count {
value: i32,
}
impl AddAssign for Count {
fn add_assign(&mut self, other: Count) {
self.value += other.value;
}
}
fn main() {
let mut c1 = Count { value: 1 };
let c2 = Count { value: 5 };
c1 += c2;
println!("{:?}", c1);
}
这将打印出 Count { value: 6 }
。与其他运算符特征一样,关联类型也允许您在运算符的两侧使用不同的类型。有关更多详细信息,请参阅 RFC。
第二个功能非常小,来自RFC 218。在 Rust 1.8 之前,没有字段的 struct
没有花括号
struct Foo; // works
struct Bar { } // error
第二种形式不再是错误。最初不允许这样做是为了与其他空声明保持一致,以及解析歧义。但是,这种歧义在 1.0 之后的 Rust 中是不存在的。宏作者看到了额外的复杂性,因为需要特殊情况。最后,进行主动开发的用户有时会在结构体的空版本和非空版本之间切换,而涉及的额外工作和差异并不理想。
在 Windows 方面,32 位 MSVC 构建现在实现了展开。这将 i686-pc-windows-msvc
提升到 Tier 1 平台。
最后,我们使用 make
来构建 Rust 很长时间了。但是,我们已经有一个很棒的工具来构建 Rust 程序:Cargo。在 Rust 1.8 中,初步支持已落地,这是一个用 Rust 编写并基于 Cargo 的新构建系统。它还不是默认的,还有很多工作要做。一旦完全完成,我们将在发布说明中更多地谈论它,现在,请阅读 GitHub 问题以了解更多详细信息。
库稳定化
1.8 中大约有 20 个库函数和方法现在是稳定的。主要有三个方面的变化:与 UTF-16 相关的字符串方法、与时间相关的各种 API 以及语言部分提到的用于运算符重载的各种特征。
查看详细的发布说明以了解更多信息。
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