[rust-dev] Rust 0.10 Released

Alex Crichton alex at crichton.co
Thu Apr 3 11:23:42 PDT 2014

Mozilla and the Rust community are pleased to announce version 0.10 of the
Rust compiler and tools. Rust is a systems programming language with a
focus on safety, performance and concurrency.

This was an exciting release cycle where we broke apart the libextra
library, introduced cross-crate syntax extensions and macros, improved the smart
pointer experience with the Deref trait, and improved error handling in I/O.
Outside of the compiler, this release has seen the introduction of a new RFC
process as well as support for nightly binary installers.

The brief release notes are included in this announcement, and there is
further explanation in the detailed release [notes] on the wiki.
Documentation and all the links in this email are available on the
[website]. As usual, version 0.10 should be considered an alpha release,
suitable for early adopters and language enthusiasts. Please file [bugs]
and join the [fun].

[website]: http://www.rust-lang.org
[notes]: https://github.com/mozilla/rust/wiki/Doc-detailed-release-notes
[bugs]: https://github.com/mozilla/rust/issues
[fun]: https://github.com/mozilla/rust/wiki/Note-guide-for-new-contributors

This release introduces some brand new methods to install Rust for Linux and
Mac OS X. In addition to a source tarball, binary installers are now available
for download in a variety of formats.


* http://static.rust-lang.org/dist/rust-0.10.tar.gz
  SHA256 (of .tar.gz):

Windows installer

* http://static.rust-lang.org/dist/rust-0.10-install.exe
  SHA256 (of .exe):

Linux binary tarballs

* http://static.rust-lang.org/dist/rust-0.10-x86_64-unknown-linux-gnu.tar.gz
  SHA256 (of .tar.gz):

* http://static.rust-lang.org/dist/rust-0.10-i686-unknown-linux-gnu.tar.gz
  SHA256 (of .tar.gz):

Mac OS X binary installers

* http://static.rust-lang.org/dist/rust-0.10-x86_64-apple-darwin.pkg
  SHA256 (of .pkg):

* http://static.rust-lang.org/dist/rust-0.10-i686-apple-darwin.pkg
  SHA256 (of .pkg):

Mac OS X binary tarballs

* http://static.rust-lang.org/dist/rust-0.10-x86_64-apple-darwin.tar.gz
  SHA256 (of .tar.gz):

* http://static.rust-lang.org/dist/rust-0.10-i686-apple-darwin.tar.gz
  SHA256 (of .tar.gz):

Thanks to everyone who contributed!

The Rust Team

Version 0.10 (April 2014)

  * ~1500 changes, numerous bugfixes

  * Language
    * A new RFC process is now in place for modifying the language.
    * Patterns with `@`-pointers have been removed from the language.
    * Patterns with unique vectors (`~[T]`) have been removed from the
    * Patterns with unique strings (`~str`) have been removed from the
    * `@str` has been removed from the language.
    * `@[T]` has been removed from the language.
    * `@self` has been removed from the language.
    * `@Trait` has been removed from the language.
    * Headers on `~` allocations which contain `@` boxes inside the type for
      reference counting have been removed.
    * The semantics around the lifetimes of temporary expressions have changed,
      see #3511 and #11585 for more information.
    * Cross-crate syntax extensions are now possible, but feature gated. See
      #11151 for more information. This includes both `macro_rules!` macros as
      well as syntax extensions such as `format!`.
    * New lint modes have been added, and older ones have been turned on to be
      * Unnecessary parentheses
      * Uppercase statics
      * Camel Case types
      * Uppercase variables
      * Publicly visible private types
      * `#[deriving]` with raw pointers
    * Unsafe functions can no longer be coerced to closures.
    * Various obscure macros such as `log_syntax!` are now behind feature gates.
    * The `#[simd]` attribute is now behind a feature gate.
    * Visibility is no longer allowed on `extern crate` statements, and
      unnecessary visibility (`priv`) is no longer allowed on `use` statements.
    * Trailing commas are now allowed in argument lists and tuple patterns.
    * The `do` keyword has been removed, it is now a reserved keyword.
    * Default type parameters have been implemented, but are feature gated.
    * Borrowed variables through captures in closures are now
considered soundly.
    * `extern mod` is now `extern crate`
    * The `Freeze` trait has been removed.
    * The `Share` trait has been added for types that can be shared among
    * Labels in macros are now hygienic.
    * Expression/statement macro invocations can be delimited with `{}` now.
    * Treatment of types allowed in `static mut` locations has been tweaked.
    * The `*` and `.` operators are now overloadable through the `Deref` and
      `DerefMut` traits.
    * `~Trait` and `proc` no longer have `Send` bounds by default.
    * Partial type hints are now supported with the `_` type marker.
    * An `Unsafe` type was introduced for interior mutability. It is now
      considered undefined to transmute from `&T` to `&mut T` without using the
      `Unsafe` type.
    * The #[linkage] attribute was implemented for extern statics/functions.
    * The inner attribute syntax has changed from `#[foo];` to `#![foo]`.
    * `Pod` was renamed to `Copy`.

  * Libraries
    * The `libextra` library has been removed. It has now been decomposed into
      component libraries with smaller and more focused nuggets of
      functionality. The full list of libraries can be found on the
      documentation index page.
    * std: `std::condition` has been removed. All I/O errors are now propagated
      through the `Result` type. In order to assist with error handling, a
      `try!` macro for unwrapping errors with an early return and an lint for
      unused results has been added. See #12039 for more information.
    * std: The `vec` module has been renamed to `slice`.
    * std: A new vector type, `Vec<T>`, has been added in preparation for DST.
      This will become the only growable vector in the future.
    * std: `std::io` now has more public-reexports. Types such as
      are now found at `std::io::BufferedReader` instead of
    * std: `print` and `println` are no longer in the prelude, the `print!` and
      `println!` macros are intended to be used instead.
    * std: `Rc` now has a `Weak` pointer for breaking cycles, and it no longer
      attempts to statically prevent cycles.
    * std: The standard distribution is adopting the policy of pushing failure
      to the user rather than failing in libraries. Many functions (such as
      `slice::last()`) now return `Option<T>` instead of `T` + failing.
    * std: `fmt::Default` has been renamed to `fmt::Show`, and it now has a new
      deriving mode: `#[deriving(Show)]`.
    * std: `ToStr` is now implemented for all types implementing `Show`.
    * std: The formatting trait methods now take `&self` instead of `&T`
    * std: The `invert()` method on iterators has been renamed to `rev()`
    * std: `std::num` has seen a reduction in the genericity of its traits,
      consolidating functionality into a few core traits.
    * std: Backtraces are now printed on task failure if the environment
      variable `RUST_BACKTRACE` is present.
    * std: Naming conventions for iterators have been standardized. More details
      can be found on the wiki's style guide.
    * std: `eof()` has been removed from the `Reader` trait. Specific types may
      still implement the function.
    * std: Networking types are now cloneable to allow simultaneous
    * std: `assert_approx_eq!` has been removed
    * std: The `e` and `E` formatting specifiers for floats have been added to
      print them in exponential notation.
    * std: The `Times` trait has been removed
    * std: Indications of variance and opting out of builtin bounds is done
      through marker types in `std::kinds::marker` now
    * std: `hash` has been rewritten, `IterBytes` has been removed, and
      `#[deriving(Hash)]` is now possible.
    * std: `SharedChan` has been removed, `Sender` is now cloneable.
    * std: `Chan` and `Port` were renamed to `Sender` and `Receiver`.
    * std: `Chan::new` is now `channel()`.
    * std: A new synchronous channel type has been implemented.
    * std: A `select!` macro is now provided for selecting over `Receiver`s.
    * std: `hashmap` and `trie` have been moved to `libcollections`
    * std: `run` has been rolled into `io::process`
    * std: `assert_eq!` now uses `{}` instead of `{:?}`
    * std: The equality and comparison traits have seen some reorganization.
    * std: `rand` has moved to `librand`.
    * std: `to_{lower,upper}case` has been implemented for `char`.
    * std: Logging has been moved to `liblog`.
    * collections: `HashMap` has been rewritten for higher performance and less
      memory usage.
    * native: The default runtime is now `libnative`. If `libgreen` is desired,
      it can be booted manually. The runtime guide has more information and
    * native: All I/O functionality except signals has been implemented.
    * green: Task spawning with `libgreen` has been optimized with stack caching
      and various trimming of code.
    * green: Tasks spawned by `libgreen` now have an unmapped guard page.
    * sync: The `extra::sync` module has been updated to modern rust (and moved
      to the `sync` library), tweaking and improving various interfaces while
      dropping redundant functionality.
    * sync: A new `Barrier` type has been added to the `sync` library.
    * sync: An efficient mutex for native and green tasks has been implemented.
    * serialize: The `base64` module has seen some improvement. It treats
      newlines better, has non-string error values, and has seen general
    * fourcc: A `fourcc!` macro was introduced
    * hexfloat: A `hexfloat!` macro was implemented for specifying floats via a
      hexadecimal literal.

  * Tooling
    * `rustpkg` has been deprecated and removed from the main repository. Its
      replacement, `cargo`, is under development.
    * Nightly builds of rust are now available
    * The memory usage of rustc has been improved many times throughout this
      release cycle.
    * The build process supports disabling rpath support for the rustc binary
    * Code generation has improved in some cases, giving more information to the
      LLVM optimization passes to enable more extensive optimizations.
    * Debuginfo compatibility with lldb on OSX has been restored.
    * The master branch is now gated on an android bot, making building for
      android much more reliable.
    * Output flags have been centralized into one `--emit` flag.
    * Crate type flags have been centralized into one `--crate-type` flag.
    * Codegen flags have been consolidated behind a `-C` flag.
    * Linking against outdated crates now has improved error messages.
    * Error messages with lifetimes will often suggest how to annotate the
      function to fix the error.
    * Many more types are documented in the standard library, and new guides
      were written.
    * Many `rustdoc` improvements:
      * code blocks are syntax highlighted.
      * render standalone markdown files.
      * the --test flag tests all code blocks by default.
      * exported macros are displayed.
      * reexported types have their documentation inlined at the location of the
        first reexport.
      * search works across crates that have been rendered to the same output

Contributors to Rust 0.10

Adrien Tétar <adri-from-59 at hotmail.fr>
Alan Andrade <alan.andradec at gmail.com>
Alex Crichton <alex at alexcrichton.com>
Alex Whitney <aw1209 at ic.ac.uk>
a_m0d <damien.schoof at gmail.com>
Andre Arko <andre at arko.net>
Andrew Chin <achin at eminence32.net>
aochagavia <aochagavia92 at gmail.com>
Arcterus <Arcterus at mail.com>
Axel Viala <axel.viala at darnuria.eu>
aydin.kim <aydin.kim at samsung.com>
b1nd <clint.ryan3 at gmail.com>
Ben Harris <mail at bharr.is>
Ben Noordhuis <info at bnoordhuis.nl>
Ben Striegel <ben.striegel at gmail.com>
Birunthan Mohanathas <birunthan at mohanathas.com>
Björn Steinbrink <bsteinbr at gmail.com>
Brendan Zabarauskas <bjzaba at yahoo.com.au>
Brian Anderson <banderson at mozilla.com>
Brian Leibig <brian.leibig at gmail.com>
Bruno de Oliveira Abinader <bruno.d at partner.samsung.com>
Byron Williams <byron at 112percent.com>
Cadence Marseille <cadencemarseille at gmail.com>
Carl-Anton Ingmarsson <ca.ingmarsson at gmail.com>
Chris Morgan <me at chrismorgan.info>
Chris Wong <lambda.fairy at gmail.com>
chromatic <chromatic at wgz.org>
Clark Gaebel <cg.wowus.cg at gmail.com>
Cole Mickens <cole.mickens at gmail.com>
Colin Sherratt <colin.sherratt at gmail.com>
comex <comexk at gmail.com>
Corey Richardson <corey at octayn.net>
Daniel Fagnan <dnfagnan at gmail.com>
Daniel MacDougall <dmacdougall at gmail.com>
Daniel Micay <danielmicay at gmail.com>
Dave Hodder <dmh at dmh.org.uk>
David Manescu <david.manescu at gmail.com>
Davis Silverman <sinistersnare at gmail.com>
Derek Chiang <derekchiang93 at gmail.com>
Derek Guenther <dguenther9 at gmail.com>
Div Shekhar <div at pagerduty.com>
Dmitry Promsky <dmitry at willworkforcookies.com>
Dmitry Vasiliev <dima at hlabs.org>
Douglas Young <rcxdude at gmail.com>
Dylan Braithwaite <dylanbraithwaite1 at gmail.com>
Eduard Bopp <eduard.bopp at aepsil0n.de>
Eduard Burtescu <edy.burt at gmail.com>
Edward Wang <edward.yu.wang at gmail.com>
Edward Z. Yang <ezyang at cs.stanford.edu>
Ehsanul Hoque <ehsanul at ehsanul.com>
Erick Tryzelaar <erick.tryzelaar at gmail.com>
Eunchong Yu <kroisse at gmail.com>
Felix Crux <felixc at felixcrux.com>
Felix S. Klock II <pnkfelix at pnkfx.org>
Flavio Percoco <flaper87 at gmail.com>
Florian Hahn <flo at fhahn.com>
Florian Zeitz <florob at babelmonkeys.de>
Gábor Lehel <glaebhoerl at gmail.com>
Gary M. Josack <gary at byoteki.com>
gentlefolk <cemacken at gmail.com>
Geoffroy Couprie <geo.couprie at gmail.com>
George Papanikolaou <g3orge.app at gmail.com>
gifnksm <makoto.nksm+github at gmail.com>
Guillaume Pinot <texitoi at texitoi.eu>
HeroesGrave <heroesgrave at gmail.com>
Hong Chulju <ang0123dev at gmail.com>
Huon Wilson <dbau.pp+github at gmail.com>
Ian Daniher <it.daniher at gmail.com>
Ivan Enderlin <ivan.enderlin at hoa-project.net>
Jack Moffitt <jack at metajack.im>
Jag Talon <talon.jag at gmail.com>
Jake Kerr <kodafox at gmail.com>
James Deng <cnJamesDeng at gmail.com>
James Miller <james at aatch.net>
Jan Kobler <eng1 at koblersystems.de>
Jan Niklas Hasse <jhasse at gmail.com>
Jason Fager <jfager at gmail.com>
Jed Davis <jld at panix.com>
Jeff Olson <olson.jeffery at gmail.com>
JeremyLetang <letang.jeremy at gmail.com>
joaoxsouls <joaoxsouls at gmail.com>
Johannes Löthberg <johannes at kyriasis.com>
Johannes Muenzel <jmuenzel at gmail.com>
Jonathan S <gereeter at gmail.com>
Jorge Aparicio <japaric at linux.com>
Jyun-Yan You <jyyou at cs.nctu.edu.tw>
Kang Seonghoon <public+git at mearie.org>
Keshav Kini <keshav.kini at gmail.com>
Kevin Ballard <kevin at sb.org>
Kiet Tran <ktt3ja at gmail.com>
klutzy <klutzytheklutzy at gmail.com>
korenchkin <torstenweber12 at gmail.com>
kud1ing <github at kudling.de>
kvark <kvarkus at gmail.com>
Laurent Bonnans <bonnans.l at gmail.com>
Liigo Zhuang <com.liigo at gmail.com>
Lindsey Kuper <lindsey at composition.al>
lpy <pylaurent1314 at gmail.com>
Luca Bruno <lucab at debian.org>
lucy <ne.tetewi at gmail.com>
Luqman Aden <laden at csclub.uwaterloo.ca>
Luqman Aden <me at luqman.ca>
Marcel Rodrigues <marcelgmr at gmail.com>
Marvin Löbel <loebel.marvin at gmail.com>
Matt Brubeck <mbrubeck at limpet.net>
Matthew McPherrin <matt at mcpherrin.ca>
Matthias Einwag <matthias.einwag at live.com>
Matthijs van der Vleuten <git at zr40.nl>
Micah Chalmer <micah at micahchalmer.net>
Michael Darakananda <pongad at gmail.com>
Michael Woerister <michaelwoerister at posteo>
Mickaël Delahaye <mickael.delahaye at gmail.com>
Mike Boutin <mike.boutin at gmail.com>
mr.Shu <mr at shu.io>
Ms2ger <ms2ger at gmail.com>
musitdev <philippe.delrieu at free.fr>
Nathaniel Herman <nherman at college.harvard.edu>
Nick Cameron <ncameron at mozilla.com>
Nick Desaulniers <ndesaulniers at mozilla.com>
Nif Ward <nif.ward at gmail.com>
Niko Matsakis <niko at alum.mit.edu>
noam <noam at clusterfoo.com>
OGINO Masanori <masanori.ogino at gmail.com>
Olle Jonsson <olle.jonsson at gmail.com>
Palmer Cox <p at lmercox.com>
Patrick Walton <pcwalton at mimiga.net>
Peter Marheine <peter at taricorp.net>
Petter Remen <petter.remen at gmail.com>
Piotr Czarnecki <pioczarn at gmail.com>
Piotr Zolnierek <pz at anixe.pl>
Q.P.Liu <qpliu at yahoo.com>
Raphael Catolino <raphael.catolino at gmail.com>
Richard Diamond <wichard at vitalitystudios.com>
Robert Gawdzik <rgawdzik at hotmail.com>
Ryan Scheel (Havvy) <ryan.havvy at gmail.com>
Salem Talha <salem.a.talha at gmail.com>
Scott Jenkins <scottdjwales at gmail.com>
Scott Lawrence <bytbox at gmail.com>
Sean Chalmers <sclhiannan at gmail.com>
Sean McArthur <sean.monstar at gmail.com>
Seo Sanghyeon <sanxiyn at gmail.com>
Shamir Khodzha <khodzha.sh at gmail.com>
SiegeLord <slabode at aim.com>
Simon Sapin <simon.sapin at exyr.org>
Stepan Koltsov <stepan.koltsov at gmail.com>
Sterling Greene <sterling.greene at gmail.com>
Steven Fackler <sfackler at gmail.com>
Steven Stewart-Gallus <sstewartgallus00 at mylangara.bc.ca>
Ted Horst <ted.horst at earthlink.net>
Tobias Bucher <tobiasbucher5991 at gmail.com>
Tomas Sedovic <tomas at sedovic.cz>
Tom Lee <github at tomlee.co>
TorstenWeber <TorstenWeber12 at gmail.com>
Trent Ogren <tedwardo2 at gmail.com>
Vadim Chugunov <vadimcn at gmail.com>
Virgile Andreani <virgile.andreani at anbuco.fr>
WebeWizard <webewizard at gmail.com>
William Ting <io at williamting.com>
xales <xales at naveria.com>
Yehuda Katz <wycats at gmail.com>
Yuri Kunde Schlesner <yuriks at yuriks.net>
Zach Kamsler <smoo.master at gmail.com>
Ziad Hatahet <hatahet at gmail.com>
zslayton <zack.slayton at gmail.com>

More information about the Rust-dev mailing list