diff --git a/RELEASES.md b/RELEASES.md index 5bb23149f2a..7bf0bcab640 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,3 +1,187 @@ +Version 1.20.0 (2017-08-31) +=========================== + +Language +-------- +- [Associated constants in traits is now stabilised.][42809] +- [A lot of macro bugs are now fixed.][42913] + +Compiler +-------- + +- [Struct fields are now properly coerced to the expected field type.][42807] +- [Enabled wasm LLVM backend][42571] WASM can now be built with the + `wasm32-experimental-emscripten` target. +- [Changed some of the error messages to be more helpful.][42033] +- [Add support for RELRO(RELocation Read-Only) for platforms that support + it.][43170] +- [rustc now reports the total number of errors on compilation failure][43015] + previously this was only the number of errors in the pass that failed. +- [Expansion in rustc has been sped up 29x.][42533] +- [added `msp430-none-elf` target.][43099] +- [rustc will now suggest one-argument enum variant to fix type mismatch when + applicable][43178] +- [Fixes backtraces on Redox][43228] +- [rustc now identifies different versions of same crate when absolute paths of + different types match in an error message.][42826] + +Libraries +--------- + + +- [Relaxed Debug constraints on `{HashMap,BTreeMap}::{Keys,Values}`.][42854] +- [Impl `PartialEq`, `Eq`, `PartialOrd`, `Ord`, `Debug`, `Hash` for unsized + tuples.][43011] +- [Impl `fmt::{Display, Debug}` for `Ref`, `RefMut`, `MutexGuard`, + `RwLockReadGuard`, `RwLockWriteGuard`][42822] +- [Impl `Clone` for `DefaultHasher`.][42799] +- [Impl `Sync` for `SyncSender`.][42397] +- [Impl `FromStr` for `char`][42271] +- [Fixed how `{f32, f64}::{is_sign_negative, is_sign_positive}` handles + NaN.][42431] +- [allow messages in the `unimplemented!()` macro.][42155] + ie. `unimplemented!("Waiting for 1.21 to be stable")` +- [`pub(restricted)` is now supported in the `thread_local!` macro.][43185] +- [Upgrade to Unicode 10.0.0][42999] +- [Reimplemented `{f32, f64}::{min, max}` in Rust instead of using CMath.][42430] +- [Skip the main thread's manual stack guard on Linux][43072] +- [Iterator::nth for `ops::{Range, RangeFrom}` is now done in O(1) time][43077] +- [`#[repr(align(N))]` attribute max number is now 2^31 - 1.][43097] This was + previously 2^15. +- [`{OsStr, Path}::Display` now avoids allocations where possible][42613] + +Stabilized APIs +--------------- + +- [`CStr::into_c_string`] +- [`CString::as_c_str`] +- [`CString::into_boxed_c_str`] +- [`Chain::get_mut`] +- [`Chain::get_ref`] +- [`Chain::into_inner`] +- [`Option::get_or_insert_with`] +- [`Option::get_or_insert`] +- [`OsStr::into_os_string`] +- [`OsString::into_boxed_os_str`] +- [`Take::get_mut`] +- [`Take::get_ref`] +- [`Utf8Error::error_len`] +- [`char::EscapeDebug`] +- [`char::escape_debug`] +- [`compile_error!`] +- [`f32::from_bits`] +- [`f32::to_bits`] +- [`f64::from_bits`] +- [`f64::to_bits`] +- [`mem::ManuallyDrop`] +- [`slice::sort_unstable_by_key`] +- [`slice::sort_unstable_by`] +- [`slice::sort_unstable`] +- [`ste::from_boxed_utf8_unchecked`] +- [`str::as_bytes_mut`] +- [`str::as_bytes_mut`] +- [`str::from_utf8_mut`] +- [`str::from_utf8_unchecked_mut`] +- [`str::get_mut`] +- [`str::get_unchecked_mut`] +- [`str::get_unchecked`] +- [`str::get`] +- [`str::into_boxed_bytes`] + + +Cargo +----- +- [Cargo API token location moved from `~/.cargo/config` to + `~/cargo/credentials`.][cargo/3978] +- [Cargo will now build `main.rs` binaries that are in sub-directories of + `src/bin`.][cargo/4214] ie. Having `src/bin/server/main.rs` and + `src/bin/client/main.rs` generates `target/debug/server` and `target/debug/client` +- [You can now specify version of a binary when installed through + `cargo install` using `--vers`.][cargo/4229] +- [Added `--no-fail-fast` flag to cargo to run all benchmarks regardless of + failure.][cargo/4248] +- [Changed the convention around which file is the crate root.][cargo/4259] +- [The `include`/`exclude` property in `Cargo.toml` now accepts gitignore paths + instead of glob patterns][cargo/4270]. Glob patterns are now deprecated. + +Compatibility Notes +------------------- + +- [Functions with `'static` in their return types will now not be as usable as + if they were using lifetime parameters instead.][42417] +- [The reimplementation of `{f32, f64}::is_sign_{negative, positive}` now + takes the sign of NaN into account where previously didn't.][42430] + +[42033]: https://github.com/rust-lang/rust/pull/42033 +[42155]: https://github.com/rust-lang/rust/pull/42155 +[42271]: https://github.com/rust-lang/rust/pull/42271 +[42397]: https://github.com/rust-lang/rust/pull/42397 +[42417]: https://github.com/rust-lang/rust/pull/42417 +[42430]: https://github.com/rust-lang/rust/pull/42430 +[42431]: https://github.com/rust-lang/rust/pull/42431 +[42533]: https://github.com/rust-lang/rust/pull/42533 +[42571]: https://github.com/rust-lang/rust/pull/42571 +[42613]: https://github.com/rust-lang/rust/pull/42613 +[42799]: https://github.com/rust-lang/rust/pull/42799 +[42807]: https://github.com/rust-lang/rust/pull/42807 +[42809]: https://github.com/rust-lang/rust/pull/42809 +[42822]: https://github.com/rust-lang/rust/pull/42822 +[42826]: https://github.com/rust-lang/rust/pull/42826 +[42854]: https://github.com/rust-lang/rust/pull/42854 +[42913]: https://github.com/rust-lang/rust/pull/42913 +[42999]: https://github.com/rust-lang/rust/pull/42999 +[43011]: https://github.com/rust-lang/rust/pull/43011 +[43015]: https://github.com/rust-lang/rust/pull/43015 +[43072]: https://github.com/rust-lang/rust/pull/43072 +[43077]: https://github.com/rust-lang/rust/pull/43077 +[43097]: https://github.com/rust-lang/rust/pull/43097 +[43099]: https://github.com/rust-lang/rust/pull/43099 +[43170]: https://github.com/rust-lang/rust/pull/43170 +[43178]: https://github.com/rust-lang/rust/pull/43178 +[43185]: https://github.com/rust-lang/rust/pull/43185 +[43228]: https://github.com/rust-lang/rust/pull/43228 +[cargo/3978]: https://github.com/rust-lang/cargo/pull/3978 +[cargo/4214]: https://github.com/rust-lang/cargo/pull/4214 +[cargo/4229]: https://github.com/rust-lang/cargo/pull/4229 +[cargo/4248]: https://github.com/rust-lang/cargo/pull/4248 +[cargo/4259]: https://github.com/rust-lang/cargo/pull/4259 +[cargo/4270]: https://github.com/rust-lang/cargo/pull/4270 +[`CStr::into_c_string`]: https://doc.rust-lang.org/std/ffi/struct.CStr.html#method.into_c_string +[`CString::as_c_str`]: https://doc.rust-lang.org/std/ffi/struct.CString.html#method.as_c_str +[`CString::into_boxed_c_str`]: https://doc.rust-lang.org/std/ffi/struct.CString.html#method.into_boxed_c_str +[`Chain::get_mut`]: https://doc.rust-lang.org/std/io/struct.Chain.html#method.get_mut +[`Chain::get_ref`]: https://doc.rust-lang.org/std/io/struct.Chain.html#method.get_ref +[`Chain::into_inner`]: https://doc.rust-lang.org/std/io/struct.Chain.html#method.into_inner +[`Option::get_or_insert_with`]: https://doc.rust-lang.org/std/option/enum.Option.html#method.get_or_insert_with +[`Option::get_or_insert`]: https://doc.rust-lang.org/std/option/enum.Option.html#method.get_or_insert +[`OsStr::into_os_string`]: https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.into_os_string +[`OsString::into_boxed_os_str`]: https://doc.rust-lang.org/std/ffi/struct.OsString.html#method.into_boxed_os_str +[`Take::get_mut`]: https://doc.rust-lang.org/std/io/struct.Take.html#method.get_mut +[`Take::get_ref`]: https://doc.rust-lang.org/std/io/struct.Take.html#method.get_ref +[`Utf8Error::error_len`]: https://doc.rust-lang.org/std/str/struct.Utf8Error.html#method.error_len +[`char::EscapeDebug`]: https://doc.rust-lang.org/std/char/struct.EscapeDebug.html +[`char::escape_debug`]: https://doc.rust-lang.org/std/primitive.char.html#method.escape_debug +[`compile_error!`]: https://doc.rust-lang.org/std/macro.compile_error.html +[`f32::from_bits`]: https://doc.rust-lang.org/std/primitive.f32.html#method.from_bits +[`f32::to_bits`]: https://doc.rust-lang.org/std/primitive.f32.html#method.to_bits +[`f64::from_bits`]: https://doc.rust-lang.org/std/primitive.f64.html#method.from_bits +[`f64::to_bits`]: https://doc.rust-lang.org/std/primitive.f64.html#method.to_bits +[`mem::ManuallyDrop`]: https://doc.rust-lang.org/std/mem/union.ManuallyDrop.html +[`slice::sort_unstable_by_key`]: https://doc.rust-lang.org/std/primitive.slice.html#method.sort_unstable_by_key +[`slice::sort_unstable_by`]: https://doc.rust-lang.org/std/primitive.slice.html#method.sort_unstable_by +[`slice::sort_unstable`]: https://doc.rust-lang.org/std/primitive.slice.html#method.sort_unstable +[`ste::from_boxed_utf8_unchecked`]: https://doc.rust-lang.org/std/str/fn.from_boxed_utf8_unchecked.html +[`str::as_bytes_mut`]: https://doc.rust-lang.org/std/primitive.str.html#method.as_bytes_mut +[`str::as_bytes_mut`]: https://doc.rust-lang.org/std/primitive.str.html#method.as_bytes_mut +[`str::from_utf8_mut`]: https://doc.rust-lang.org/std/str/fn.from_utf8_mut.html +[`str::from_utf8_unchecked_mut`]: https://doc.rust-lang.org/std/str/fn.from_utf8_unchecked_mut.html +[`str::get_mut`]: https://doc.rust-lang.org/std/primitive.str.html#method.get_mut +[`str::get_unchecked_mut`]: https://doc.rust-lang.org/std/primitive.str.html#method.get_unchecked_mut +[`str::get_unchecked`]: https://doc.rust-lang.org/std/primitive.str.html#method.get_unchecked +[`str::get`]: https://doc.rust-lang.org/std/primitive.str.html#method.get +[`str::into_boxed_bytes`]: https://doc.rust-lang.org/std/primitive.str.html#method.into_boxed_bytes + + Version 1.19.0 (2017-07-20) =========================== @@ -1679,7 +1863,7 @@ Tooling * [Test binaries now support a `--test-threads` argument to specify the number of threads used to run tests, and which acts the same as the - `RUST_TEST_THREADS` environment variable](https://github.com/rust-lang/rust/pull/35414) + `RUST_TEST_THREADS` environment variable](https://github.com/rust-lang/rust/pull/35414) * [The test runner now emits a warning when tests run over 60 seconds](https://github.com/rust-lang/rust/pull/35405) * [rustdoc: Fix methods in search results](https://github.com/rust-lang/rust/pull/34752) * [`rust-lldb` warns about unsupported versions of LLDB](https://github.com/rust-lang/rust/pull/34646)