2016 年好!我们很高兴地宣布今年的第一个 Rust 版本,1.6。Rust 是一种专注于安全性、速度和并发性的系统编程语言。
和往常一样,您可以从我们网站上的相应页面安装 Rust 1.6,并查看 GitHub 上1.6 的详细发布说明。此版本中合并了大约 1100 个补丁。
1.6 稳定版的新特性
此版本包含许多小的改进、一个主要功能以及对 Crates.io 的更改。
libcore 稳定化
1.6 中最大的新功能是 libcore
现在是稳定的!Rust 的标准库是分层的:有一个小的核心库 libcore
,以及构建在其之上的完整标准库 libstd
。libcore
是完全平台无关的,并且只需要定义少量的外部符号。Rust 的 libstd
构建在 libcore
之上,增加了对内存分配、I/O 和并发的支持。在嵌入式空间中使用 Rust 的应用程序,以及那些编写操作系统的应用程序,通常会避开 libstd
,只使用 libcore
。
libcore
的稳定是朝着能够使用稳定的 Rust 编写最低级别的软件迈出的重要一步。但是,未来仍有工作要做。这将允许围绕 libcore
开发一个库生态系统,但应用程序尚未得到完全支持。预计在未来的版本说明中听到更多相关信息。
库的稳定化
大约 30 个库函数和方法在 1.6 中是稳定的。值得注意的改进包括
集合上的 drain()
系列函数。这些方法允许您将元素从集合中移出,同时允许它们保留其后备内存,从而减少某些情况下的分配。
许多用于在标准库类型之间进行转换的 From
实现,主要是在各种整数和浮点类型之间。
最后,是 Vec::extend_from_slice()
,之前称为 push_all()
。此方法的实现速度明显快于更通用的 extend()
。
有关更多信息,请参阅详细的发布说明。
Crates.io 不允许使用通配符
如果您在 Crates.io 上维护一个 crate,您可能已经看到一个警告:新上传的 crates 不再允许在描述其依赖项时使用通配符。换句话说,这是不允许的
[dependencies]
regex = "*"
相反,您必须实际指定特定版本或一系列版本,使用 semver
crate 的各种选项之一:^
、~
或 =
。
通配符依赖项意味着您可以使用依赖项的任何可能版本。这极不可能成立,并会在生态系统中造成不必要的破坏。我们已经将此更改作为警告宣传了一段时间;现在是时候将其转化为错误了。
1.6 的贡献者
我们有 132 个人为 1.6 做出了贡献。非常感谢你们!
- Aaron Turon
- Adam Badawy
- Aleksey Kladov
- Alexander Bulaev
- Alex Burka
- Alex Crichton
- Alex Gaynor
- Alexis Beingessner
- Amanieu d'Antras
- Amit Saha
- Andrea Canciani
- Andrew Paseltiner
- androm3da
- angelsl
- Angus Lees
- Antti Keränen
- arcnmx
- Ariel Ben-Yehuda
- Ashkan Kiani
- Barosl Lee
- Benjamin Herr
- Ben Striegel
- Bhargav Patel
- Björn Steinbrink
- Boris Egorov
- bors
- Brian Anderson
- Bruno Tavares
- Bryce Van Dyk
- Cameron Sun
- Christopher Sumnicht
- Cole Reynolds
- corentih
- Daniel Campbell
- Daniel Keep
- Daniel Rollins
- Daniel Trebbien
- Danilo Bargen
- Devon Hollowood
- Doug Goldstein
- Dylan McKay
- ebadf
- Eli Friedman
- Eric Findlay
- Erik Davidson
- Felix S. Klock II
- Florian Hahn
- Florian Hartwig
- Gleb Kozyrev
- Guillaume Gomez
- Huon Wilson
- Igor Shuvalov
- Ivan Ivaschenko
- Ivan Kozik
- Ivan Stankovic
- Jack Fransham
- Jake Goulding
- Jake Worth
- James Miller
- Jan Likar
- Jean Maillard
- Jeffrey Seyfried
- Jethro Beekman
- John Kåre Alsaker
- John Talling
- Jonas Schievink
- Jonathan S
- Jose Narvaez
- Josh Austin
- Josh Stone
- Joshua Holmer
- JP Sugarbroad
- jrburke
- Kevin Butler
- Kevin Yeh
- Kohei Hasegawa
- Kyle Mayes
- Lee Jeffery
- Manish Goregaokar
- Marcell Pardavi
- Markus Unterwaditzer
- Martin Pool
- Marvin Löbel
- Matt Brubeck
- Matthias Bussonnier
- Matthias Kauer
- mdinger
- Michael Layzell
- Michael Neumann
- Michael Sproul
- Michael Woerister
- Mihaly Barasz
- Mika Attila
- mitaa
- Ms2ger
- Nicholas Mazzuca
- Nick Cameron
- Niko Matsakis
- Ole Krüger
- Oliver Middleton
- Oliver Schneider
- Ori Avtalion
- Paul A. Jungwirth
- Peter Atashian
- Philipp Matthias Schäfer
- pierzchalski
- Ravi Shankar
- Ricardo Martins
- Ricardo Signes
- Richard Diamond
- Rizky Luthfianto
- Ryan Scheel
- Scott Olson
- Sean Griffin
- Sebastian Hahn
- Sébastien Marie
- Seo Sanghyeon
- Simonas Kazlauskas
- Simon Sapin
- Stepan Koltsov
- Steve Klabnik
- Steven Fackler
- Tamir Duberstein
- Tobias Bucher
- Toby Scrace
- Tshepang Lekhonkhobe
- Ulrik Sverdrup
- Vadim Chugunov
- Vadim Petrochenkov
- William Throwe
- xd1le
- Xmasreturns