宣布 Rust 1.6

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

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

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

1.6 稳定版中的内容

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

libcore 稳定化

1.6 中最大的新功能是libcore 现在稳定了!Rust 的标准库是两层的:有一个小的核心库 libcore,以及在其之上构建的完整标准库 libstdlibcore 完全与平台无关,只需要定义少量外部符号。Rust 的 libstdlibcore 之上构建,增加了对内存分配、I/O 和并发的支持。在嵌入式空间中使用 Rust 的应用程序以及编写操作系统的应用程序通常会避开 libstd,只使用 libcore

libcore 的稳定化是使用稳定 Rust 编写最低级别软件的重要一步。然而,未来仍有工作要做。这将允许围绕 libcore 开发一个库生态系统,但应用程序尚未完全支持。预计在未来的发布说明中将听到更多关于此的信息。

库稳定化

1.6 中大约 30 个库函数和方法现在是稳定的。值得注意的改进包括

集合上的 drain() 函数族。这些方法允许您将元素从集合中移出,同时允许它们保留其支持内存,在某些情况下减少分配。

许多用于在标准库类型之间进行转换的 From 实现,主要是在各种整数和浮点数类型之间。

最后,Vec::extend_from_slice(),以前称为 push_all()。此方法的实现速度明显快于更通用的 extend()

有关更多信息,请参阅详细的发布说明

Crates.io 不允许通配符

如果您在Crates.io 上维护一个 crate,您可能已经看到过一个警告:新上传的 crate 不再允许在描述其依赖项时使用通配符。换句话说,这将不被允许

[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