|
| 1 | +Version 1.20.0 (2017-08-31) |
| 2 | +=========================== |
| 3 | + |
| 4 | +Language |
| 5 | +-------- |
| 6 | +- [Associated constants in traits is now stabilised.][42809] |
| 7 | +- [A lot of macro bugs are now fixed.][42913] |
| 8 | + |
| 9 | +Compiler |
| 10 | +-------- |
| 11 | + |
| 12 | +- [Struct fields are now properly coerced to the expected field type.][42807] |
| 13 | +- [Enabled wasm LLVM backend][42571] WASM can now be built with the |
| 14 | + `wasm32-experimental-emscripten` target. |
| 15 | +- [Changed some of the error messages to be more helpful.][42033] |
| 16 | +- [Add support for RELRO(RELocation Read-Only) for platforms that support |
| 17 | + it.][43170] |
| 18 | +- [rustc now reports the total number of errors on compilation failure][43015] |
| 19 | + previously this was only the number of errors in the pass that failed. |
| 20 | +- [Expansion in rustc has been sped up 29x.][42533] |
| 21 | +- [added `msp430-none-elf` target.][43099] |
| 22 | +- [rustc will now suggest one-argument enum variant to fix type mismatch when |
| 23 | + applicable][43178] |
| 24 | +- [Fixes backtraces on Redox][43228] |
| 25 | +- [rustc now identifies different versions of same crate when absolute paths of |
| 26 | + different types match in an error message.][42826] |
| 27 | + |
| 28 | +Libraries |
| 29 | +--------- |
| 30 | + |
| 31 | + |
| 32 | +- [Relaxed Debug constraints on `{HashMap,BTreeMap}::{Keys,Values}`.][42854] |
| 33 | +- [Impl `PartialEq`, `Eq`, `PartialOrd`, `Ord`, `Debug`, `Hash` for unsized |
| 34 | + tuples.][43011] |
| 35 | +- [Impl `fmt::{Display, Debug}` for `Ref`, `RefMut`, `MutexGuard`, |
| 36 | + `RwLockReadGuard`, `RwLockWriteGuard`][42822] |
| 37 | +- [Impl `Clone` for `DefaultHasher`.][42799] |
| 38 | +- [Impl `Sync` for `SyncSender`.][42397] |
| 39 | +- [Impl `FromStr` for `char`][42271] |
| 40 | +- [Fixed how `{f32, f64}::{is_sign_negative, is_sign_positive}` handles |
| 41 | + NaN.][42431] |
| 42 | +- [allow messages in the `unimplemented!()` macro.][42155] |
| 43 | + ie. `unimplemented!("Waiting for 1.21 to be stable")` |
| 44 | +- [`pub(restricted)` is now supported in the `thread_local!` macro.][43185] |
| 45 | +- [Upgrade to Unicode 10.0.0][42999] |
| 46 | +- [Reimplemented `{f32, f64}::{min, max}` in Rust instead of using CMath.][42430] |
| 47 | +- [Skip the main thread's manual stack guard on Linux][43072] |
| 48 | +- [Iterator::nth for `ops::{Range, RangeFrom}` is now done in O(1) time][43077] |
| 49 | +- [`#[repr(align(N))]` attribute max number is now 2^31 - 1.][43097] This was |
| 50 | + previously 2^15. |
| 51 | +- [`{OsStr, Path}::Display` now avoids allocations where possible][42613] |
| 52 | + |
| 53 | +Stabilized APIs |
| 54 | +--------------- |
| 55 | + |
| 56 | +- [`CStr::into_c_string`] |
| 57 | +- [`CString::as_c_str`] |
| 58 | +- [`CString::into_boxed_c_str`] |
| 59 | +- [`Chain::get_mut`] |
| 60 | +- [`Chain::get_ref`] |
| 61 | +- [`Chain::into_inner`] |
| 62 | +- [`Option::get_or_insert_with`] |
| 63 | +- [`Option::get_or_insert`] |
| 64 | +- [`OsStr::into_os_string`] |
| 65 | +- [`OsString::into_boxed_os_str`] |
| 66 | +- [`Take::get_mut`] |
| 67 | +- [`Take::get_ref`] |
| 68 | +- [`Utf8Error::error_len`] |
| 69 | +- [`char::EscapeDebug`] |
| 70 | +- [`char::escape_debug`] |
| 71 | +- [`compile_error!`] |
| 72 | +- [`f32::from_bits`] |
| 73 | +- [`f32::to_bits`] |
| 74 | +- [`f64::from_bits`] |
| 75 | +- [`f64::to_bits`] |
| 76 | +- [`mem::ManuallyDrop`] |
| 77 | +- [`slice::sort_unstable_by_key`] |
| 78 | +- [`slice::sort_unstable_by`] |
| 79 | +- [`slice::sort_unstable`] |
| 80 | +- [`ste::from_boxed_utf8_unchecked`] |
| 81 | +- [`str::as_bytes_mut`] |
| 82 | +- [`str::as_bytes_mut`] |
| 83 | +- [`str::from_utf8_mut`] |
| 84 | +- [`str::from_utf8_unchecked_mut`] |
| 85 | +- [`str::get_mut`] |
| 86 | +- [`str::get_unchecked_mut`] |
| 87 | +- [`str::get_unchecked`] |
| 88 | +- [`str::get`] |
| 89 | +- [`str::into_boxed_bytes`] |
| 90 | + |
| 91 | + |
| 92 | +Cargo |
| 93 | +----- |
| 94 | +- [Cargo API token location moved from `~/.cargo/config` to |
| 95 | + `~/cargo/credentials`.][cargo/3978] |
| 96 | +- [Cargo will now build `main.rs` binaries that are in sub-directories of |
| 97 | + `src/bin`.][cargo/4214] ie. Having `src/bin/server/main.rs` and |
| 98 | + `src/bin/client/main.rs` generates `target/debug/server` and `target/debug/client` |
| 99 | +- [You can now specify version of a binary when installed through |
| 100 | + `cargo install` using `--vers`.][cargo/4229] |
| 101 | +- [Added `--no-fail-fast` flag to cargo to run all benchmarks regardless of |
| 102 | + failure.][cargo/4248] |
| 103 | +- [Changed the convention around which file is the crate root.][cargo/4259] |
| 104 | +- [The `include`/`exclude` property in `Cargo.toml` now accepts gitignore paths |
| 105 | + instead of glob patterns][cargo/4270]. Glob patterns are now deprecated. |
| 106 | + |
| 107 | +Compatibility Notes |
| 108 | +------------------- |
| 109 | + |
| 110 | +- [Functions with `'static` in their return types will now not be as usable as |
| 111 | + if they were using lifetime parameters instead.][42417] |
| 112 | +- [The reimplementation of `{f32, f64}::is_sign_{negative, positive}` now |
| 113 | + takes the sign of NaN into account where previously didn't.][42430] |
| 114 | + |
| 115 | +[42033]: https://github.com/rust-lang/rust/pull/42033 |
| 116 | +[42155]: https://github.com/rust-lang/rust/pull/42155 |
| 117 | +[42271]: https://github.com/rust-lang/rust/pull/42271 |
| 118 | +[42397]: https://github.com/rust-lang/rust/pull/42397 |
| 119 | +[42417]: https://github.com/rust-lang/rust/pull/42417 |
| 120 | +[42430]: https://github.com/rust-lang/rust/pull/42430 |
| 121 | +[42431]: https://github.com/rust-lang/rust/pull/42431 |
| 122 | +[42533]: https://github.com/rust-lang/rust/pull/42533 |
| 123 | +[42571]: https://github.com/rust-lang/rust/pull/42571 |
| 124 | +[42613]: https://github.com/rust-lang/rust/pull/42613 |
| 125 | +[42799]: https://github.com/rust-lang/rust/pull/42799 |
| 126 | +[42807]: https://github.com/rust-lang/rust/pull/42807 |
| 127 | +[42809]: https://github.com/rust-lang/rust/pull/42809 |
| 128 | +[42822]: https://github.com/rust-lang/rust/pull/42822 |
| 129 | +[42826]: https://github.com/rust-lang/rust/pull/42826 |
| 130 | +[42854]: https://github.com/rust-lang/rust/pull/42854 |
| 131 | +[42913]: https://github.com/rust-lang/rust/pull/42913 |
| 132 | +[42999]: https://github.com/rust-lang/rust/pull/42999 |
| 133 | +[43011]: https://github.com/rust-lang/rust/pull/43011 |
| 134 | +[43015]: https://github.com/rust-lang/rust/pull/43015 |
| 135 | +[43072]: https://github.com/rust-lang/rust/pull/43072 |
| 136 | +[43077]: https://github.com/rust-lang/rust/pull/43077 |
| 137 | +[43097]: https://github.com/rust-lang/rust/pull/43097 |
| 138 | +[43099]: https://github.com/rust-lang/rust/pull/43099 |
| 139 | +[43170]: https://github.com/rust-lang/rust/pull/43170 |
| 140 | +[43178]: https://github.com/rust-lang/rust/pull/43178 |
| 141 | +[43185]: https://github.com/rust-lang/rust/pull/43185 |
| 142 | +[43228]: https://github.com/rust-lang/rust/pull/43228 |
| 143 | +[cargo/3978]: https://github.com/rust-lang/cargo/pull/3978 |
| 144 | +[cargo/4214]: https://github.com/rust-lang/cargo/pull/4214 |
| 145 | +[cargo/4229]: https://github.com/rust-lang/cargo/pull/4229 |
| 146 | +[cargo/4248]: https://github.com/rust-lang/cargo/pull/4248 |
| 147 | +[cargo/4259]: https://github.com/rust-lang/cargo/pull/4259 |
| 148 | +[cargo/4270]: https://github.com/rust-lang/cargo/pull/4270 |
| 149 | +[`CStr::into_c_string`]: https://doc.rust-lang.org/std/ffi/struct.CStr.html#method.into_c_string |
| 150 | +[`CString::as_c_str`]: https://doc.rust-lang.org/std/ffi/struct.CString.html#method.as_c_str |
| 151 | +[`CString::into_boxed_c_str`]: https://doc.rust-lang.org/std/ffi/struct.CString.html#method.into_boxed_c_str |
| 152 | +[`Chain::get_mut`]: https://doc.rust-lang.org/std/io/struct.Chain.html#method.get_mut |
| 153 | +[`Chain::get_ref`]: https://doc.rust-lang.org/std/io/struct.Chain.html#method.get_ref |
| 154 | +[`Chain::into_inner`]: https://doc.rust-lang.org/std/io/struct.Chain.html#method.into_inner |
| 155 | +[`Option::get_or_insert_with`]: https://doc.rust-lang.org/std/option/enum.Option.html#method.get_or_insert_with |
| 156 | +[`Option::get_or_insert`]: https://doc.rust-lang.org/std/option/enum.Option.html#method.get_or_insert |
| 157 | +[`OsStr::into_os_string`]: https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.into_os_string |
| 158 | +[`OsString::into_boxed_os_str`]: https://doc.rust-lang.org/std/ffi/struct.OsString.html#method.into_boxed_os_str |
| 159 | +[`Take::get_mut`]: https://doc.rust-lang.org/std/io/struct.Take.html#method.get_mut |
| 160 | +[`Take::get_ref`]: https://doc.rust-lang.org/std/io/struct.Take.html#method.get_ref |
| 161 | +[`Utf8Error::error_len`]: https://doc.rust-lang.org/std/str/struct.Utf8Error.html#method.error_len |
| 162 | +[`char::EscapeDebug`]: https://doc.rust-lang.org/std/char/struct.EscapeDebug.html |
| 163 | +[`char::escape_debug`]: https://doc.rust-lang.org/std/primitive.char.html#method.escape_debug |
| 164 | +[`compile_error!`]: https://doc.rust-lang.org/std/macro.compile_error.html |
| 165 | +[`f32::from_bits`]: https://doc.rust-lang.org/std/primitive.f32.html#method.from_bits |
| 166 | +[`f32::to_bits`]: https://doc.rust-lang.org/std/primitive.f32.html#method.to_bits |
| 167 | +[`f64::from_bits`]: https://doc.rust-lang.org/std/primitive.f64.html#method.from_bits |
| 168 | +[`f64::to_bits`]: https://doc.rust-lang.org/std/primitive.f64.html#method.to_bits |
| 169 | +[`mem::ManuallyDrop`]: https://doc.rust-lang.org/std/mem/union.ManuallyDrop.html |
| 170 | +[`slice::sort_unstable_by_key`]: https://doc.rust-lang.org/std/primitive.slice.html#method.sort_unstable_by_key |
| 171 | +[`slice::sort_unstable_by`]: https://doc.rust-lang.org/std/primitive.slice.html#method.sort_unstable_by |
| 172 | +[`slice::sort_unstable`]: https://doc.rust-lang.org/std/primitive.slice.html#method.sort_unstable |
| 173 | +[`ste::from_boxed_utf8_unchecked`]: https://doc.rust-lang.org/std/str/fn.from_boxed_utf8_unchecked.html |
| 174 | +[`str::as_bytes_mut`]: https://doc.rust-lang.org/std/primitive.str.html#method.as_bytes_mut |
| 175 | +[`str::as_bytes_mut`]: https://doc.rust-lang.org/std/primitive.str.html#method.as_bytes_mut |
| 176 | +[`str::from_utf8_mut`]: https://doc.rust-lang.org/std/str/fn.from_utf8_mut.html |
| 177 | +[`str::from_utf8_unchecked_mut`]: https://doc.rust-lang.org/std/str/fn.from_utf8_unchecked_mut.html |
| 178 | +[`str::get_mut`]: https://doc.rust-lang.org/std/primitive.str.html#method.get_mut |
| 179 | +[`str::get_unchecked_mut`]: https://doc.rust-lang.org/std/primitive.str.html#method.get_unchecked_mut |
| 180 | +[`str::get_unchecked`]: https://doc.rust-lang.org/std/primitive.str.html#method.get_unchecked |
| 181 | +[`str::get`]: https://doc.rust-lang.org/std/primitive.str.html#method.get |
| 182 | +[`str::into_boxed_bytes`]: https://doc.rust-lang.org/std/primitive.str.html#method.into_boxed_bytes |
| 183 | + |
| 184 | + |
1 | 185 | Version 1.19.0 (2017-07-20)
|
2 | 186 | ===========================
|
3 | 187 |
|
@@ -1679,7 +1863,7 @@ Tooling
|
1679 | 1863 |
|
1680 | 1864 | * [Test binaries now support a `--test-threads` argument to specify the number
|
1681 | 1865 | of threads used to run tests, and which acts the same as the
|
1682 |
| - `RUST_TEST_THREADS` environment variable](https://github.com/rust-lang/rust/pull/35414) |
| 1866 | + `RUST_TEST_THREADS` environment variable](https://github.com/rust-lang/rust/pull/35414) |
1683 | 1867 | * [The test runner now emits a warning when tests run over 60 seconds](https://github.com/rust-lang/rust/pull/35405)
|
1684 | 1868 | * [rustdoc: Fix methods in search results](https://github.com/rust-lang/rust/pull/34752)
|
1685 | 1869 | * [`rust-lldb` warns about unsupported versions of LLDB](https://github.com/rust-lang/rust/pull/34646)
|
|
0 commit comments