今天标志着 Rust 1.2 stable 和 1.3 beta 发布周期的完成!请继续阅读重点内容,或查看发布说明了解更多详情。
1.2 stable 有哪些内容?
正如我们先前宣布的那样,Rust 1.2 为编译器带来了两项主要的性能改进
-
对实际编译器性能的全面改进。代表性的 crate 包括 hyper(编译速度提高 1.16 倍)、html5ever(提高 1.62 倍)、regex(提高 1.32 倍)和 rust-encoding(提高 1.35 倍)。你可以在 Nick Cameron 的初步跟踪站点探索一些性能数据,使用日期范围为 2015-05-15 至 2015-06-25。
-
并行代码生成现在可以工作了,在 4 核机器上自举时可将速度提高 33%。并行代码生成对于调试构建特别有用,因为它会阻止一些优化;但它也可以与优化一起使用,作为有效的 `-O1` 标志。可以通过向 `rustc` 传递 `-C codegen-units=N` 来激活,其中 `N` 是所需的线程数。
Cargo 的性能也显著提高了
-
对于大型项目,无需重新编译的构建(“无操作构建”)快得多:对于 Servo,构建时间从 5 秒缩短到 0.5 秒。
-
Cargo 现在支持共享目标目录,可在多个包之间缓存依赖项,从而显著减少复杂项目的构建时间。
1.2 版本还引入了支持对 MSVC(Microsoft Visual C)工具链的支持,与 GNU 变体不同。结果是 Rust 代码现在可以直接链接到使用原生 Windows 工具链构建的代码。编译器在 MSVC 上自举,我们有初步的 nightly 版本,并且正在针对 MSVC 测试所有 rust-lang crate。展开(Unwinding)支持尚不可用(进程在 panic 时中止),但相关工作正在进行中。
在语言方面,Rust 1.2 标志着动态大小类型(DST)工作的完成,允许像 `Rc` 这样的智能指针无缝地应用于数组和 trait 对象,使得 `Rc<[T]>` 可以完全使用。这项最终增强功能适用于标准库中的所有智能指针。对外部智能指针类型的支持在 nightly 版本中可用,并将很快稳定下来。
1.3 beta 有哪些内容?
1.3 周期的最令人兴奋的进展之一是Rustonomicon 的引入,这是一本新书,涵盖“高级和非安全 Rust 编程的黑暗艺术”。虽然这本书仍处于早期阶段,但它已经对 Rust 的一些更微妙的方面提供了不可或缺的覆盖。
1.3 周期也更加注重性能,尽管这里的大部分改进都发生在标准库内
- 子字符串匹配器现在使用更高效的算法。
- 零填充方面有所改进,加快了 `Vec::resize` 和 `Read::read_to_end` 的速度。
- `Read::read_to_end` 的实现针对 `stdin` 和 `File` 进行了专门化,从而带来了额外的速度提升。
- 切片上的 `PartialEq` 实现现在快得多。
我们在 Windows 支持方面也取得了进展,初步支持了针对 Windows XP 的构建。虽然我们不打算将 Windows XP 视为“第一等”平台,但只要避开标准库的某些部分,现在就可以为 XP 构建 Rust 代码了。
在 Cargo 方面,我们已实现了根据先前的 RFC 规定的lint 限制(lint capping)支持。其理念是,依赖项中的 lint 不应影响你干净地编译代码的能力,这反过来使得调整 lint 的工作方式变得更容易,而不会在生态系统中造成不必要的麻烦。
1.2 的贡献者
1.2 stable 版本的发布凝聚了 180 位优秀人士的辛勤工作
- Aaron Turon
- Abhishek Chanda
- Adolfo Ochagavía
- Aidan Hobson Sayers
- Akshay Chiwhane
- Alex Burka
- Alex Crichton
- Alex Stokes
- Alexander Artemenko
- Alexis Beingessner
- Andrea Canciani
- Andrew Foote
- Andrew Kensler
- Andrew Straw
- Ariel Ben-Yehuda
- Austin Hellyer
- Barosl Lee
- Ben Striegel
- Björn Steinbrink
- Brian Anderson
- Brian Campbell
- Brian Leibig
- Brian Quinlan
- Carol (Nichols || Goulding)
- Chris Hellmuth
- Christian Stadelmann
- Chuck Bassett
- Corey Farwell
- Cornel Punga
- Cruz Julian Bishop
- Dave Huseby
- David Campbell
- David Stygstra
- David Voit
- Eduard Bopp
- Eduard Burtescu
- Eli Friedman
- Emilio Cobos Álvarez
- Emily Dunham
- Eric Ye
- Erik Michaels-Ober
- Falco Hirschenberger
- Felix S. Klock II
- FuGangqiang
- Geoffrey Thomas
- Gleb Kozyrev
- Guillaume Gomez
- Gulshan Singh
- Heejong Ahn
- Huachao Huang
- Huon Wilson
- Ivan Ukhov
- Iven Hsu
- Jake Goulding
- Jake Hickey
- James Miller
- Jared Roesch
- Jeremy Schlatter
- Jexell
- Jim Blandy
- Johann Tuffe
- Johannes Hoff
- Johannes Oertel
- John Hodge
- Jonathan Reem
- Joshua Landau
- Kevin Ballard
- Kubilay Kocak
- Lee Jeffery
- Leo Correa
- Liigo Zhuang
- Lorenz
- Luca Bruno
- Luqman Aden
- Manish Goregaokar
- Marcel Müller
- Marcus Klaas
- Marin Atanasov Nikolov
- Markus Westerlind
- Martin Pool
- Marvin Löbel
- Matej Lach
- Mathieu David
- Matt Brubeck
- Matthew Astley
- Max Jacobson
- Maximilian Haack
- Michael Layzell
- Michael Macias
- Michael Rosenberg
- Michael Sproul
- Michael Woerister
- Mihnea Dobrescu-Balaur
- Mikhail Zabaluev
- Mohammed Attia
- Ms2ger
- Murarth
- Mário Feroldi
- Nathan Long
- Nathaniel Theis
- Nick Cameron
- Nick Desaulniers
- Nick Fitzgerald
- Nick Hamann
- Nick Howell
- Niko Matsakis
- Nils Liberg
- OlegTsyba
- Oliver 'ker' Schneider
- Oliver Schneider
- P1start
- Parker Moore
- Pascal Hertleif
- Paul Faria
- Paul Oliver
- Peer Aramillo Irizar
- Peter Atashian
- Peter Elmers
- Philip Munksgaard
- Ralph Giles
- Rein Henrichs
- Ricardo Martins
- Richo Healey
- Ricky Taylor
- Russell Johnston
- Russell McClellan
- Ryan Pendleton
- Ryman
- Rémi Audebert
- Sae-bom Kim
- Sean Collins
- Sean Gillespie
- Sean Patrick Santos
- Seo Sanghyeon
- Simon Sapin
- Simonas Kazlauskas
- Steve Gury
- Steve Klabnik
- Steven Allen
- Steven Fackler
- Steven Walter
- Sébastien Marie
- Tamir Duberstein
- Thomas Karpiniec
- Tim Ringenbach
- Tshepang Lekhonkhobe
- Ulrik Sverdrup
- Vadim Petrochenkov
- Wei-Ming Yang
- Wesley Wiser
- Wilfred Hughes
- Will Andrews
- Will Engler
- Xuefeng Wu
- XuefengWu
- Yongqian Li
- York Xiang
- Z1
- ben fleis
- benaryorg
- bluss
- bors
- clatour
- diwic
- dmgawel
- econoplas
- frankamp
- funkill
- inrustwetrust
- joliv
- klutzy
- marcell
- mdinger
- olombard
- peferron
- ray glover
- saml
- simplex
- sumito3478
- webmobster