| 
 | 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