|
| 1 | +Version 1.18.0 (2017-06-08) |
| 2 | +=========================== |
| 3 | + |
| 4 | +Language |
| 5 | +-------- |
| 6 | + |
| 7 | +- [Stabilize pub(restricted)][40556] `pub` can now accept a module path to |
| 8 | + make the item visible to just that module tree. Also accepts the keyword |
| 9 | + `crate` to make something public to the whole crate but not users of the |
| 10 | + library. Example: `pub(crate) mod utils;`. [RFC 1422]. |
| 11 | +- [Stabilize `#![windows_subsystem]` attribute][40870] conservative exposure of the |
| 12 | + `/SUBSYSTEM` linker flag on Windows platforms. [RFC 1665]. |
| 13 | +- [Refactor of trait object type parsing][40043] Now `ty` in macros can accept |
| 14 | + types like `Write + Send`, trailing `+` are now supported in trait objects, |
| 15 | + and better error reporting for trait objects starting with `?Sized`. |
| 16 | +- [0e+10 is now a valid floating point literal][40589] |
| 17 | +- [Now warns if you bind a lifetime parameter to 'static][40734] |
| 18 | +- [Tuples, Enum variant fields, and structs with no `repr` attribute or with |
| 19 | + `#[repr(Rust)]` are reordered to minimize padding and produce a smaller |
| 20 | + representation in some cases.][40377] |
| 21 | + |
| 22 | +Compiler |
| 23 | +-------- |
| 24 | + |
| 25 | +- [rustc can now emit mir with `--emit mir`][39891] |
| 26 | +- [Improved LLVM IR for trivial functions][40367] |
| 27 | +- [Added explanation for E0090(Wrong number of lifetimes are supplied)][40723] |
| 28 | +- [rustc compilation is now 15%-20% faster][41469] Thanks to optimisation |
| 29 | + opportunities found through profiling |
| 30 | +- [Improved backtrace formatting when panicking][38165] |
| 31 | + |
| 32 | +Libraries |
| 33 | +--------- |
| 34 | + |
| 35 | +- [Specialized `Vec::from_iter` being passed `vec::IntoIter`][40731] if the |
| 36 | + iterator hasn't been advanced the original `Vec` is reassembled with no actual |
| 37 | + iteration or reallocation. |
| 38 | +- [Simplified HashMap Bucket interface][40561] provides performance |
| 39 | + improvements for iterating and cloning. |
| 40 | +- [Specialize Vec::from_elem to use calloc][40409] |
| 41 | +- [Fixed Race condition in fs::create_dir_all][39799] |
| 42 | +- [No longer caching stdio on Windows][40516] |
| 43 | +- [Optimized insertion sort in slice][40807] insertion sort in some cases |
| 44 | + 2.50%~ faster and in one case now 12.50% faster. |
| 45 | +- [Optimized `AtomicBool::fetch_nand`][41143] |
| 46 | + |
| 47 | +Stabilized APIs |
| 48 | +--------------- |
| 49 | + |
| 50 | +- [`Child::try_wait`] |
| 51 | +- [`HashMap::retain`] |
| 52 | +- [`HashSet::retain`] |
| 53 | +- [`PeekMut::pop`] |
| 54 | +- [`TcpStream::peek`] |
| 55 | +- [`UdpSocket::peek`] |
| 56 | +- [`UdpSocket::peek_from`] |
| 57 | + |
| 58 | +Cargo |
| 59 | +----- |
| 60 | + |
| 61 | +- [Added partial Pijul support][cargo/3842] Pijul is a version control system in Rust. |
| 62 | + You can now create new cargo projects with Pijul using `cargo new --vcs pijul` |
| 63 | +- [Now always emits build script warnings for crates that fail to build][cargo/3847] |
| 64 | +- [Added Android build support][cargo/3885] |
| 65 | +- [Added `--bins` and `--tests` flags][cargo/3901] now you can build all programs |
| 66 | + of a certain type, for example `cargo build --bins` will build all |
| 67 | + binaries. |
| 68 | +- [Added support for haiku][cargo/3952] |
| 69 | + |
| 70 | +Misc |
| 71 | +---- |
| 72 | + |
| 73 | +- [rustdoc can now use pulldown-cmark with the `--enable-commonmark` flag][40338] |
| 74 | +- [Added rust-winbg script for better debugging on Windows][39983] |
| 75 | +- [Rust now uses the official cross compiler for NetBSD][40612] |
| 76 | +- [rustdoc now accepts `#` at the start of files][40828] |
| 77 | +- [Fixed jemalloc support for musl][41168] |
| 78 | + |
| 79 | +Compatibility Notes |
| 80 | +------------------- |
| 81 | + |
| 82 | +- [Changes to how the `0` flag works in format!][40241] Padding zeroes are now |
| 83 | + always placed after the sign if it exists and before the digits. With the `#` |
| 84 | + flag the zeroes are placed after the prefix and before the digits. |
| 85 | +- [Due to the struct field optimisation][40377], using `transmute` on structs |
| 86 | + that have no `repr` attribute or `#[repr(Rust)]` will no longer work. This has |
| 87 | + always been undefined behavior, but is now more likely to break in practice. |
| 88 | +- [The refactor of trait object type parsing][40043] fixed a bug where `+` was |
| 89 | + receiving the wrong priority parsing things like `&for<'a> Tr<'a> + Send` as |
| 90 | + `&(for<'a> Tr<'a> + Send)` instead of `(&for<'a> Tr<'a>) + Send` |
| 91 | +- [Overlapping inherent `impl`s are now a hard error][40728] |
| 92 | +- [`PartialOrd` and `Ord` must agree on the ordering.][41270] |
| 93 | +- [`rustc main.rs -o out --emit=asm,llvm-ir`][41085] Now will output |
| 94 | + `out.asm` and `out.ll` instead of only one of the filetypes. |
| 95 | +- [ calling a function that returns `Self` will no longer work][41805] when |
| 96 | + the size of `Self` cannot be statically determined. |
| 97 | +- [rustc now builds with a "pthreads" flavour of MinGW for Windows GNU][40805] |
| 98 | + this has caused a few regressions namely: |
| 99 | + |
| 100 | + - Changed the link order of local static/dynamic libraries (respecting the |
| 101 | + order on given rather than having the compiler reorder). |
| 102 | + - Changed how MinGW is linked, native code linked to dynamic libraries |
| 103 | + may require manually linking to the gcc support library (for the native |
| 104 | + code itself) |
| 105 | + |
| 106 | +[38165]: https://github.com/rust-lang/rust/pull/38165 |
| 107 | +[39799]: https://github.com/rust-lang/rust/pull/39799 |
| 108 | +[39891]: https://github.com/rust-lang/rust/pull/39891 |
| 109 | +[39983]: https://github.com/rust-lang/rust/pull/39983 |
| 110 | +[40043]: https://github.com/rust-lang/rust/pull/40043 |
| 111 | +[40241]: https://github.com/rust-lang/rust/pull/40241 |
| 112 | +[40338]: https://github.com/rust-lang/rust/pull/40338 |
| 113 | +[40367]: https://github.com/rust-lang/rust/pull/40367 |
| 114 | +[40377]: https://github.com/rust-lang/rust/pull/40377 |
| 115 | +[40409]: https://github.com/rust-lang/rust/pull/40409 |
| 116 | +[40516]: https://github.com/rust-lang/rust/pull/40516 |
| 117 | +[40556]: https://github.com/rust-lang/rust/pull/40556 |
| 118 | +[40561]: https://github.com/rust-lang/rust/pull/40561 |
| 119 | +[40589]: https://github.com/rust-lang/rust/pull/40589 |
| 120 | +[40612]: https://github.com/rust-lang/rust/pull/40612 |
| 121 | +[40723]: https://github.com/rust-lang/rust/pull/40723 |
| 122 | +[40728]: https://github.com/rust-lang/rust/pull/40728 |
| 123 | +[40731]: https://github.com/rust-lang/rust/pull/40731 |
| 124 | +[40734]: https://github.com/rust-lang/rust/pull/40734 |
| 125 | +[40805]: https://github.com/rust-lang/rust/pull/40805 |
| 126 | +[40807]: https://github.com/rust-lang/rust/pull/40807 |
| 127 | +[40828]: https://github.com/rust-lang/rust/pull/40828 |
| 128 | +[40870]: https://github.com/rust-lang/rust/pull/40870 |
| 129 | +[41085]: https://github.com/rust-lang/rust/pull/41085 |
| 130 | +[41143]: https://github.com/rust-lang/rust/pull/41143 |
| 131 | +[41168]: https://github.com/rust-lang/rust/pull/41168 |
| 132 | +[41270]: https://github.com/rust-lang/rust/issues/41270 |
| 133 | +[41469]: https://github.com/rust-lang/rust/pull/41469 |
| 134 | +[41805]: https://github.com/rust-lang/rust/issues/41805 |
| 135 | +[RFC 1422]: https://github.com/rust-lang/rfcs/blob/master/text/1422-pub-restricted.md |
| 136 | +[RFC 1665]: https://github.com/rust-lang/rfcs/blob/master/text/1665-windows-subsystem.md |
| 137 | +[`Child::try_wait`]: https://doc.rust-lang.org/std/process/struct.Child.html#method.try_wait |
| 138 | +[`HashMap::retain`]: https://doc.rust-lang.org/std/collections/struct.HashMap.html#method.retain |
| 139 | +[`HashSet::retain`]: https://doc.rust-lang.org/std/collections/struct.HashSet.html#method.retain |
| 140 | +[`PeekMut::pop`]: https://doc.rust-lang.org/std/collections/binary_heap/struct.PeekMut.html#method.pop |
| 141 | +[`TcpStream::peek`]: https://doc.rust-lang.org/std/net/struct.TcpStream.html#method.peek |
| 142 | +[`UdpSocket::peek_from`]: https://doc.rust-lang.org/std/net/struct.UdpSocket.html#method.peek_from |
| 143 | +[`UdpSocket::peek`]: https://doc.rust-lang.org/std/net/struct.UdpSocket.html#method.peek |
| 144 | +[cargo/3842]: https://github.com/rust-lang/cargo/pull/3842 |
| 145 | +[cargo/3847]: https://github.com/rust-lang/cargo/pull/3847 |
| 146 | +[cargo/3885]: https://github.com/rust-lang/cargo/pull/3885 |
| 147 | +[cargo/3901]: https://github.com/rust-lang/cargo/pull/3901 |
| 148 | +[cargo/3952]: https://github.com/rust-lang/cargo/pull/3952 |
| 149 | + |
| 150 | + |
1 | 151 | Version 1.17.0 (2017-04-27)
|
2 | 152 | ===========================
|
3 | 153 |
|
|
0 commit comments