宣布 Rust 1.2

2015 年 8 月 6 日 · Rust 核心团队

今天标志着 完成 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 周期还将重点放在性能上,尽管大多数收益都在标准库内

我们还在 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