Rust 1.4 发布

2015年10月29日 · Rust 核心团队

嘟嘟!列车一直在前进,今天,我们很高兴地宣布 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 已经实现了此功能,最著名的是 crossbeamscoped_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