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

This was another very active release cycle that continued the trend
toward refining the standard library while making minor adjustments to
the language. In this release the `for` keyword has been changed to work
with `Iterator` types, the runtime and task scheduler was rewritten, a
new experimental I/O subsystem was added, and we added a new family of
string formatting macros, `format!`, that will eventually replace `fmt!`.

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.8 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.8.tar.gz
http://static.rust-lang.org/dist/rust-0.8.tar.gz.asc
SHA256 (of .tar.gz):
42f791ab1537357fe0f63d67ffe6bcb64ecf16b2bd3f1484ab589823f5914182

* http://static.rust-lang.org/dist/rust-0.8-install.exe
http://static.rust-lang.org/dist/rust-0.8-install.exe.asc
SHA256 (of .exe):
4d303232144cb4c3a6f34af6ff0cfe9f8eefae114c88c52ac63128c49cdef7f1

Thanks to everyone who contributed!

Regards,
The Rust Team


Version 0.8 (September 2013)
-----------------------

* ~2200 changes, numerous bugfixes

* Language
* The `for` loop syntax has changed to work with the `Iterator` trait.
* At long last, unwinding works on Windows.
* Default methods are ready for use.
* Many trait inheritance bugs fixed.
* Owned and borrowed trait objects work more reliably.
* `copy` is no longer a keyword. It has been replaced by the `Clone` trait.
* rustc can omit emission of code for the `debug!` macro if it is passed
`--cfg ndebug`
* mod.rs is now "blessed". When loading `mod foo;`, rustc will now look
for foo.rs, then foo/mod.rs, and will generate an error when both are
present.
* Strings no longer contain trailing nulls. The new `std::c_str` module
provides new mechanisms for converting to C strings.
* The type of foreign functions is now `extern "C" fn` instead of `*u8'.
* The FFI has been overhauled such that foreign functions are called directly,
instead of through a stack-switching wrapper.
* Calling a foreign function must be done through a Rust function with the
`#[fixed_stack_segment]` attribute.
* The `externfn!` macro can be used to declare both a foreign function and
a `#[fixed_stack_segment]` wrapper at once.
* `pub` and `priv` modifiers on `extern` blocks are no longer parsed.
* `unsafe` is no longer allowed on extern fns - they are all unsafe.
* `priv` is disallowed everywhere except for struct fields and enum variants.
* `&T` (besides `&'static T`) is no longer allowed in `@T`.
* `ref` bindings in irrefutable patterns work correctly now.
* `char` is now prevented from containing invalid code points.
* Casting to `bool` is no longer allowed.
* `\0` is now accepted as an escape in chars and strings.
* `yield` is a reserved keyword.
* `typeof` is a reserved keyword.
* Crates may be imported by URL with `extern mod foo = "url";`.
* Explicit enum discriminants may be given as uints as in `enum E { V = 0u }`
* Static vectors can be initialized with repeating elements,
e.g. `static foo: [u8, .. 100]: [0, .. 100];`.
* Static structs can be initialized with functional record update,
e.g. `static foo: Foo = Foo { a: 5, .. bar };`.
* `cfg!` can be used to conditionally execute code based on the crate
configuration, similarly to `#[cfg(...)]`.
* The `unnecessary_qualification` lint detects unneeded module
prefixes (default: allow).
* Arithmetic operations have been implemented on the SIMD types in
`std::unstable::simd`.
* Exchange allocation headers were removed, reducing memory usage.
* `format!` implements a completely new, extensible, and higher-performance
string formatting system. It will replace `fmt!`.
* `print!` and `println!` write formatted strings (using the `format!`
extension) to stdout.
* `write!` and `writeln!` write formatted strings (using the `format!`
extension) to the new Writers in `std::rt::io`.
* The library section in which a function or static is placed may
be specified with `#[link_section = "..."]`.
* The `proto!` syntax extension for defining bounded message protocols
was removed.
* `macro_rules!` is hygienic for `let` declarations.
* The `#[export_name]` attribute specifies the name of a symbol.
* `unreachable!` can be used to indicate unreachable code, and fails
if executed.

* Libraries
* std: Transitioned to the new runtime, written in Rust.
* std: Added an experimental I/O library, `rt::io`, based on the new
runtime.
* std: A new generic `range` function was added to the prelude, replacing
`uint::range` and friends.
* std: `range_rev` no longer exists. Since range is an iterator it can be
reversed with `range(lo, hi).invert()`.
* std: The `chain` method on option renamed to `and_then`; `unwrap_or_default`
renamed to `unwrap_or`.
* std: The `iterator` module was renamed to `iter`.
* std: Integral types now support the `checked_add`, `checked_sub`, and
`checked_mul` operations for detecting overflow.
* std: Many methods in `str`, `vec`, `option, `result` were renamed for
consistency.
* std: Methods are standardizing on conventions for casting methods:
`to_foo` for copying, `into_foo` for moving, `as_foo` for temporary
and cheap casts.
* std: The `CString` type in `c_str` provides new ways to convert to and
from C strings.
* std: `DoubleEndedIterator` can yield elements in two directions.
* std: The `mut_split` method on vectors partitions an `&mut [T]` into
two splices.
* std: `str::from_bytes` renamed to `str::from_utf8`.
* std: `pop_opt` and `shift_opt` methods added to vectors.
* std: The task-local data interface no longer uses @, and keys are
no longer function pointers.
* std: The `swap_unwrap` method of `Option` renamed to `take_unwrap`.
* std: Added `SharedPort` to `comm`.
* std: `Eq` has a default method for `ne`; only `eq` is required
in implementations.
* std: `Ord` has default methods for `le`, `gt` and `ge`; only `lt`
is required in implementations.
* std: `is_utf8` performance is improved, impacting many string functions.
* std: `os::MemoryMap` provides cross-platform mmap.
* std: `ptr::offset` is now unsafe, but also more optimized. Offsets that
are not 'in-bounds' are considered undefined.
* std: Many freestanding functions in `vec` removed in favor of methods.
* std: Many freestanding functions on scalar types removed in favor of
methods.
* std: Many options to task builders were removed since they don't make
sense in the new scheduler design.
* std: More containers implement `FromIterator` so can be created by the
`collect` method.
* std: More complete atomic types in `unstable::atomics`.
* std: `comm::PortSet` removed.
* std: Mutating methods in the `Set` and `Map` traits have been moved into
the `MutableSet` and `MutableMap` traits. `Container::is_empty`,
`Map::contains_key`, `MutableMap::insert`, and `MutableMap::remove` have
default implementations.
* std: Various `from_str` functions were removed in favor of a generic
`from_str` which is available in the prelude.
* std: `util::unreachable` removed in favor of the `unreachable!` macro.
* extra: `dlist`, the doubly-linked list was modernized.
* extra: Added a `hex` module with `ToHex` and `FromHex` traits.
* extra: Added `glob` module, replacing `std::os::glob`.
* extra: `rope` was removed.
* extra: `deque` was renamed to `ringbuf`. `RingBuf` implements `Deque`.
* extra: `net`, and `timer` were removed. The experimental replacements
are `std::rt::io::net` and `std::rt::io::timer`.
* extra: Iterators implemented for `SmallIntMap`.
* extra: Iterators implemented for `Bitv` and `BitvSet`.
* extra: `SmallIntSet` removed. Use `BitvSet`.
* extra: Performance of JSON parsing greatly improved.
* extra: `semver` updated to SemVer 2.0.0.
* extra: `term` handles more terminals correctly.
* extra: `dbg` module removed.
* extra: `par` module removed.
* extra: `future` was cleaned up, with some method renames.
* extra: Most free functions in `getopts` were converted to methods.

* Other
* rustc's debug info generation (`-Z debug-info`) is greatly improved.
* rustc accepts `--target-cpu` to compile to a specific CPU architecture,
similarly to gcc's `--march` flag.
* rustc's performance compiling small crates is much better.
* rustpkg has received many improvements.
* rustpkg supports git tags as package IDs.
* rustpkg builds into target-specific directories so it can be used for
cross-compiling.
* The number of concurrent test tasks is controlled by the environment
variable RUST_TEST_TASKS.
* The test harness can now report metrics for benchmarks.
* All tools have man pages.
* Programs compiled with `--test` now support the `-h` and `--help` flags.
* The runtime uses jemalloc for allocations.
* Segmented stacks are temporarily disabled as part of the transition to
the new runtime. Stack overflows are possible!
* A new documentation backend, rustdoc_ng, is available for use. It is
still invoked through the normal `rustdoc` command.


Contributors to Rust 0.8
------------------------

Aaron Laursen <[email protected]>
Aaron Todd <[email protected]>
adridu59 <[email protected]>
Adrien Tétar <[email protected]>
Alex Crichton <[email protected]>
Aljaž "g5pw" Srebrnič <[email protected]>
Anders Kaseorg <[email protected]>
Andreas Martens <[email protected]>
Andrew Dunham <[email protected]>
Andrew Paseltiner <[email protected]>
Armin Ronacher <[email protected]>
Austin King <[email protected]>
Ben Blum <[email protected]>
Benjamin Herr <[email protected]>
Birunthan Mohanathas <[email protected]>
Björn Steinbrink <[email protected]>
blake2-ppc <[email protected]>
Bouke van der Bijl <[email protected]>
Brandon Sanderson <[email protected]>
Brendan Cully <[email protected]>
Brendan Zabarauskas <[email protected]>
Brian Anderson <[email protected]>
Carlos <[email protected]>
Chris Morgan <[email protected]>
Corey Richardson <[email protected]>
Daniel Micay <[email protected]>
Daniel Rosenwasser <[email protected]>
darkf <[email protected]>
David Creswick <[email protected]>
David Halperin <[email protected]>
David Manescu <[email protected]>
Dmitry Ermolov <[email protected]>
Do Nhat Minh <[email protected]>
Erick Tryzelaar <[email protected]>
Eric Martin <[email protected]>
Eric Reed <[email protected]>
Etienne Millon <[email protected]>
Evgeny Sologubov
Fedor Indutny <[email protected]>
Felix S. Klock II <[email protected]>
Flaper Fesp <[email protected]>
Flavio Percoco <[email protected]>
Florian Hahn <[email protected]>
Florian Zeitz <[email protected]>
Gábor Horváth <[email protected]>
Gareth Smith <[email protected]>
Gary Linscott <[email protected]>
Gavin Baker <[email protected]>
Graydon Hoare <[email protected]>
Huon Wilson <[email protected]>
Ilyong Cho <[email protected]>
Jack Moffitt <[email protected]>
Jakub <[email protected]>
James Miller <[email protected]>
Jan Kobler <[email protected]>
Jason Fager <[email protected]>
Jed Davis <[email protected]>
Jeff Olson <[email protected]>
Jens Nockert <[email protected]>
Jimmy Zelinskie <[email protected]>
jmgrosen <[email protected]>
John Barker <[email protected]>
John Clements <[email protected]>
Jordi Boggiano <[email protected]>
Josh Matthews <[email protected]>
Jyun-Yan You <[email protected]>
Keegan McAllister <[email protected]>
Kevin Ballard <[email protected]>
Kevin Mehall <[email protected]>
Kevin Murphy <[email protected]>
klutzy <[email protected]>
korenchkin <[email protected]>
Lars Bergstrom <[email protected]>
Lenny222 <[email protected]>
Lindsey Kuper <[email protected]>
Luca Bruno <[email protected]>
Luqman Aden <[email protected]>
maikklein <[email protected]>
Makoto Nakashima <[email protected]>
Mark Sinclair <[email protected]>
Marvin Löbel <[email protected]>
Matthijs Hofstra <[email protected]>
Maxim Kolganov <[email protected]>
Micah Chalmer <[email protected]>
Michael Sullivan <[email protected]>
Michael Woerister <michaelwoerister@gmail>
Mihnea Dobrescu-Balaur <[email protected]>
Mukilan Thiagarajan <[email protected]>
NiccosSystem <[email protected]>
Nick Desaulniers <[email protected]>
Niko Matsakis <[email protected]>
novalis <[email protected]>
nsf <[email protected]>
OGINO Masanori <[email protected]>
Palmer Cox <[email protected]>
Patrick Walton <[email protected]>
Paul Collins <[email protected]>
Philipp Brüschweiler <[email protected]>
Robert Knight <[email protected]>
Robert Millar <[email protected]>
Sangeun Kim <[email protected]>
Sankha Narayan Guria <[email protected]>
Seo Sanghyeon <[email protected]>
SiegeLord <[email protected]>
Simon Sapin <[email protected]>
sp3d <sp3d@github>
Stepan Koltsov <[email protected]>
Steve Klabnik <[email protected]>
Steven Fackler <[email protected]>
Steven Stewart-Gallus <[email protected]>
Ted Horst <[email protected]>
Tim Chevalier <[email protected]>
Tim Kuehn <[email protected]>
Tom Lee <[email protected]>
U-NOV2010\eugals
Vadim Chugunov <[email protected]>
Young-il Choi <[email protected]>
Zack Slayton <[email protected]>
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to