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