宣布 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 发展一个库生态系统,但应用程序尚未得到完全支持。请在未来的发布说明中期待更多相关内容。

库稳定化

在 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