[rust-dev] Rust 0.4 released

Graydon Hoare graydon at mozilla.com
Mon Oct 15 13:31:06 PDT 2012

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

This release focuses on stabilizing as much of the language syntax as 
possible, fully integrating borrowed pointers, and removing argument 
modes. 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.4 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.4.tar.gz
       SHA256 (of .tar.gz):

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

Regrettably, installing 0.4 over 0.3 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.4 (October 2012)

    * ~2200 changes, numerous bugfixes

    * Syntax
       * All keywords are now strict and may not be used as identifiers
       * Keyword removal: 'again', 'import', 'export', 'check',
         'new', 'owned', 'send', 'of', 'with', 'to', 'class'.
       * Classes are replaced with simpler structs
       * Explicit method self types
       * `ret` became `return` and `alt` became `match`
       * `import` is now `use`; `use is now `extern mod`
       * `extern mod { ... }` is now `extern { ... }`
       * `use mod` is the recommended way to import modules
       * `pub` and `priv` replace deprecated export lists
       * The syntax of `match` pattern arms now uses fat arrow (=>)
       * `main` no longer accepts an args vector; use `os::args` instead

    * Semantics
       * Trait implementations are now coherent, ala Haskell typeclasses
       * Trait methods may be static
       * Argument modes are deprecated
       * Borrowed pointers are much more mature and recommended for use
       * Static strings and vectors are stored in constant memory
       * Typestate was removed
       * Resolution rewritten to be more reliable
       * Support for 'dual-mode' data structures (freezing and thawing)

    * Libraries
       * Most binary operators can now be overloaded via the traits in
       * `std::net::url` for representing URLs
       * Sendable hash maps in `core::send_map`
       * `core::task' gained a (currently unsafe) task-local storage API

    * Concurrency
       * An efficient new intertask communication primitive called the
         pipe, along with a number of higher-level channel types, in
       * `std::arc`, an atomically reference counted, immutable,
         shared memory type
       * `std::sync`, various synchronization tools based on arcs
         and pipes
       * Futures are now based on pipes and sendable
       * More robust linked task failure
       * Improved task builder API

    * Other
       * Improved error reporting
       * Preliminary JIT support
       * Preliminary work on precise GC
       * Extensive architectural improvements to rustc
       * Begun a transition away from buggy C++-based reflection (shape)
         code to Rust-based (visitor) code
       * All hash functions and tables converted to secure, randomized

[1]: Contributors to Rust 0.4:

Andrew Paseltiner
Ben Blum
Ben Striegel
Benjamin Peterson
Brian Anderson
Brian J. Burg
Chris Peterson
Damian Gryski
Daniel Patterson
Drew Willcoxon
Elliott Slaughter
Eric Holk
Erick Tryzelaar
Francisco Souza
Gareth Daniel Smith
Glenn Willen
Gonçalo Cabrita
Graydon Hoare
Jacob Harris Cryer Kragh
Jed Davis
Jeff Olson
Jesse Ruderman
Jim Blandy
Joshua Wise
Jyun-Yan You
Kevin Cantu
Lindsey Kuper
Luca Bruno
Max Penet
Michael Sullivan
Niko Matsakis
Orphée Lafond-Lummis
Patrick Walton
Patrik Kårlin
Paul Stansifer
Philipp Brüschweiler
Ryan Scheel
Ted Horst
Tim Chevalier
Vincent Belliard
Yasuhiro Fujii
Zack Corr

More information about the Rust-dev mailing list