[rust-dev] Rust 0.7 released

Brian Anderson banderson at mozilla.com
Wed Jul 3 12:02:58 PDT 2013

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

This release had a markedly different focus from previous releases,
with fewer language changes and many improvements to the standard
library. The highlights this time include a rewrite of the borrow
checker that makes working with borrowed pointers significantly
easier and a comprehensive new iterator module (std::iterator) that will
eventually replace the previous closure-based iterators.

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.7 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 is available as both a tarball and a Windows installer:

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

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

Thanks to everyone who contributed!

The Rust Team

Version 0.7 (July 2013)

    * ~2000 changes, numerous bugfixes

    * Language
       * `impl`s no longer accept a visibility qualifier. Put them on 
       * The borrow checker has been rewritten with flow-sensitivity, fixing
         many bugs and inconveniences.
       * The `self` parameter no longer implicitly means `&'self self`,
         and can be explicitly marked with a lifetime.
       * Overloadable compound operators (`+=`, etc.) have been temporarily
         removed due to bugs.
       * The `for` loop protocol now requires `for`-iterators to return 
         so they compose better.
       * The `Durable` trait is replaced with the `'static` bounds.
       * Trait default methods work more often.
       * Structs with the `#[packed]` attribute have byte alignment and
         no padding between fields.
       * Type parameters bound by `Copy` must now be copied explicitly with
         the `copy` keyword.
       * It is now illegal to move out of a dereferenced unsafe pointer.
       * `Option<~T>` is now represented as a nullable pointer.
       * `@mut` does dynamic borrow checks correctly.
       * The `main` function is only detected at the topmost level of 
the crate.
         The `#[main]` attribute is still valid anywhere.
       * Struct fields may no longer be mutable. Use inherited mutability.
       * The `#[no_send]` attribute makes a type that would otherwise be
         `Send`, not.
       * The `#[no_freeze]` attribute makes a type that would otherwise be
         `Freeze`, not.
       * Unbounded recursion will abort the process after reaching the limit
         specified by the `RUST_MAX_STACK` environment variable 
(default: 1GB).
       * The `vecs_implicitly_copyable` lint mode has been removed. Vectors
         are never implicitly copyable.
       * `#[static_assert]` makes compile-time assertions about static 
       * At long last, 'argument modes' no longer exist.
       * The rarely used `use mod` statement no longer exists.

    * Syntax extensions
       * `fail!` and `assert!` accept `~str`, `&'static str` or `fmt!`-style
         argument list.
       * `Encodable`, `Decodable`, `Ord`, `TotalOrd`, `TotalEq`, 
         `Rand`, `Zero` and `ToStr` can all be automatically derived with
       * The `bytes!` macro returns a vector of bytes for string, u8, char,
         and unsuffixed integer literals.

    * Libraries
       * The `core` crate was renamed to `std`.
       * The `std` crate was renamed to `extra`.
       * More and improved documentation.
       * std: `iterator` module for external iterator objects.
       * Many old-style (internal, higher-order function) iterators 
replaced by
         implementations of `Iterator`.
       * std: Many old internal vector and string iterators,
         incl. `any`, `all`. removed.
       * std: The `finalize` method of `Drop` renamed to `drop`.
       * std: The prelude no longer reexports any modules, only types 
and traits.
       * std: Prelude additions: `print`, `println`, `FromStr`, 
`ApproxEq`, `Equiv`,
         `Iterator`, `IteratorUtil`, many numeric traits, many tuple traits.
       * std: New numeric traits: `Fractional`, `Real`, `RealExt`, 
`Integer`, `Ratio`,
         `Algebraic`, `Trigonometric`, `Exponential`, `Primitive`.
       * std: Tuple traits and accessors defined for up to 12-tuples, e.g.
         `(0, 1, 2).n2()` or `(0, 1, 2).n2_ref()`.
       * std: Many types implement `Clone`.
       * std: `path` type renamed to `Path`.
       * std: `mut` module and `Mut` type removed.
       * std: Many standalone functions removed in favor of methods and 
         in `vec`, `str`. In the future methods will also work as functions.
       * std: `reinterpret_cast` removed. Use `transmute`.
       * std: ascii string handling in `std::ascii`.
       * std: `Rand` is implemented for ~/@.
       * std: `run` module for spawning processes overhauled.
       * std: Various atomic types added to `unstable::atomic`.
       * std: Various types implement `Zero`.
       * std: `LinearMap` and `LinearSet` renamed to `HashMap` and 
       * std: Borrowed pointer functions moved from `ptr` to `borrow`.
       * std: Added `os::mkdir_recursive`.
       * std: Added `os::glob` function performs filesystems globs.
       * std: `FuzzyEq` renamed to `ApproxEq`.
       * std: `Map` now defines `pop` and `swap` methods.
       * std: `Cell` constructors converted to static methods.
       * extra: `rc` module adds the reference counted pointers, `Rc` 
and `RcMut`.
       * extra: `flate` module moved from `std` to `extra`.
       * extra: `fileinput` module for iterating over a series of files.
       * extra: `Complex` number type and `complex` module.
       * extra: `Rational` number type and `rational` module.
       * extra: `BigInt`, `BigUint` implement numeric and comparison traits.
       * extra: `term` uses terminfo now, is more correct.
       * extra: `arc` functions converted to methods.
       * extra: Implementation of fixed output size variations of SHA-2.

    * Tooling
       * `unused_variable`  lint mode for unused variables (default: warn).
       * `unused_unsafe` lint mode for detecting unnecessary `unsafe` blocks
         (default: warn).
       * `unused_mut` lint mode for identifying unused `mut` qualifiers
         (default: warn).
       * `dead_assignment` lint mode for unread variables (default: warn).
       * `unnecessary_allocation` lint mode detects some heap 
allocations that are
         immediately borrowed so could be written without allocating 
(default: warn).
       * `missing_doc` lint mode (default: allow).
       * `unreachable_code` lint mode (default: warn).
       * The `rusti` command has been rewritten and a number of bugs 
       * rustc outputs in color on more terminals.
       * rustc accepts a `--link-args` flag to pass arguments to the linker.
       * rustc accepts a `-Z print-link-args` flag for debugging linkage.
       * Compiling with `-g` will make the binary record information about
         dynamic borrowcheck failures for debugging.
       * rustdoc has a nicer stylesheet.
       * Various improvements to rustdoc.
       * Improvements to rustpkg (see the detailed release notes).

Contributors to Rust 0.7

Alex Crichton <alex at alexcrichton.com>
Alexei Sholik <alcosholik at gmail.com>
Anthony Juckel <ajuckel at gmail.com>
Ben Blum <bblum at andrew.cmu.edu>
Benjamin Herr <ben at 0x539.de>
Ben Striegel <ben.striegel at gmail.com>
Bill Myers <bill_myers at outlook.com>
Bill Wendling <wendling at apple.com>
Birunthan Mohanathas <birunthan at mohanathas.com>
Björn Steinbrink <bsteinbr at gmail.com>
Brendan Zabarauskas <bjzaba at yahoo.com.au>
Brett Cannon <brett at python.org>
Brian Anderson <banderson at mozilla.com>
Brian Leibig <brian.leibig at gmail.com>
Bryan Dunsmore <dunsmoreb at gmail.com>
Caitlin Potter <snowball at defpixel.com>
Corey Richardson <corey at octayn.net>
Daniel Farina <daniel at fdr.io>
Daniel Micay <danielmicay at gmail.com>
Daniel Ralston <Wubbulous at gmail.com>
Dan Luu <danluu at gmail.com>
Diggory Hardy <diggory.hardy at gmail.com>
Erick Tryzelaar <erick.tryzelaar at gmail.com>
Fedor Indutny <fedor.indutny at gmail.com>
Felix S. Klock II <pnkfelix at pnkfx.org>
Gábor Horváth <xazax.hun at gmail.com>
gareth <gareth at gareth-N56VM.(none)>
gifnksm <makoto.nksm at gmail.com>
Graydon Hoare <graydon at mozilla.com>
Herman J. Radtke III <hermanradtke at gmail.com>
Honza Strnad <hanny.strnad at gmail.com>
Huon Wilson <dbau.pp+github at gmail.com>
ILyoan <ilyoan at gmail.com>
ILYONG CHO <ilyoan at gmail.com>
Jack Moffitt <jack at metajack.im>
James Miller <james at aatch.net>
James Tranovich <james at openhorizonlabs.com>
Jeaye <jeaye at arrownext.com>
Jed Davis <jld at panix.com>
Jed Estep <aje at jhu.edu>
Jens Nockert <jens at nockert.se>
Jeong YunWon <jeong at youknowone.org>
Jesse Luehrs <doy at tozt.net>
Jihyun Yu <yjh0502 at gmail.com>
John Clements <clements at racket-lang.org>
Jordi Boggiano <j.boggiano at seld.be>
Joris Rehm <joris.rehm at wakusei.fr>
Josh Matthews <josh at joshmatthews.net>
Junyoung Cho <june0.cho at samsung.com>
Jyun-Yan You <jyyou at cs.nctu.edu.tw>
Kevin Ballard <kevin at sb.org>
klutzy <klutzytheklutzy at gmail.com>
kud1ing <github at kudling.de>
Leah Hanson <astrieanna at gmail.com>
Lenny222 <github at kudling.de>
Lindsey Kuper <lindsey at composition.al>
Luca Bruno <lucab at debian.org>
Luqman Aden <laden at csclub.uwaterloo.ca>
Marti Raudsepp <marti at juffo.org>
Marvin Löbel <loebel.marvin at gmail.com>
Matthijs Hofstra <thiezz at gmail.com>
Michael Sullivan <sully at msully.net>
Michael Woerister <michaelwoerister at gmail>
Nick Desaulniers <ndesaulniers at mozilla.com>
Niko Matsakis <niko at alum.mit.edu>
Olivier Saut <osaut at airpost.net>
Palmer Cox <p at lmercox.com>
Patrick Walton <pcwalton at mimiga.net>
Pavel Panchekha <me at pavpanchekha.com>
Philipp Brüschweiler <blei42 at gmail.com>
Ralph Bodenner <rkbodenner+github at gmail.com>
Ramkumar Ramachandra <artagnon at gmail.com>
reus <reusee at ymail.com>
Rob Hoelz <rob at hoelz.ro>
Ron Dahlgren <ronald.dahlgren at gmail.com>
Samuel Chase <samebchase at gmail.com>
Sander Mathijs van Veen <smvv at kompiler.org>
Sangeun Kim <sammy.kim at samsung.com>
Saurabh Anand <saurabhanandiit at gmail.com>
Sean Moon <ssamoon at ucla.edu>
Seo Sanghyeon <sanxiyn at gmail.com>
SiegeLord <slabode at aim.com>
Steve Klabnik <steve at steveklabnik.com>
Steven De Coeyer <steven at banteng.be>
Steven Fackler <sfackler at gmail.com>
Steven Stewart-Gallus <sstewartgallus00 at langara.bc.ca>
Ted Horst <ted.horst at earthlink.net>
Thomas Daede <daede003 at umn.edu>
Tim Chevalier <chevalier at alum.wellesley.edu>
Tom Lee <github at tomlee.co>
Tommy M. McGuire <mcguire at crsr.net>
Tuncer Ayaz <tuncer.ayaz at gmail.com>
Uwe Dauernheim <uwe at dauernheim.net>
Vadim Chugunov <vadimcn at gmail.com>
Vivek Galatage <vivekgalatage at gmail.com>
Young-il Choi <duddlf.choi at samsung.com>
Youngmin Yoo <youngmin.yoo at samsung.com>
Youngsoo Son <ysoo.son at samsung.com>
Zack Corr <zack at z0w0.me>
zofrex <zofrex at gmail.com>

More information about the Rust-dev mailing list