|
| 1 | +Version 1.6.0 (2016-01-21) |
| 2 | +========================== |
| 3 | + |
| 4 | +Language |
| 5 | +-------- |
| 6 | + |
| 7 | +* The `#![no_std]` attribute causes a crate to not be linked to the |
| 8 | + standard library, but only the [core library][1.6co], as described |
| 9 | + in [RFC 1184]. The core library defines common types and traits but |
| 10 | + has no platform dependencies whatsoever, and is the basis for Rust |
| 11 | + software in environments that cannot support a full port of the |
| 12 | + standard library, such as operating systems. Most of the core |
| 13 | + library is now stable. |
| 14 | + |
| 15 | +Libraries |
| 16 | +--------- |
| 17 | + |
| 18 | +* Stabilized APIs: |
| 19 | + [`Read::read_exact`], [`ErrorKind::UnexpectedEof`] (renamed from |
| 20 | + `UnexpectedEOF`), [`fs::DirBuilder`], [`fs::DirBuilder::new`], |
| 21 | + [`fs::DirBuilder::recursive`], [`fs::DirBuilder::create`], |
| 22 | + [`os::unix::fs::DirBuilderExt`], |
| 23 | + [`os::unix::fs::DirBuilderExt::mode`], [`vec::Drain`], |
| 24 | + [`vec::Vec::drain`], [`string::Drain`], [`string::String::drain`], |
| 25 | + [`vec_deque::Drain`], [`vec_deque::VecDeque::drain`], |
| 26 | + [`collections::hash_map::Drain`], |
| 27 | + [`collections::hash_map::HashMap::drain`], |
| 28 | + [`collections::hash_set::Drain`], |
| 29 | + [`collections::hash_set::HashSet::drain`], |
| 30 | + [`collections::binary_heap::Drain`], |
| 31 | + [`collections::binary_heap::BinaryHeap::drain`], |
| 32 | + [`Vec::extend_from_slice`] (renamed from `push_all`), |
| 33 | + [`Mutex::get_mut`], [`Mutex::into_inner`], [`RwLock::get_mut`], |
| 34 | + [`RwLock::into_inner`], [`Iterator::min_by_key`] (renamed from |
| 35 | + `min_by`), [`Iterator::max_by_key`] (renamed from `max_by`). |
| 36 | +* The [core library][1.6co] is stable, as are most of its APIs. |
| 37 | +* [The `assert_eq!` macro supports arguments that don't implement |
| 38 | + `Sized`][1.6ae], such as arrays. In this way it behaves more like |
| 39 | + `assert!`. |
| 40 | +* Several timer functions that take duration in milliseconds [are |
| 41 | + deprecated in favor of those that take `Duration`][1.6ms]. These |
| 42 | + include `Condvar::wait_timeout_ms`, `thread::sleep_ms`, and |
| 43 | + `thread_park_timeout_ms`. |
| 44 | +* The algorithm by which `Vec` reserves additional elements was |
| 45 | + [tweaked to not allocate excessive space][1.6a] while still growing |
| 46 | + exponentially. |
| 47 | +* `From` conversions are [implemented from integers to floats][1.6f] |
| 48 | + in cases where the conversion is lossless. Thus they are not |
| 49 | + implemented for 32-bit ints to `f32`, nor for 64-bit ints to `f32` |
| 50 | + or `f64`. They are also not implemented for `isize` and `usize` |
| 51 | + because the implementations would be platform-specific. `From` is |
| 52 | + also implemented from `f32` to `f64`. |
| 53 | +* `From<&Path>` and `From<PathBuf>` are implemented for `Cow<Path>`. |
| 54 | +* `From<T>` is implemented for `Box<T>`, `Rc<T>` and `Arc<T>`. |
| 55 | +* `IntoIterator` is implemented for `&PathBuf` and `&Path`. |
| 56 | +* [`BinaryHeap` was refactored][1.6bh] for modest performance |
| 57 | + improvements. |
| 58 | +* Sorting slices that are already sorted [is 50% faster in some |
| 59 | + cases][1.6s]. |
| 60 | + |
| 61 | +Cargo |
| 62 | +----- |
| 63 | + |
| 64 | +* Cargo will look in `$CARGO_HOME/bin` for subcommands [by default][1.6c]. |
| 65 | +* Cargo build scripts can specify their dependencies by emitting the |
| 66 | + [`rerun-if-changed`][1.6rr] key. |
| 67 | +* crates.io will reject publication of crates with dependencies that |
| 68 | + have a wildcard version constraint. Crates with wildcard |
| 69 | + dependencies were seen to cause a variety of problems, as described |
| 70 | + in [RFC 1241]. Disallowing them will create more predictable |
| 71 | + development experience and a more stable ecosystem. Since 1.5 |
| 72 | + publication of such crates has emitted a warning. |
| 73 | +* `cargo clean` [accepts a `--release` flag][1.6cc] to clean the |
| 74 | + release folder. A variety of artifacts that Cargo failed to clean |
| 75 | + are now correctly deleted. |
| 76 | + |
| 77 | +Misc |
| 78 | +---- |
| 79 | + |
| 80 | +* The `unreachable_code` lint [warns when a function call's argument |
| 81 | + diverges][1.6dv]. |
| 82 | +* The parser indicates [failures that may be caused by |
| 83 | + confusingly-similar Unicode characters][1.6uc] |
| 84 | +* Certain macro errors [are reported at definition time][1.6m], not |
| 85 | + expansion. |
| 86 | + |
| 87 | +Compatibility Notes |
| 88 | +------------------- |
| 89 | + |
| 90 | +* The compiler no longer makes use of the [`RUST_PATH`][1.6rp] |
| 91 | + environment variable when locating crates. This was a pre-cargo |
| 92 | + feature for integrating with the package manager that was |
| 93 | + accidentally never removed. |
| 94 | +* [A number of bugs were fixed in the privacy checker][1.6p] that |
| 95 | + could cause previously-accepted code to break. |
| 96 | +* [Modules and unit/tuple structs may not share the same name][1.6ts]. |
| 97 | +* [Bugs in pattern matching unit structs were fixed][1.6us]: the tuple |
| 98 | + struct pattern syntax (`Foo(..)`) no longer can be used with unit |
| 99 | + structs; patterns that share the same name as a const are now an |
| 100 | + error. |
| 101 | +* A bug was fixed that causes [rustc not to apply default type |
| 102 | + parameters][1.6xc] when resolving certain method implementations of |
| 103 | + traits defined in other crates. |
| 104 | + |
| 105 | +[1.6a]: https://github.com/rust-lang/rust/pull/29454 |
| 106 | +[1.6ae]: https://github.com/rust-lang/rust/pull/29770 |
| 107 | +[1.6bh]: https://github.com/rust-lang/rust/pull/29811 |
| 108 | +[1.6c]: https://github.com/rust-lang/cargo/pull/2192 |
| 109 | +[1.6cc]: https://github.com/rust-lang/cargo/pull/2131 |
| 110 | +[1.6co]: http://doc.rust-lang.org/beta/core/index.html |
| 111 | +[1.6dv]: https://github.com/rust-lang/rust/pull/30000 |
| 112 | +[1.6f]: https://github.com/rust-lang/rust/pull/29129 |
| 113 | +[1.6m]: https://github.com/rust-lang/rust/pull/29828 |
| 114 | +[1.6ms]: https://github.com/rust-lang/rust/pull/29604 |
| 115 | +[1.6p]: https://github.com/rust-lang/rust/pull/29726 |
| 116 | +[1.6rp]: https://github.com/rust-lang/rust/pull/30034 |
| 117 | +[1.6rr]: https://github.com/rust-lang/cargo/pull/2134 |
| 118 | +[1.6s]: https://github.com/rust-lang/rust/pull/29675 |
| 119 | +[1.6ts]: https://github.com/rust-lang/rust/issues/21546 |
| 120 | +[1.6uc]: https://github.com/rust-lang/rust/pull/29837 |
| 121 | +[1.6us]: https://github.com/rust-lang/rust/pull/29383 |
| 122 | +[1.6xc]: https://github.com/rust-lang/rust/issues/30123 |
| 123 | +[RFC 1184]: https://github.com/rust-lang/rfcs/blob/master/text/1184-stabilize-no_std.md |
| 124 | +[RFC 1241]: https://github.com/rust-lang/rfcs/blob/master/text/1241-no-wildcard-deps.md |
| 125 | +[`ErrorKind::UnexpectedEof`]: http://doc.rust-lang.org/nightly/std/io/enum.ErrorKind.html#variant.UnexpectedEof |
| 126 | +[`Iterator::max_by_key`]: http://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.max_by_key |
| 127 | +[`Iterator::min_by_key`]: http://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.min_by_key |
| 128 | +[`Mutex::get_mut`]: http://doc.rust-lang.org/nightly/std/sync/struct.Mutex.html#method.get_mut |
| 129 | +[`Mutex::into_inner`]: http://doc.rust-lang.org/nightly/std/sync/struct.Mutex.html#method.into_inner |
| 130 | +[`Read::read_exact`]: http://doc.rust-lang.org/nightly/std/io/trait.Read.html#method.read_exact |
| 131 | +[`RwLock::get_mut`]: http://doc.rust-lang.org/nightly/std/sync/struct.RwLock.html#method.get_mut |
| 132 | +[`RwLock::into_inner`]: http://doc.rust-lang.org/nightly/std/sync/struct.RwLock.html#method.into_inner |
| 133 | +[`Vec::extend_from_slice`]: http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html#method.extend_from_slice |
| 134 | +[`collections::binary_heap::BinaryHeap::drain`]: http://doc.rust-lang.org/nightly/std/collections/binary_heap/struct.BinaryHeap.html#method.drain |
| 135 | +[`collections::binary_heap::Drain`]: http://doc.rust-lang.org/nightly/std/collections/binary_heap/struct.Drain.html |
| 136 | +[`collections::hash_map::Drain`]: http://doc.rust-lang.org/nightly/std/collections/hash_map/struct.Drain.html |
| 137 | +[`collections::hash_map::HashMap::drain`]: http://doc.rust-lang.org/nightly/std/collections/hash_map/struct.HashMap.html#method.drain |
| 138 | +[`collections::hash_set::Drain`]: http://doc.rust-lang.org/nightly/std/collections/hash_set/struct.Drain.html |
| 139 | +[`collections::hash_set::HashSet::drain`]: http://doc.rust-lang.org/nightly/std/collections/hash_set/struct.HashSet.html#method.drain |
| 140 | +[`fs::DirBuilder::create`]: http://doc.rust-lang.org/nightly/std/fs/struct.DirBuilder.html#method.create |
| 141 | +[`fs::DirBuilder::new`]: http://doc.rust-lang.org/nightly/std/fs/struct.DirBuilder.html#method.new |
| 142 | +[`fs::DirBuilder::recursive`]: http://doc.rust-lang.org/nightly/std/fs/struct.DirBuilder.html#method.recursive |
| 143 | +[`fs::DirBuilder`]: http://doc.rust-lang.org/nightly/std/fs/struct.DirBuilder.html |
| 144 | +[`os::unix::fs::DirBuilderExt::mode`]: http://doc.rust-lang.org/nightly/std/os/unix/fs/trait.DirBuilderExt.html#tymethod.mode |
| 145 | +[`os::unix::fs::DirBuilderExt`]: http://doc.rust-lang.org/nightly/std/os/unix/fs/trait.DirBuilderExt.html |
| 146 | +[`string::Drain`]: http://doc.rust-lang.org/nightly/std/string/struct.Drain.html |
| 147 | +[`string::String::drain`]: http://doc.rust-lang.org/nightly/std/string/struct.String.html#method.drain |
| 148 | +[`vec::Drain`]: http://doc.rust-lang.org/nightly/std/vec/struct.Drain.html |
| 149 | +[`vec::Vec::drain`]: http://doc.rust-lang.org/nightly/std/vec/struct.Vec.html#method.drain |
| 150 | +[`vec_deque::Drain`]: http://doc.rust-lang.org/nightly/std/collections/vec_deque/struct.Drain.html |
| 151 | +[`vec_deque::VecDeque::drain`]: http://doc.rust-lang.org/nightly/std/collections/vec_deque/struct.VecDeque.html#method.drain |
| 152 | + |
| 153 | + |
1 | 154 | Version 1.5.0 (2015-12-10)
|
2 | 155 | ==========================
|
3 | 156 |
|
|
0 commit comments