|
| 1 | +Version 1.34.0 (2019-04-11) |
| 2 | +========================== |
| 3 | + |
| 4 | +Language |
| 5 | +-------- |
| 6 | +- [You can now use `#[deprecated = "reason"]`][58166] as a shorthand for |
| 7 | + `#[deprecated(note = "reason")]`. This was previously allowed by mistake |
| 8 | + but had no effect. |
| 9 | +- [You can now accept token streams in `#[attr()]`,`#[attr[]]`, and |
| 10 | + `#[attr{}]` procedural macros.][57367] |
| 11 | +- [You can now write `extern crate self as foo;`][57407] to import your |
| 12 | + crate's root into the extern prelude. |
| 13 | + |
| 14 | + |
| 15 | +Compiler |
| 16 | +-------- |
| 17 | +- [You can now target `riscv64imac-unknown-none-elf` and |
| 18 | + `riscv64gc-unknown-none-elf`.][58406] |
| 19 | +- [You can now enable linker plugin LTO optimisations with |
| 20 | + `-C linker-plugin-lto`.][58057] This allows rustc to compile your Rust code |
| 21 | + into LLVM bitcode allowing LLVM to perform LTO optimisations across C/C++ FFI |
| 22 | + boundaries. |
| 23 | +- [You can now target `powerpc64-unknown-freebsd`.][57809] |
| 24 | + |
| 25 | + |
| 26 | +Libraries |
| 27 | +--------- |
| 28 | +- [The trait bounds have been removed on some of `HashMap<K, V, S>`'s and |
| 29 | + `HashSet<T, S>`'s basic methods.][58370] Most notably you no longer require |
| 30 | + the `Hash` trait to create an iterator. |
| 31 | +- [The `Ord` trait bounds have been removed on some of `BinaryHeap<T>`'s basic |
| 32 | + methods.][58421] Most notably you no longer require the `Ord` trait to create |
| 33 | + an iterator. |
| 34 | +- [The methods `overflowing_neg` and `wrapping_neg` are now `const` functions |
| 35 | + for all numeric types.][58044] |
| 36 | +- [Indexing a `str` is now generic over all types that |
| 37 | + implement `SliceIndex<str>`.][57604] |
| 38 | +- [`str::trim`, `str::trim_matches`, `str::trim_{start, end}`, and |
| 39 | + `str::trim_{start, end}_matches` are now `#[must_use]`][57106] and will |
| 40 | + produce a warning if their returning type is unused. |
| 41 | +- [The methods `checked_pow`, `saturating_pow`, `wrapping_pow`, and |
| 42 | + `overflowing_pow` are now available for all numeric types.][57873] These are |
| 43 | + equivalvent to methods such as `wrapping_add` for the `pow` operation. |
| 44 | + |
| 45 | + |
| 46 | +Stabilized APIs |
| 47 | +--------------- |
| 48 | + |
| 49 | +#### std & core |
| 50 | +* [`Any::type_id`] |
| 51 | +* [`Error::type_id`] |
| 52 | +* [`atomic::AtomicI16`] |
| 53 | +* [`atomic::AtomicI32`] |
| 54 | +* [`atomic::AtomicI64`] |
| 55 | +* [`atomic::AtomicI8`] |
| 56 | +* [`atomic::AtomicU16`] |
| 57 | +* [`atomic::AtomicU32`] |
| 58 | +* [`atomic::AtomicU64`] |
| 59 | +* [`atomic::AtomicU8`] |
| 60 | +* [`convert::Infallible`] |
| 61 | +* [`convert::TryFrom`] |
| 62 | +* [`convert::TryInto`] |
| 63 | +* [`iter::from_fn`] |
| 64 | +* [`iter::successors`] |
| 65 | +* [`num::NonZeroI128`] |
| 66 | +* [`num::NonZeroI16`] |
| 67 | +* [`num::NonZeroI32`] |
| 68 | +* [`num::NonZeroI64`] |
| 69 | +* [`num::NonZeroI8`] |
| 70 | +* [`num::NonZeroIsize`] |
| 71 | +* [`slice::sort_by_cached_key`] |
| 72 | +* [`str::escape_debug`] |
| 73 | +* [`str::escape_default`] |
| 74 | +* [`str::escape_unicode`] |
| 75 | +* [`str::split_ascii_whitespace`] |
| 76 | + |
| 77 | +#### std |
| 78 | +* [`Instant::checked_add`] |
| 79 | +* [`Instant::checked_sub`] |
| 80 | +* [`SystemTime::checked_add`] |
| 81 | +* [`SystemTime::checked_sub`] |
| 82 | + |
| 83 | +Cargo |
| 84 | +----- |
| 85 | +- [You can now use alternative registries to crates.io.][cargo/6654] |
| 86 | + |
| 87 | +Misc |
| 88 | +---- |
| 89 | +- [You can now use the `?` operator in your documentation tests without manually |
| 90 | + adding `fn main() -> Result<(), _> {}`.][56470] |
| 91 | + |
| 92 | +Compatibility Notes |
| 93 | +------------------- |
| 94 | +- [`Command::before_exec` is now deprecated in favor of the |
| 95 | + unsafe method `Command::pre_exec`.][58059] |
| 96 | +- [Use of `ATOMIC_{BOOL, ISIZE, USIZE}_INIT` is now deprecated.][57425] As you |
| 97 | + can now use `const` functions in `static` variables. |
| 98 | + |
| 99 | +[58370]: https://github.com/rust-lang/rust/pull/58370/ |
| 100 | +[58406]: https://github.com/rust-lang/rust/pull/58406/ |
| 101 | +[58421]: https://github.com/rust-lang/rust/pull/58421/ |
| 102 | +[58166]: https://github.com/rust-lang/rust/pull/58166/ |
| 103 | +[58044]: https://github.com/rust-lang/rust/pull/58044/ |
| 104 | +[58057]: https://github.com/rust-lang/rust/pull/58057/ |
| 105 | +[58059]: https://github.com/rust-lang/rust/pull/58059/ |
| 106 | +[57809]: https://github.com/rust-lang/rust/pull/57809/ |
| 107 | +[57873]: https://github.com/rust-lang/rust/pull/57873/ |
| 108 | +[57604]: https://github.com/rust-lang/rust/pull/57604/ |
| 109 | +[57367]: https://github.com/rust-lang/rust/pull/57367/ |
| 110 | +[57407]: https://github.com/rust-lang/rust/pull/57407/ |
| 111 | +[57425]: https://github.com/rust-lang/rust/pull/57425/ |
| 112 | +[57106]: https://github.com/rust-lang/rust/pull/57106/ |
| 113 | +[56470]: https://github.com/rust-lang/rust/pull/56470/ |
| 114 | +[cargo/6654]: https://github.com/rust-lang/cargo/pull/6654/ |
| 115 | +[`Any::type_id`]: https://doc.rust-lang.org/std/any/trait.Any.html#tymethod.type_id |
| 116 | +[`Error::type_id`]: https://doc.rust-lang.org/std/error/trait.Error.html#tymethod.type_id |
| 117 | +[`atomic::AtomicI16`]: https://doc.rust-lang.org/std/atomic/struct.AtomicI16.html |
| 118 | +[`atomic::AtomicI32`]: https://doc.rust-lang.org/std/atomic/struct.AtomicI32.html |
| 119 | +[`atomic::AtomicI64`]: https://doc.rust-lang.org/std/atomic/struct.AtomicI64.html |
| 120 | +[`atomic::AtomicI8`]: https://doc.rust-lang.org/std/atomic/struct.AtomicI8.html |
| 121 | +[`atomic::AtomicU16`]: https://doc.rust-lang.org/std/atomic/struct.AtomicU16.html |
| 122 | +[`atomic::AtomicU32`]: https://doc.rust-lang.org/std/atomic/struct.AtomicU32.html |
| 123 | +[`atomic::AtomicU64`]: https://doc.rust-lang.org/std/atomic/struct.AtomicU64.html |
| 124 | +[`atomic::AtomicU8`]: https://doc.rust-lang.org/std/atomic/struct.AtomicU8.html |
| 125 | +[`convert::Infallible`]: https://doc.rust-lang.org/std/convert/enum.Infallible.html |
| 126 | +[`convert::TryFrom`]: https://doc.rust-lang.org/std/convert/trait.TryFrom.html |
| 127 | +[`convert::TryInto`]: https://doc.rust-lang.org/std/convert/trait.TryInto.html |
| 128 | +[`iter::from_fn`]: https://doc.rust-lang.org/std/iter/fn.from_fn.html |
| 129 | +[`iter::successors`]: https://doc.rust-lang.org/std/iter/fn.successors.html |
| 130 | +[`num::NonZeroI128`]: https://doc.rust-lang.org/std/num/struct.NonZeroI128.html |
| 131 | +[`num::NonZeroI16`]: https://doc.rust-lang.org/std/num/struct.NonZeroI16.html |
| 132 | +[`num::NonZeroI32`]: https://doc.rust-lang.org/std/num/struct.NonZeroI32.html |
| 133 | +[`num::NonZeroI64`]: https://doc.rust-lang.org/std/num/struct.NonZeroI64.html |
| 134 | +[`num::NonZeroI8`]: https://doc.rust-lang.org/std/num/struct.NonZeroI8.html |
| 135 | +[`num::NonZeroIsize`]: https://doc.rust-lang.org/std/num/struct.NonZeroIsize.html |
| 136 | +[`slice::sort_by_cached_key`]: https://doc.rust-lang.org/std/slice/fn.sort_by_cached_key |
| 137 | +[`str::escape_debug`]: https://doc.rust-lang.org/std/primitive.str.html#method.escape_debug |
| 138 | +[`str::escape_default`]: https://doc.rust-lang.org/std/primitive.str.html#method.escape_default |
| 139 | +[`str::escape_unicode`]: https://doc.rust-lang.org/std/primitive.str.html#method.escape_unicode |
| 140 | +[`str::split_ascii_whitespace`]: https://doc.rust-lang.org/std/primitive.str.html#method.split_ascii_whitespace |
| 141 | +[`Instant::checked_add`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.checked_add |
| 142 | +[`Instant::checked_sub`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.checked_sub |
| 143 | +[`SystemTime::checked_add`]: https://doc.rust-lang.org/std/time/struct.SystemTime.html#method.checked_add |
| 144 | +[`SystemTime::checked_sub`]: https://doc.rust-lang.org/std/time/struct.SystemTime.html#method.checked_sub |
| 145 | + |
| 146 | + |
1 | 147 | Version 1.33.0 (2019-02-28)
|
2 | 148 | ==========================
|
3 | 149 |
|
@@ -99,6 +245,8 @@ Stabilized APIs
|
99 | 245 |
|
100 | 246 | Cargo
|
101 | 247 | -----
|
| 248 | +- [You can now publish crates that require a feature flag to compile with |
| 249 | + `cargo publish --features` or `cargo publish --all-features`.][cargo/6453] |
102 | 250 | - [Cargo should now rebuild a crate if a file was modified during the initial
|
103 | 251 | build.][cargo/6484]
|
104 | 252 |
|
@@ -135,6 +283,7 @@ Compatibility Notes
|
135 | 283 | [57535]: https://github.com/rust-lang/rust/pull/57535/
|
136 | 284 | [57566]: https://github.com/rust-lang/rust/pull/57566/
|
137 | 285 | [57615]: https://github.com/rust-lang/rust/pull/57615/
|
| 286 | +[cargo/6453]: https://github.com/rust-lang/cargo/pull/6453/ |
138 | 287 | [cargo/6484]: https://github.com/rust-lang/cargo/pull/6484/
|
139 | 288 | [`unix::FileExt::read_exact_at`]: https://doc.rust-lang.org/std/os/unix/fs/trait.FileExt.html#method.read_exact_at
|
140 | 289 | [`unix::FileExt::write_all_at`]: https://doc.rust-lang.org/std/os/unix/fs/trait.FileExt.html#method.write_all_at
|
|
0 commit comments