|
| 1 | +Version 1.16.0 (2017-03-16) |
| 2 | +=========================== |
| 3 | + |
| 4 | +Language |
| 5 | +-------- |
| 6 | + |
| 7 | +* Lifetimes in statics and consts default to `'static`. [RFC 1623] |
| 8 | +* [The compiler's `dead_code` lint now accounts for type aliases][38051]. |
| 9 | +* [Uninhabitable enums (those without any variants) no longer permit wildcard |
| 10 | + match patterns][38069] |
| 11 | +* [Clean up semantics of `self` in an import list][38313] |
| 12 | +* [`Self` may appear in `impl` headers][38920] |
| 13 | +* [`Self` may appear in struct expressions][39282] |
| 14 | + |
| 15 | +Compiler |
| 16 | +-------- |
| 17 | + |
| 18 | +* [`rustc` now supports `--emit=metadata`, which causes rustc to emit |
| 19 | + a `.rmeta` file containing only crate metadata][38571]. This can be |
| 20 | + used by tools like the Rust Language Service to perform |
| 21 | + metadata-only builds. |
| 22 | +* [Levenshtein based typo suggestions now work in most places, while |
| 23 | + previously they worked only for fields and sometimes for local |
| 24 | + variables][38927]. Together with the overhaul of "no |
| 25 | + resolution"/"unexpected resolution" errors (#[38154]) they result in |
| 26 | + large and systematic improvement in resolution diagnostics. |
| 27 | +* [Fix `transmute::<T, U>` where `T` requires a bigger alignment than |
| 28 | + `U`][38670] |
| 29 | +* [rustc: use -Xlinker when specifying an rpath with ',' in it][38798] |
| 30 | +* [`rustc` no longer attempts to provide "consider using an explicit |
| 31 | + lifetime" suggestions][37057]. They were inaccurate. |
| 32 | + |
| 33 | +Stabilized APIs |
| 34 | +--------------- |
| 35 | + |
| 36 | +* [`VecDeque::truncate`] |
| 37 | +* [`VecDeque::resize`] |
| 38 | +* [`String::insert_str`] |
| 39 | +* [`Duration::checked_add`] |
| 40 | +* [`Duration::checked_sub`] |
| 41 | +* [`Duration::checked_div`] |
| 42 | +* [`Duration::checked_mul`] |
| 43 | +* [`str::replacen`] |
| 44 | +* [`str::repeat`] |
| 45 | +* [`SocketAddr::is_ipv4`] |
| 46 | +* [`SocketAddr::is_ipv6`] |
| 47 | +* [`IpAddr::is_ipv4`] |
| 48 | +* [`IpAddr::is_ipv6`] |
| 49 | +* [`Vec::dedup_by`] |
| 50 | +* [`Vec::dedup_by_key`] |
| 51 | +* [`Result::unwrap_or_default`] |
| 52 | +* [`<*const T>::wrapping_offset`] |
| 53 | +* [`<*mut T>::wrapping_offset`] |
| 54 | +* `CommandExt::creation_flags` |
| 55 | +* [`File::set_permissions`] |
| 56 | +* [`String::split_off`] |
| 57 | + |
| 58 | +Libraries |
| 59 | +--------- |
| 60 | + |
| 61 | +* [`[T]::binary_search` and `[T]::binary_search_by_key` now take |
| 62 | + their argument by `Borrow` parameter][37761] |
| 63 | +* [All public types in std implement `Debug`][38006] |
| 64 | +* [`IpAddr` implements `From<Ipv4Addr>` and `From<Ipv6Addr>`][38327] |
| 65 | +* [`Ipv6Addr` implements `From<[u16; 8]>`][38131] |
| 66 | +* [Ctrl-Z returns from `Stdin.read()` when reading from the console on |
| 67 | + Windows][38274] |
| 68 | +* [std: Fix partial writes in `LineWriter`][38062] |
| 69 | +* [std: Clamp max read/write sizes on Unix][38062] |
| 70 | +* [Use more specific panic message for `&str` slicing errors][38066] |
| 71 | +* [`TcpListener::set_only_v6` is deprecated][38304]. This |
| 72 | + functionality cannot be achieved in std currently. |
| 73 | +* [`writeln!`, like `println!`, now accepts a form with no string |
| 74 | + or formatting arguments, to just print a newline][38469] |
| 75 | +* [Implement `iter::Sum` and `iter::Product` for `Result`][38580] |
| 76 | +* [Reduce the size of static data in `std_unicode::tables`][38781] |
| 77 | +* [`char::EscapeDebug`, `EscapeDefault`, `EscapeUnicode`, |
| 78 | + `CaseMappingIter`, `ToLowercase`, `ToUppercase`, implement |
| 79 | + `Display`][38909] |
| 80 | +* [`Duration` implements `Sum`][38712] |
| 81 | +* [`String` implements `ToSocketAddrs`][39048] |
| 82 | + |
| 83 | +Cargo |
| 84 | +----- |
| 85 | + |
| 86 | +* [The `cargo check` command does a type check of a project without |
| 87 | + building it][cargo/3296] |
| 88 | +* [crates.io will display CI badges from Travis and AppVeyor, if |
| 89 | + specified in Cargo.toml][cargo/3546] |
| 90 | +* [crates.io will display categories listed in Cargo.toml][cargo/3301] |
| 91 | +* [Compilation profiles accept integer values for `debug`, in addition |
| 92 | + to `true` and `false`. These are passed to `rustc` as the value to |
| 93 | + `-C debuginfo`][cargo/3534] |
| 94 | +* [Implement `cargo --version --verbose`][cargo/3604] |
| 95 | +* [All builds now output 'dep-info' build dependencies compatible with |
| 96 | + make and ninja][cargo/3557] |
| 97 | +* [Build all workspace members with `build --all`][cargo/3511] |
| 98 | +* [Document all workspace members with `doc --all`][cargo/3515] |
| 99 | +* [Path deps outside workspace are not members][cargo/3443] |
| 100 | + |
| 101 | +Misc |
| 102 | +---- |
| 103 | + |
| 104 | +* [`rustdoc` has a `--sysroot` argument that, like `rustc`, specifies |
| 105 | + the path to the Rust implementation][38589] |
| 106 | +* [The `armv7-linux-androideabi` target no longer enables NEON |
| 107 | + extensions, per Google's ABI guide][38413] |
| 108 | +* [The stock standard library can be compiled for Redox OS][38401] |
| 109 | +* [Rust has initial SPARC support][38726]. Tier 3. No builds |
| 110 | + available. |
| 111 | +* [Rust has experimental support for Nvidia PTX][38559]. Tier 3. No |
| 112 | + builds available. |
| 113 | +* [Fix backtraces on i686-pc-windows-gnu by disabling FPO][39379] |
| 114 | + |
| 115 | +Compatibility Notes |
| 116 | +------------------- |
| 117 | + |
| 118 | +* [Uninhabitable enums (those without any variants) no longer permit wildcard |
| 119 | + match patterns][38069] |
| 120 | +* In this release, references to uninhabited types can not be |
| 121 | + pattern-matched. This was accidentally allowed in 1.15. |
| 122 | +* [The compiler's `dead_code` lint now accounts for type aliases][38051]. |
| 123 | +* [Ctrl-Z returns from `Stdin.read()` when reading from the console on |
| 124 | + Windows][38274] |
| 125 | +* [Clean up semantics of `self` in an import list][38313] |
| 126 | + |
| 127 | +[37057]: https://github.com/rust-lang/rust/pull/37057 |
| 128 | +[37761]: https://github.com/rust-lang/rust/pull/37761 |
| 129 | +[38006]: https://github.com/rust-lang/rust/pull/38006 |
| 130 | +[38051]: https://github.com/rust-lang/rust/pull/38051 |
| 131 | +[38062]: https://github.com/rust-lang/rust/pull/38062 |
| 132 | +[38062]: https://github.com/rust-lang/rust/pull/38622 |
| 133 | +[38066]: https://github.com/rust-lang/rust/pull/38066 |
| 134 | +[38069]: https://github.com/rust-lang/rust/pull/38069 |
| 135 | +[38131]: https://github.com/rust-lang/rust/pull/38131 |
| 136 | +[38154]: https://github.com/rust-lang/rust/pull/38154 |
| 137 | +[38274]: https://github.com/rust-lang/rust/pull/38274 |
| 138 | +[38304]: https://github.com/rust-lang/rust/pull/38304 |
| 139 | +[38313]: https://github.com/rust-lang/rust/pull/38313 |
| 140 | +[38314]: https://github.com/rust-lang/rust/pull/38314 |
| 141 | +[38327]: https://github.com/rust-lang/rust/pull/38327 |
| 142 | +[38401]: https://github.com/rust-lang/rust/pull/38401 |
| 143 | +[38413]: https://github.com/rust-lang/rust/pull/38413 |
| 144 | +[38469]: https://github.com/rust-lang/rust/pull/38469 |
| 145 | +[38559]: https://github.com/rust-lang/rust/pull/38559 |
| 146 | +[38571]: https://github.com/rust-lang/rust/pull/38571 |
| 147 | +[38580]: https://github.com/rust-lang/rust/pull/38580 |
| 148 | +[38589]: https://github.com/rust-lang/rust/pull/38589 |
| 149 | +[38670]: https://github.com/rust-lang/rust/pull/38670 |
| 150 | +[38712]: https://github.com/rust-lang/rust/pull/38712 |
| 151 | +[38726]: https://github.com/rust-lang/rust/pull/38726 |
| 152 | +[38781]: https://github.com/rust-lang/rust/pull/38781 |
| 153 | +[38798]: https://github.com/rust-lang/rust/pull/38798 |
| 154 | +[38909]: https://github.com/rust-lang/rust/pull/38909 |
| 155 | +[38920]: https://github.com/rust-lang/rust/pull/38920 |
| 156 | +[38927]: https://github.com/rust-lang/rust/pull/38927 |
| 157 | +[39048]: https://github.com/rust-lang/rust/pull/39048 |
| 158 | +[39282]: https://github.com/rust-lang/rust/pull/39282 |
| 159 | +[39379]: https://github.com/rust-lang/rust/pull/39379 |
| 160 | +[`<*const T>::wrapping_offset`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.wrapping_offset |
| 161 | +[`<*mut T>::wrapping_offset`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.wrapping_offset |
| 162 | +[`Duration::checked_add`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_add |
| 163 | +[`Duration::checked_div`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_div |
| 164 | +[`Duration::checked_mul`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_mul |
| 165 | +[`Duration::checked_sub`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_sub |
| 166 | +[`File::set_permissions`]: https://doc.rust-lang.org/std/fs/struct.File.html#method.set_permissions |
| 167 | +[`IpAddr::is_ipv4`]: https://doc.rust-lang.org/std/net/enum.IpAddr.html#method.is_ipv4 |
| 168 | +[`IpAddr::is_ipv6`]: https://doc.rust-lang.org/std/net/enum.IpAddr.html#method.is_ipv6 |
| 169 | +[`Result::unwrap_or_default`]: https://doc.rust-lang.org/std/result/enum.Result.html#method.unwrap_or_default |
| 170 | +[`SocketAddr::is_ipv4`]: https://doc.rust-lang.org/std/net/enum.SocketAddr.html#method.is_ipv4 |
| 171 | +[`SocketAddr::is_ipv6`]: https://doc.rust-lang.org/std/net/enum.SocketAddr.html#method.is_ipv6 |
| 172 | +[`String::insert_str`]: https://doc.rust-lang.org/std/string/struct.String.html#method.insert_str |
| 173 | +[`String::split_off`]: https://doc.rust-lang.org/std/string/struct.String.html#method.split_off |
| 174 | +[`Vec::dedup_by_key`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.dedup_by_key |
| 175 | +[`Vec::dedup_by`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.dedup_by |
| 176 | +[`VecDeque::resize`]: https://doc.rust-lang.org/std/collections/vec_deque/struct.VecDeque.html#method.resize |
| 177 | +[`VecDeque::truncate`]: https://doc.rust-lang.org/std/collections/vec_deque/struct.VecDeque.html#method.truncate |
| 178 | +[`str::repeat`]: https://doc.rust-lang.org/std/primitive.str.html#method.repeat |
| 179 | +[`str::replacen`]: https://doc.rust-lang.org/std/primitive.str.html#method.replacen |
| 180 | +[cargo/3296]: https://github.com/rust-lang/cargo/pull/3296 |
| 181 | +[cargo/3301]: https://github.com/rust-lang/cargo/pull/3301 |
| 182 | +[cargo/3443]: https://github.com/rust-lang/cargo/pull/3443 |
| 183 | +[cargo/3511]: https://github.com/rust-lang/cargo/pull/3511 |
| 184 | +[cargo/3515]: https://github.com/rust-lang/cargo/pull/3515 |
| 185 | +[cargo/3534]: https://github.com/rust-lang/cargo/pull/3534 |
| 186 | +[cargo/3546]: https://github.com/rust-lang/cargo/pull/3546 |
| 187 | +[cargo/3557]: https://github.com/rust-lang/cargo/pull/3557 |
| 188 | +[cargo/3604]: https://github.com/rust-lang/cargo/pull/3604 |
| 189 | +[RFC 1623]: https://github.com/rust-lang/rfcs/blob/master/text/1623-static.md |
| 190 | + |
| 191 | + |
1 | 192 | Version 1.15.1 (2017-02-09)
|
2 | 193 | ===========================
|
3 | 194 |
|
|
0 commit comments