|
| 1 | +Version 1.60.0 (2022-04-07) |
| 2 | +========================== |
| 3 | + |
| 4 | +Language |
| 5 | +-------- |
| 6 | +- [Stabilize `#[cfg(panic = "...")]` for either `"unwind"` or `"abort"`.][93658] |
| 7 | +- [Stabilize `#[cfg(target_has_atomic = "...")]` for each integer size and `"ptr"`.][93824] |
| 8 | + |
| 9 | +Compiler |
| 10 | +-------- |
| 11 | +- [Enable combining `+crt-static` and `relocation-model=pic` on `x86_64-unknown-linux-gnu`][86374] |
| 12 | +- [Fixes wrong `unreachable_pub` lints on nested and glob public reexport][87487] |
| 13 | +- [Stabilize `-Z instrument-coverage` as `-C instrument-coverage`][90132] |
| 14 | +- [Stabilize `-Z print-link-args` as `--print link-args`][91606] |
| 15 | +- [Add new Tier 3 target `mips64-openwrt-linux-musl`\*][92300] |
| 16 | +- [Add new Tier 3 target `armv7-unknown-linux-uclibceabi` (softfloat)\*][92383] |
| 17 | +- [Fix invalid removal of newlines from doc comments][92357] |
| 18 | +- [Add kernel target for RustyHermit][92670] |
| 19 | +- [Deny mixing bin crate type with lib crate types][92933] |
| 20 | +- [Make rustc use `RUST_BACKTRACE=full` by default][93566] |
| 21 | +- [Upgrade to LLVM 14][93577] |
| 22 | + |
| 23 | +\* Refer to Rust's [platform support page][platform-support-doc] for more |
| 24 | + information on Rust's tiered platform support. |
| 25 | + |
| 26 | +Libraries |
| 27 | +--------- |
| 28 | +- [Guarantee call order for `sort_by_cached_key`][89621] |
| 29 | +- [Improve `Duration::try_from_secs_f32`/`f64` accuracy by directly processing exponent and mantissa][90247] |
| 30 | +- [Make `Instant::{duration_since, elapsed, sub}` saturating][89926] |
| 31 | +- [Remove non-monotonic clocks workarounds in `Instant::now`][89926] |
| 32 | +- [Make `BuildHasherDefault`, `iter::Empty` and `future::Pending` covariant][92630] |
| 33 | + |
| 34 | +Stabilized APIs |
| 35 | +--------------- |
| 36 | +- [`Arc::new_cyclic`][arc_new_cyclic] |
| 37 | +- [`Rc::new_cyclic`][rc_new_cyclic] |
| 38 | +- [`slice::EscapeAscii`][slice_escape_ascii] |
| 39 | +- [`<[u8]>::escape_ascii`][slice_u8_escape_ascii] |
| 40 | +- [`u8::escape_ascii`][u8_escape_ascii] |
| 41 | +- [`Vec::spare_capacity_mut`][vec_spare_capacity_mut] |
| 42 | +- [`MaybeUninit::assume_init_drop`][assume_init_drop] |
| 43 | +- [`MaybeUninit::assume_init_read`][assume_init_read] |
| 44 | +- [`i8::abs_diff`][i8_abs_diff] |
| 45 | +- [`i16::abs_diff`][i16_abs_diff] |
| 46 | +- [`i32::abs_diff`][i32_abs_diff] |
| 47 | +- [`i64::abs_diff`][i64_abs_diff] |
| 48 | +- [`i128::abs_diff`][i128_abs_diff] |
| 49 | +- [`isize::abs_diff`][isize_abs_diff] |
| 50 | +- [`u8::abs_diff`][u8_abs_diff] |
| 51 | +- [`u16::abs_diff`][u16_abs_diff] |
| 52 | +- [`u32::abs_diff`][u32_abs_diff] |
| 53 | +- [`u64::abs_diff`][u64_abs_diff] |
| 54 | +- [`u128::abs_diff`][u128_abs_diff] |
| 55 | +- [`usize::abs_diff`][usize_abs_diff] |
| 56 | +- [`Display for io::ErrorKind`][display_error_kind] |
| 57 | +- [`From<u8> for ExitCode`][from_u8_exit_code] |
| 58 | +- [`Not for !` (the "never" type)][not_never] |
| 59 | +- [_Op_`Assign<$t> for Wrapping<$t>`][wrapping_assign_ops] |
| 60 | +- [`arch::is_aarch64_feature_detected!`][is_aarch64_feature_detected] |
| 61 | + |
| 62 | +Cargo |
| 63 | +----- |
| 64 | +- [Port cargo from `toml-rs` to `toml_edit`][cargo/10086] |
| 65 | +- [Stabilize `-Ztimings` as `--timings`][cargo/10245] |
| 66 | +- [Stabilize namespaced and weak dependency features.][cargo/10269] |
| 67 | +- [Accept more `cargo:rustc-link-arg-*` types from build script output.][cargo/10274] |
| 68 | +- [cargo-new should not add ignore rule on Cargo.lock inside subdirs][cargo/10379] |
| 69 | + |
| 70 | +Misc |
| 71 | +---- |
| 72 | +- [Ship docs on Tier 2 platforms by reusing the closest Tier 1 platform docs][92800] |
| 73 | +- [Drop rustc-docs from complete profile][93742] |
| 74 | +- [bootstrap: tidy up flag handling for llvm build][93918] |
| 75 | + |
| 76 | +Compatibility Notes |
| 77 | +------------------- |
| 78 | +- [Remove compiler-rt linking hack on Android][83822] |
| 79 | +- [Mitigations for platforms with non-monotonic clocks have been removed from |
| 80 | + `Instant::now`][89926]. On platforms that don't provide monotonic clocks, an |
| 81 | + instant is not guaranteed to be greater than an earlier instant anymore. |
| 82 | +- [`Instant::{duration_since, elapsed, sub}` do not panic anymore on underflow, |
| 83 | + saturating to `0` instead][89926]. In the real world the panic happened mostly |
| 84 | + on platforms with buggy monotonic clock implementations rather than catching |
| 85 | + programming errors like reversing the start and end times. Such programming |
| 86 | + errors will now results in `0` rather than a panic. |
| 87 | +- In a future release we're planning to increase the baseline requirements for |
| 88 | + the Linux kernel to version 3.2, and for glibc to version 2.17. We'd love |
| 89 | + your feedback in [PR #95026][95026]. |
| 90 | + |
| 91 | +Internal Changes |
| 92 | +---------------- |
| 93 | + |
| 94 | +These changes provide no direct user facing benefits, but represent significant |
| 95 | +improvements to the internals and overall performance of rustc |
| 96 | +and related tools. |
| 97 | + |
| 98 | +- [Switch all libraries to the 2021 edition][92068] |
| 99 | + |
| 100 | +[83822]: https://github.com/rust-lang/rust/pull/83822 |
| 101 | +[86374]: https://github.com/rust-lang/rust/pull/86374 |
| 102 | +[87487]: https://github.com/rust-lang/rust/pull/87487 |
| 103 | +[89621]: https://github.com/rust-lang/rust/pull/89621 |
| 104 | +[89926]: https://github.com/rust-lang/rust/pull/89926 |
| 105 | +[90132]: https://github.com/rust-lang/rust/pull/90132 |
| 106 | +[90247]: https://github.com/rust-lang/rust/pull/90247 |
| 107 | +[91606]: https://github.com/rust-lang/rust/pull/91606 |
| 108 | +[92068]: https://github.com/rust-lang/rust/pull/92068 |
| 109 | +[92300]: https://github.com/rust-lang/rust/pull/92300 |
| 110 | +[92357]: https://github.com/rust-lang/rust/pull/92357 |
| 111 | +[92383]: https://github.com/rust-lang/rust/pull/92383 |
| 112 | +[92630]: https://github.com/rust-lang/rust/pull/92630 |
| 113 | +[92670]: https://github.com/rust-lang/rust/pull/92670 |
| 114 | +[92800]: https://github.com/rust-lang/rust/pull/92800 |
| 115 | +[92933]: https://github.com/rust-lang/rust/pull/92933 |
| 116 | +[93566]: https://github.com/rust-lang/rust/pull/93566 |
| 117 | +[93577]: https://github.com/rust-lang/rust/pull/93577 |
| 118 | +[93658]: https://github.com/rust-lang/rust/pull/93658 |
| 119 | +[93742]: https://github.com/rust-lang/rust/pull/93742 |
| 120 | +[93824]: https://github.com/rust-lang/rust/pull/93824 |
| 121 | +[93918]: https://github.com/rust-lang/rust/pull/93918 |
| 122 | +[95026]: https://github.com/rust-lang/rust/pull/95026 |
| 123 | + |
| 124 | +[cargo/10086]: https://github.com/rust-lang/cargo/pull/10086 |
| 125 | +[cargo/10245]: https://github.com/rust-lang/cargo/pull/10245 |
| 126 | +[cargo/10269]: https://github.com/rust-lang/cargo/pull/10269 |
| 127 | +[cargo/10274]: https://github.com/rust-lang/cargo/pull/10274 |
| 128 | +[cargo/10379]: https://github.com/rust-lang/cargo/pull/10379 |
| 129 | + |
| 130 | +[arc_new_cyclic]: https://doc.rust-lang.org/stable/std/sync/struct.Arc.html#method.new_cyclic |
| 131 | +[rc_new_cyclic]: https://doc.rust-lang.org/stable/std/rc/struct.Rc.html#method.new_cyclic |
| 132 | +[slice_escape_ascii]: https://doc.rust-lang.org/stable/std/slice/struct.EscapeAscii.html |
| 133 | +[slice_u8_escape_ascii]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.escape_ascii |
| 134 | +[u8_escape_ascii]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.escape_ascii |
| 135 | +[vec_spare_capacity_mut]: https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.spare_capacity_mut |
| 136 | +[assume_init_drop]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_drop |
| 137 | +[assume_init_read]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_read |
| 138 | +[i8_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i8.html#method.abs_diff |
| 139 | +[i16_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i16.html#method.abs_diff |
| 140 | +[i32_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i32.html#method.abs_diff |
| 141 | +[i64_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i64.html#method.abs_diff |
| 142 | +[i128_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i128.html#method.abs_diff |
| 143 | +[isize_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.isize.html#method.abs_diff |
| 144 | +[u8_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.abs_diff |
| 145 | +[u16_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u16.html#method.abs_diff |
| 146 | +[u32_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u32.html#method.abs_diff |
| 147 | +[u64_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u64.html#method.abs_diff |
| 148 | +[u128_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u128.html#method.abs_diff |
| 149 | +[usize_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.usize.html#method.abs_diff |
| 150 | +[display_error_kind]: https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#impl-Display |
| 151 | +[from_u8_exit_code]: https://doc.rust-lang.org/stable/std/process/struct.ExitCode.html#impl-From%3Cu8%3E |
| 152 | +[not_never]: https://doc.rust-lang.org/stable/std/primitive.never.html#impl-Not |
| 153 | +[wrapping_assign_ops]: https://doc.rust-lang.org/stable/std/num/struct.Wrapping.html#trait-implementations |
| 154 | +[is_aarch64_feature_detected]: https://doc.rust-lang.org/stable/std/arch/macro.is_aarch64_feature_detected.html |
| 155 | + |
1 | 156 | Version 1.59.0 (2022-02-24)
|
2 | 157 | ==========================
|
3 | 158 |
|
|
0 commit comments