Rust 1.6 发布

2016年1月21日 · Rust 核心团队

2016 年好!我们很高兴地宣布今年的第一个 Rust 版本,1.6。Rust 是一种专注于安全性、速度和并发性的系统编程语言。

和往常一样,您可以从我们网站上的相应页面安装 Rust 1.6,并查看 GitHub 上1.6 的详细发布说明。此版本中合并了大约 1100 个补丁。

1.6 稳定版的新特性

此版本包含许多小的改进、一个主要功能以及对 Crates.io 的更改。

libcore 稳定化

1.6 中最大的新功能是 libcore 现在是稳定的!Rust 的标准库是分层的:有一个小的核心库 libcore,以及构建在其之上的完整标准库 libstdlibcore 是完全平台无关的,并且只需要定义少量的外部符号。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