今天标志着 Rust 1.2 稳定版和 1.3 测试版发布周期的完成!请继续阅读亮点,或查看发布说明以了解更多详细信息。
1.2 稳定版的新特性
正如我们之前宣布的那样,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
标志。可以通过将-C codegen-units=N
传递给rustc
来激活它,其中N
是所需的线程数。
Cargo 的性能也得到了显著提高
-
对于大型项目,不需要重新编译(“空操作构建”)的构建速度要快得多:对于 Servo,构建时间从 5 秒缩短到 0.5 秒。
-
Cargo 现在支持跨多个包缓存依赖项的共享目标目录,这可以显著减少复杂项目的构建时间。
1.2 版本还引入了对 MSVC (Microsoft Visual C) 工具链的支持,而不是 GNU 变体。结果是,Rust 代码现在可以直接链接到使用本机 Windows 工具链构建的代码。编译器在 MSVC 上进行引导,我们有初步的每日构建版本,并且我们正在针对 MSVC 测试所有 rust-lang crate。展开支持尚不可用(进程在 panic 时中止),但正在努力实现。
在语言方面,Rust 1.2 标志着动态大小类型 (DST) 工作的完成,允许像 Rc
这样的智能指针无缝地应用于数组和 trait 对象,因此 Rc<[T]>
是完全可用的。此最终增强适用于标准库中的所有智能指针。对外部智能指针类型的支持在每日构建版本中可用,并且将很快稳定。
1.3 测试版的新特性
在 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 方面,我们已经实现了对lint 限制的支持,如早期 RFC 所指定的那样。其理念是,您的依赖项中的 lint 不应影响您干净编译的能力,这反过来使得在生态系统中调整 lint 的工作方式更容易,而不会造成不必要的麻烦。
1.2 的贡献者
1.2 稳定版发布代表了 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