今天标志着 完成 Rust 1.2 稳定版和 1.3 测试版发布周期!继续阅读以了解亮点,或查看 发布说明 以获取更多详细信息。
1.2 稳定版中的内容
正如我们 之前宣布 的那样,Rust 1.2 带来了两个主要性能改进,用于编译器
-
全面改进 实用编译器性能。代表性板条箱包括 hyper(编译速度提高 1.16 倍)、html5ever(速度提高 1.62 倍)、regex(速度提高 1.32 倍)和 rust-encoding(速度提高 1.35 倍)。您可以在 Nick Cameron 的 初步跟踪网站 上探索一些性能数据,使用 2015 年 5 月 15 日至 2015 年 6 月 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 板条箱。展开支持尚不可用(进程在恐慌时中止),但正在努力实现它。
在语言方面,Rust 1.2 标志着 动态大小类型 (DST) 工作的完成,允许像 Rc
这样的智能指针无缝地应用于数组和特征对象,以便 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