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
        http://static.rust-lang.org/dist/rust-0.7.tar.gz.asc
        SHA256 (of .tar.gz):
        0b88b8a4489382e0a69214eaab88e2e7c316ec33c164af0d3b53630b17590df0

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

Thanks to everyone who contributed!

Regards,
The Rust Team


Version 0.7 (July 2013)
-----------------------

   * ~2000 changes, numerous bugfixes

   * Language
* `impl`s no longer accept a visibility qualifier. Put them on methods
        instead.
      * 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 `bool`
        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 bools.
      * 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`, `DeepClone`,
        `Rand`, `Zero` and `ToStr` can all be automatically derived with
        `#[deriving(...)]`.
      * 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 iterators
        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 `HashSet`.
      * 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 addressed.
      * 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 <[email protected]>
Alexei Sholik <[email protected]>
Anthony Juckel <[email protected]>
Ben Blum <[email protected]>
Benjamin Herr <[email protected]>
Ben Striegel <[email protected]>
Bill Myers <[email protected]>
Bill Wendling <[email protected]>
Birunthan Mohanathas <[email protected]>
Björn Steinbrink <[email protected]>
Brendan Zabarauskas <[email protected]>
Brett Cannon <[email protected]>
Brian Anderson <[email protected]>
Brian Leibig <[email protected]>
Bryan Dunsmore <[email protected]>
Caitlin Potter <[email protected]>
Corey Richardson <[email protected]>
Daniel Farina <[email protected]>
Daniel Micay <[email protected]>
Daniel Ralston <[email protected]>
Dan Luu <[email protected]>
Diggory Hardy <[email protected]>
Erick Tryzelaar <[email protected]>
Fedor Indutny <[email protected]>
Felix S. Klock II <[email protected]>
Gábor Horváth <[email protected]>
gareth <gareth@gareth-N56VM.(none)>
gifnksm <[email protected]>
Graydon Hoare <[email protected]>
Herman J. Radtke III <[email protected]>
Honza Strnad <[email protected]>
Huon Wilson <[email protected]>
ILyoan <[email protected]>
ILYONG CHO <[email protected]>
Jack Moffitt <[email protected]>
James Miller <[email protected]>
James Tranovich <[email protected]>
Jeaye <[email protected]>
Jed Davis <[email protected]>
Jed Estep <[email protected]>
Jens Nockert <[email protected]>
Jeong YunWon <[email protected]>
Jesse Luehrs <[email protected]>
Jihyun Yu <[email protected]>
John Clements <[email protected]>
Jordi Boggiano <[email protected]>
Joris Rehm <[email protected]>
Josh Matthews <[email protected]>
Junyoung Cho <[email protected]>
Jyun-Yan You <[email protected]>
Kevin Ballard <[email protected]>
klutzy <[email protected]>
kud1ing <[email protected]>
Leah Hanson <[email protected]>
Lenny222 <[email protected]>
Lindsey Kuper <[email protected]>
Luca Bruno <[email protected]>
Luqman Aden <[email protected]>
Marti Raudsepp <[email protected]>
Marvin Löbel <[email protected]>
Matthijs Hofstra <[email protected]>
Michael Sullivan <[email protected]>
Michael Woerister <michaelwoerister@gmail>
Nick Desaulniers <[email protected]>
Niko Matsakis <[email protected]>
Olivier Saut <[email protected]>
Palmer Cox <[email protected]>
Patrick Walton <[email protected]>
Pavel Panchekha <[email protected]>
Philipp Brüschweiler <[email protected]>
Ralph Bodenner <[email protected]>
Ramkumar Ramachandra <[email protected]>
reus <[email protected]>
Rob Hoelz <[email protected]>
Ron Dahlgren <[email protected]>
Samuel Chase <[email protected]>
Sander Mathijs van Veen <[email protected]>
Sangeun Kim <[email protected]>
Saurabh Anand <[email protected]>
Sean Moon <[email protected]>
Seo Sanghyeon <[email protected]>
SiegeLord <[email protected]>
Steve Klabnik <[email protected]>
Steven De Coeyer <[email protected]>
Steven Fackler <[email protected]>
Steven Stewart-Gallus <[email protected]>
Ted Horst <[email protected]>
Thomas Daede <[email protected]>
Tim Chevalier <[email protected]>
Tom Lee <[email protected]>
Tommy M. McGuire <[email protected]>
Tuncer Ayaz <[email protected]>
Uwe Dauernheim <[email protected]>
Vadim Chugunov <[email protected]>
Vivek Galatage <[email protected]>
Young-il Choi <[email protected]>
Youngmin Yoo <[email protected]>
Youngsoo Son <[email protected]>
Zack Corr <[email protected]>
zofrex <[email protected]>

_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to