|
| 1 | +Version 1.39.0 (2019-11-07) |
| 2 | +=========================== |
| 3 | + |
| 4 | +Language |
| 5 | +-------- |
| 6 | +- [You can now create `async` functions and blocks with `async fn`, `async move {}`, and |
| 7 | + `async {}` respectively, and you can now call `.await` on async expressions.][63209] |
| 8 | +- [You can now use certain attributes on function, closure, and function pointer |
| 9 | + parameters.][64010] These attributes include `cfg`, `cfg_attr`, `allow`, `warn`, |
| 10 | + `deny`, `forbid` as well as inert helper attributes used by procedural macro |
| 11 | + attributes applied to items. e.g. |
| 12 | + ```rust |
| 13 | + fn len( |
| 14 | + #[cfg(windows)] slice: &[u16], |
| 15 | + #[cfg(not(windows))] slice: &[u8], |
| 16 | + ) -> usize { |
| 17 | + slice.len() |
| 18 | + } |
| 19 | + ``` |
| 20 | +- [You can now take shared references to bind-by-move patterns in the `if` guards |
| 21 | + of `match` arms.][63118] e.g. |
| 22 | + ```rust |
| 23 | + fn main() { |
| 24 | + let array: Box<[u8; 4]> = Box::new([1, 2, 3, 4]); |
| 25 | + |
| 26 | + match array { |
| 27 | + nums |
| 28 | + // ---- `nums` is bound by move. |
| 29 | + if nums.iter().sum::<u8>() == 10 |
| 30 | + // ^------ `.iter()` implicitly takes a reference to `nums`. |
| 31 | + => { |
| 32 | + drop(nums); |
| 33 | + // ----------- Legal as `nums` was bound by move and so we have ownership. |
| 34 | + } |
| 35 | + _ => unreachable!(), |
| 36 | + } |
| 37 | + } |
| 38 | + ``` |
| 39 | + |
| 40 | + |
| 41 | + |
| 42 | +Compiler |
| 43 | +-------- |
| 44 | +- [Added tier 3\* support for the `i686-unknown-uefi` target.][64334] |
| 45 | +- [Added tier 3 support for the `sparc64-unknown-openbsd` target.][63595] |
| 46 | +- [rustc will now trim code snippets in diagnostics to fit in your terminal.][63402] |
| 47 | + **Note** Cargo currently doesn't use this feature. Refer to |
| 48 | + [cargo#7315][cargo/7315] to track this feature's progress. |
| 49 | +- [You can now pass `--show-output` argument to test binaries to print the |
| 50 | + output of successful tests.][62600] |
| 51 | + |
| 52 | + |
| 53 | +\* Refer to Rust's [platform support page][forge-platform-support] for more |
| 54 | +information on Rust's tiered platform support. |
| 55 | + |
| 56 | +Libraries |
| 57 | +--------- |
| 58 | +- [`Vec::new` and `String::new` are now `const` functions.][64028] |
| 59 | +- [`LinkedList::new` is now a `const` function.][63684] |
| 60 | +- [`str::len`, `[T]::len` and `str::as_bytes` are now `const` functions.][63770] |
| 61 | +- [The `abs`, `wrapping_abs`, and `overflowing_abs` numeric functions are |
| 62 | + now `const`.][63786] |
| 63 | + |
| 64 | +Stabilized APIs |
| 65 | +--------------- |
| 66 | +- [`Pin::into_inner`] |
| 67 | +- [`Instant::checked_duration_since`] |
| 68 | +- [`Instant::saturating_duration_since`] |
| 69 | + |
| 70 | +Cargo |
| 71 | +----- |
| 72 | +- [You can now publish git dependencies if supplied with a `version`.][cargo/7237] |
| 73 | +- [The `--all` flag has been renamed to `--workspace`.][cargo/7241] Using |
| 74 | + `--all` is now deprecated. |
| 75 | + |
| 76 | +Misc |
| 77 | +---- |
| 78 | +- [You can now pass `-Clinker` to rustdoc to control the linker used |
| 79 | + for compiling doctests.][63834] |
| 80 | + |
| 81 | +Compatibility Notes |
| 82 | +------------------- |
| 83 | +- [Code that was previously accepted by the old borrow checker, but rejected by |
| 84 | + the NLL borrow checker is now a hard error in Rust 2018.][63565] This was |
| 85 | + previously a warning, and will also become a hard error in the Rust 2015 |
| 86 | + edition in the 1.40.0 release. |
| 87 | +- [`rustdoc` now requires `rustc` to be installed and in the same directory to |
| 88 | + run tests.][63827] This should improve performance when running a large |
| 89 | + amount of doctests. |
| 90 | +- [The `try!` macro will now issue a deprecation warning.][62672] It is |
| 91 | + recommended to use the `?` operator instead. |
| 92 | +- [`asinh(-0.0)` now correctly returns `-0.0`.][63698] Previously this |
| 93 | + returned `0.0`. |
| 94 | + |
| 95 | +[62600]: https://github.com/rust-lang/rust/pull/62600/ |
| 96 | +[62672]: https://github.com/rust-lang/rust/pull/62672/ |
| 97 | +[63118]: https://github.com/rust-lang/rust/pull/63118/ |
| 98 | +[63209]: https://github.com/rust-lang/rust/pull/63209/ |
| 99 | +[63402]: https://github.com/rust-lang/rust/pull/63402/ |
| 100 | +[63565]: https://github.com/rust-lang/rust/pull/63565/ |
| 101 | +[63595]: https://github.com/rust-lang/rust/pull/63595/ |
| 102 | +[63684]: https://github.com/rust-lang/rust/pull/63684/ |
| 103 | +[63698]: https://github.com/rust-lang/rust/pull/63698/ |
| 104 | +[63770]: https://github.com/rust-lang/rust/pull/63770/ |
| 105 | +[63786]: https://github.com/rust-lang/rust/pull/63786/ |
| 106 | +[63827]: https://github.com/rust-lang/rust/pull/63827/ |
| 107 | +[63834]: https://github.com/rust-lang/rust/pull/63834/ |
| 108 | +[63927]: https://github.com/rust-lang/rust/pull/63927/ |
| 109 | +[63933]: https://github.com/rust-lang/rust/pull/63933/ |
| 110 | +[63934]: https://github.com/rust-lang/rust/pull/63934/ |
| 111 | +[63938]: https://github.com/rust-lang/rust/pull/63938/ |
| 112 | +[63940]: https://github.com/rust-lang/rust/pull/63940/ |
| 113 | +[63941]: https://github.com/rust-lang/rust/pull/63941/ |
| 114 | +[63945]: https://github.com/rust-lang/rust/pull/63945/ |
| 115 | +[64010]: https://github.com/rust-lang/rust/pull/64010/ |
| 116 | +[64028]: https://github.com/rust-lang/rust/pull/64028/ |
| 117 | +[64334]: https://github.com/rust-lang/rust/pull/64334/ |
| 118 | +[cargo/7237]: https://github.com/rust-lang/cargo/pull/7237/ |
| 119 | +[cargo/7241]: https://github.com/rust-lang/cargo/pull/7241/ |
| 120 | +[cargo/7315]: https://github.com/rust-lang/cargo/pull/7315/ |
| 121 | +[`Pin::into_inner`]: https://doc.rust-lang.org/std/pin/struct.Pin.html#method.into_inner |
| 122 | +[`Instant::checked_duration_since`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.checked_duration_since |
| 123 | +[`Instant::saturating_duration_since`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.saturating_duration_since |
| 124 | + |
1 | 125 | Version 1.38.0 (2019-09-26)
|
2 | 126 | ==========================
|
3 | 127 |
|
|
0 commit comments