嘟嘟!列车一直在前进,今天,我们很高兴地宣布 Rust 1.4 的发布,这是最新的稳定版本。Rust 是一种专注于安全性、速度和并发性的系统编程语言。
与往常一样,您可以从我们网站上的相应页面安装 Rust 1.4,并查看 GitHub 上的1.4 的详细发行说明。此版本中大约有 1200 个补丁被合并。
1.4 稳定版中的新特性
1.4 的故事主要是关于改进和稳定化,而不是新功能。
然而,有一个特殊的更改是对语言的修复,它启用了一个新功能:RFC 1214,“澄清(并改进)投影和良构性的规则”。虽然这是一个非常技术性的标题,但简而言之,我们在类型系统的某些方面的定义和实现中发现了一些弱点。此 RFC 修复了这些问题。鉴于对此类类型系统的更改可能会导致回归,但此类修复对于健全性很重要,Rust 1.4 将警告任何违反新规则的代码,但仍然会编译。这些警告将在 Rust 1.5 中变成错误。然而,鉴于火车模型,社区在 1.4 处于测试阶段时有时间处理这些更改,并且我们知道的少量 crates 已经修复。
这些健全性修复使“作用域线程”功能的回归成为可能,您可以在其中创建以安全方式引用存储在堆栈上的数据的线程。一些 crates 已经实现了此功能,最著名的是 crossbeam 和 scoped_threadpool。请参阅它们的文档以获取更多信息。
RFC 1212 也在此版本中,它更改了所有处理读取“行”的函数,将 \n
和 \r\n
都视为有效的行尾。在 RFC 过程中,这被确定为错误修复,但我们在此处提及是为了提高意识。仅处理 \n
的旧行为会导致令人惊讶的行为,您的 crate 在 Linux 和 Mac OS X 上运行良好,但在 Windows 上会失败。此修复使这些函数更符合预期 (😉)。
Rust 1.4 标志着我们对 Windows 支持的升级:现在支持并推荐用于通用用途的针对 64 位 MSVC ABI 和链接器(而不是 GNU)的 Windows 构建,并且将首次出现在下载页面上。感谢所有帮助我们解决自支持最初在 Rust 1.2 中落地以来出现的问题的人。
以下是库更改的摘要
- 48 个 API 已稳定。
- 八个 API 已被弃用。
- 两个 API 的速度更快。
- 超过十种不同类型实现了新的 trait。
有关详细信息,请参阅发行说明。
编译器不再使用 morestack
,这是很久以前遗留下来的实现细节。我们现在改用保护页和堆栈探测,尽管堆栈探测目前仅在 Windows 上实现。
最后,一个主要的 Cargo 改进:cargo update
现在将打印有关其正在更改的内容的额外信息。例如
$ cargo update
Updating registry `https://github.com/rust-lang/crates.io-index`
Updating libc v0.1.8 -> v0.1.10
Updating memchr v0.1.3 -> v0.1.5
Updating num v0.1.26 -> v0.1.27
Updating rand v0.3.9 -> v0.3.10
Updating rustc-serialize v0.3.15 -> v0.3.16
以前,它会静默地完成这项工作。
1.4 的贡献者
Rust 是一个社区驱动的项目,我们非常感谢为 1.4 的实现做出贡献的 127 位贡献者的工作。谢谢!
- Adam Crume
- Aidan Hobson Sayers
- Aleksey Kladov
- Alex Burka
- Alex Crichton
- Alex Ozdemir
- AlexDenisov
- Alexis Beingessner
- Alisdair Owens
- Andre Bogus
- Andrea Canciani
- Andrew Paseltiner
- Ariel Ben-Yehuda
- Artem Shitov
- Barosl Lee
- benshu
- Björn Steinbrink
- bors
- Brian Anderson
- Cesar Eduardo Barros
- Chris Krycho
- Chris Morgan
- Chris Nixon
- Chris Wong
- christopherdumas
- Cody P Schafer
- Corey Farwell
- Daan Rijks
- Dave Huseby
- diaphore
- Diggory Blake
- Dong Zhou
- Dylan McKay
- Elaine "See More" Nemo
- Eli Friedman
- Eljay
- Erick Tryzelaar
- Felix S. Klock II
- Garming Sam
- Georg Brandl
- Gleb Kozyrev
- Guillaume Gomez
- Hunan Rostomyan
- Huon Wilson
- Ivan Jager
- Jack Wilson
- Jake Goulding
- Jake Kerr
- Jake Shadle
- James Miller
- Jan Likar
- Jared Roesch
- Jeehoon Kang
- John Thomas
- Jonas Schievink
- Jørn Lode
- Jose Narvaez
- jotomicron
- Kang Seonghoon
- Kornel Lesiński
- Lee Jeffery
- Leif Arne Storset
- Lennart Kudling
- llogiq
- Manish Goregaokar
- Marc-Antoine Perennou
- Marcus Klaas
- Marko Lalic
- Martin Wernstål
- Matěj Grabovský
- Matej Lach
- Matt Brubeck
- Matt Friedman
- Michael Choate
- Michael Layzell
- Michael Macias
- Michael McConville
- Michael Neumann
- Mickaël Salaün
- midinastasurazz
- Mike Marcacci
- mitaa
- Ms2ger
- Murarth
- Nathan Kleyn
- Nicholas Seckar
- Nick Cameron
- Nick Howell
- Niko Matsakis
- Nikolay Kondratyev
- Niranjan Padmanabhan
- Overmind JIANG
- Pascal Hertleif
- Peter Reid
- Remi Rampin
- Richard Diamond
- Robin Kruppe
- Ruby
- Ryo Munakata
- Scott Olson
- Sean Bowe
- Sean McArthur
- Sébastien Marie
- Simon Mazur
- Simon Sapin
- Simonas Kazlauskas
- Stepan Koltsov
- Steve Klabnik
- Steven Fackler
- Sylvestre Ledru
- Taliesin Beynon
- Tamir Duberstein
- Tim Cuthbertson
- Tim JIANG
- Tim Neumann
- Tobias Bucher
- Tshepang Lekhonkhobe
- Ulrik Sverdrup
- Vadim Chugunov
- Vadim Petrochenkov
- Viacheslav Chimishuk
- Victor Berger
- Vincent Bernat
- Vladimir Rutsky
- w00ns
- William Throwe
- Without Boats
- Xiao Chuan Yu