[rust-dev] Rust 0.5 released

Graydon Hoare graydon at mozilla.com
Fri Dec 21 07:45:23 PST 2012

Mozilla and the Rust community are pleased to announce version 0.5 of
the Rust compiler and associated tools.

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.5 should be considered an alpha release,
suitable for early adopters and language enthusiasts. Please file [bugs].

[notes]: https://github.com/mozilla/rust/wiki/Doc-detailed-release-notes
[website]: http://www.rust-lang.org
[bugs]: http://github.com/mozilla/rust/issues

This release is available as both a tarball and a Windows installer:

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

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

Note that the GPG signing key from last year has expired due to a short
expiry window. The key has been updated on the website. The new key URL,
ID and fingerprint are:


    4096R/5B1E4B9A 2012-12-21
    032D 6808 57D4 1FF8 A0E3  2AC5 F21A 43A7 5B1E 4B9A
    Rust Language (Tag and Release Signing Key) <rust-key at rust-lang.org>

Regrettably, installing 0.5 over 0.4 will not work as expected. Please
uninstall first.

Note that the Windows installer still requires a somewhat specific
version of MinGW and Msys to operate; recent builds of MinGW provide
versions of GCC that are incompatible. Rust presently builds and tests
with release 20110802, containing GCC 4.5. [Details] can be found on the


Thanks to everybody who has contributed[1].

The Rust Team

Version 0.5 (December 2012)

* ~900 changes, numerous bugfixes

   * Syntax changes
      * Removed `<-` move operator
      * Completed transition from `#fmt` extension syntax to `fmt!`
      * Removed old fixed length vector syntax - `[T]/N`
      * New token quasi-quoters, `quote_tokens!`, `quote_expr!`, etc.
      * Macros may now expand to items and statements
      * `a.b()` is always parsed as a method call, never as a field
      * `Eq` and `IterBytes` implementations automatically generated
        with `#[deriving_eq]` and `#[deriving_iter_bytes]` respectively
      * Removed the special crate language for `.rc` files
      * Function arguments may consist of any irrefutable pattern

   * Semantic changes
      * `&` and `~` pointers may point to objects
      * Tuple structs - `struct Foo(Bar, Baz)`. Replace newtype enums.
      * Enum variants may be structs
      * Destructors can be added to all nominal types via Drop trait
      * Structs and nullary enum variants may be constants
      * Values that cannot be implicitly copied are automatically moved
        without writing `move` explicitly
      * `&T` may now be coerced to `*T`
      * Coercions happen in `let` statements as well as function calls
      * `use` statements now take crate-relative paths
      * The module and type namespaces have been merged so that static
        method names can be resolved under the trait in which they are

   * Improved support for language features
      * Trait inheritance works in many scenarios
      * Support for explicit self arguments in methods - `self`, `&self`
        `@self`, and `~self` all generally work as expected
      * Static methods work in more situations
      * Experimental: Traits may declare default methods for impls
        to use

   * Libraries
      * New condition handling system in `core::condition`
      * Timsort added to `std::sort`
      * New priority queue, `std::priority_queue`
      * Pipes for serializable types, `std::flatpipes'
      * Serialization overhauled to be trait-based
      * Expanded `getopts` definitions
      * Moved futures to `std`
      * More functions are pure now
      * `core::comm` renamed to `oldcomm`. Still deprecated
      * `rustdoc` and `cargo` are libraries now

   * Misc
      * Added a preliminary REPL, `rusti`
      * License changed from MIT to dual MIT/APL2

[1]: Contributors to Rust 0.5:

Andrew Dunham
Arkaitz Jimenez
Ben Striegel
Bilal Husain
Brian Anderson
Brian J. Burg
Brian Leibig
Cat's Eye Technologies
Damien Grassart
Daniel Micay
Daniel Patterson
Eric Holk
Erick Tryzelaar
Gareth Daniel Smith
Graydon Hoare
Huon Wilson
Isaac Aggrey
Jakub Wieczorek
Jesse Jones
Jimmy Lu
Josh Matthews
Jyun-Yan You
Kevin Cantu
Lindsey Kuper
Luca Bruno
Luqman Aden
Mahmut Bulut
Michael Arntzenius
Niko Matsakis
Patrick Walton
Paul Stansifer
Philipp Brüschweiler
Simon BD
Tim Chevalier
Tim Taubert
Tony Young
Tycho Sci
Viktor Dahl
Zack Corr

More information about the Rust-dev mailing list