|
| 1 | +Version 1.61.0 (2022-05-19) |
| 2 | +========================== |
| 3 | + |
| 4 | +Language |
| 5 | +-------- |
| 6 | + |
| 7 | +- [`const fn` signatures can now include generic trait bounds][93827] |
| 8 | +- [`const fn` signatures can now use `impl Trait` in argument and return position][93827] |
| 9 | +- [Function pointers can now be created, cast, and passed around in a `const fn`][93827] |
| 10 | +- [Recursive calls can now set the value of a function's opaque `impl Trait` return type][94081] |
| 11 | + |
| 12 | +Compiler |
| 13 | +-------- |
| 14 | + |
| 15 | +- [Linking modifier syntax in `#[link]` attributes and on the command line, as well as the `whole-archive` modifier specifically, are now supported][93901] |
| 16 | +- [Update to LLVM 14.0.0][95247] |
| 17 | +- [The `char` type is now described as UTF-8 (`DW_ATE_UTF`) in DWARF debuginfo][89887] |
| 18 | +- The [`#[target_feature]`][target_feature] attribute [can now be used with aarch64 features][90621] |
| 19 | +- [`#[target_feature = "adx"]` is now stable][93745] |
| 20 | +- [Catching a second unwind from FFI code while cleaning up from a Rust panic now causes the process to abort][92911] |
| 21 | + |
| 22 | +Libraries |
| 23 | +--------- |
| 24 | + |
| 25 | +- [`ManuallyDrop<T>` is now documented to have the same layout as `T`][88375] |
| 26 | +- [Windows paths longer than 260 chars are now supported in `process::Command` without needing explicit canonoicalization][92519] |
| 27 | +- [`#[ignore = "…"]` messages are printed when running tests][92714] |
| 28 | +- [Consistently present absent stdio handles on Windows as NULL handles][93263] |
| 29 | +- [Make `std::io::stdio::lock()` return `'static` handles][93965] |
| 30 | +- [`Vec::from_raw_parts` is now less restrictive about its inputs][95016] |
| 31 | +- [Use cgroup quotas for calculating `available_parallelism` on Linux][92697] |
| 32 | + |
| 33 | +Stabilized APIs |
| 34 | +--------------- |
| 35 | + |
| 36 | +- [`From<&[T; N]>` for `Vec<T>`][95098] |
| 37 | +- [`From<&mut [T; N]>` for `Vec<T>`][95098] |
| 38 | +- [`Pin::static_mut`][93580] |
| 39 | +- [`Pin::static_ref`][93580] |
| 40 | +- [`Vec::retain_mut`][95491] |
| 41 | +- [`VecDeque::retain_mut`][95491] |
| 42 | +- [`Write` for `Cursor<[u8; N]>`][92663] |
| 43 | +- [`std::os::unix::net::SocketAddr::from_pathname`][94356] |
| 44 | +- [`std::process::ExitCode`][93840] |
| 45 | +- [`std::process::Termination`][93840] |
| 46 | +- [`std::thread::JoinHandle::is_finished`][95130] |
| 47 | + |
| 48 | +These APIs are now usable in const contexts: |
| 49 | + |
| 50 | +- [`*const T::offset` and `*mut T::offset`][93957] |
| 51 | +- [`*const T::wrapping_offset` and `*mut T::wrapping_offset`][93957] |
| 52 | +- [`*const T::add` and `*mut T::add`][93957] |
| 53 | +- [`*const T::sub` and `*mut T::sub`][93957] |
| 54 | +- [`*const T::wrapping_add` and `*mut T::wrapping_add`][93957] |
| 55 | +- [`*const T::wrapping_sub` and `*mut T::wrapping_sub`][93957] |
| 56 | +- [`[T]::as_mut_ptr`][93957] |
| 57 | +- [`[T]::as_ptr_range`][93957] |
| 58 | +- [`[T]::as_mut_ptr_range`][93957] |
| 59 | + |
| 60 | +Cargo |
| 61 | +----- |
| 62 | + |
| 63 | +No feature changes, but see compatibility notes. |
| 64 | + |
| 65 | +Compatibility Notes |
| 66 | +------------------- |
| 67 | + |
| 68 | +- [Disable `#[thread_local]` support on i686-pc-windows-msvc][95430] |
| 69 | +- [Proc macros no longer see `ident` matchers wrapped in groups][92472] |
| 70 | +- [The number of `#` in `r#` raw string literals is now required to be less than 256][95251] |
| 71 | +- [When checking that a dyn type satisfies a trait bound, supertrait bounds are now enforced][92285] |
| 72 | +- [`cargo vendor` now only accepts one value for each `--sync` flag][cargo/10448] |
| 73 | +- [`cfg` predicates in `all()` and `any()` are always evaluated to detect errors, instead of short-circuiting][94295] |
| 74 | +- [bootstrap: static-libstdcpp is now enabled by default, and can now be disabled when llvm-tools is enabled][94832] |
| 75 | + |
| 76 | +Internal Changes |
| 77 | +---------------- |
| 78 | + |
| 79 | +These changes provide no direct user facing benefits, but represent significant |
| 80 | +improvements to the internals and overall performance of rustc |
| 81 | +and related tools. |
| 82 | + |
| 83 | +- [debuginfo: Refactor debuginfo generation for types][94261] |
| 84 | +- [Remove the everybody loops pass][93913] |
| 85 | + |
| 86 | +[88375]: https://github.com/rust-lang/rust/pull/88375/ |
| 87 | +[89887]: https://github.com/rust-lang/rust/pull/89887/ |
| 88 | +[90621]: https://github.com/rust-lang/rust/pull/90621/ |
| 89 | +[92285]: https://github.com/rust-lang/rust/pull/92285/ |
| 90 | +[92472]: https://github.com/rust-lang/rust/pull/92472/ |
| 91 | +[92519]: https://github.com/rust-lang/rust/pull/92519/ |
| 92 | +[92663]: https://github.com/rust-lang/rust/pull/92663/ |
| 93 | +[92697]: https://github.com/rust-lang/rust/pull/92697/ |
| 94 | +[92714]: https://github.com/rust-lang/rust/pull/92714/ |
| 95 | +[92911]: https://github.com/rust-lang/rust/pull/92911/ |
| 96 | +[93263]: https://github.com/rust-lang/rust/pull/93263/ |
| 97 | +[93580]: https://github.com/rust-lang/rust/pull/93580/ |
| 98 | +[93745]: https://github.com/rust-lang/rust/pull/93745/ |
| 99 | +[93827]: https://github.com/rust-lang/rust/pull/93827/ |
| 100 | +[93840]: https://github.com/rust-lang/rust/pull/93840/ |
| 101 | +[93901]: https://github.com/rust-lang/rust/pull/93901/ |
| 102 | +[93913]: https://github.com/rust-lang/rust/pull/93913/ |
| 103 | +[93957]: https://github.com/rust-lang/rust/pull/93957/ |
| 104 | +[93965]: https://github.com/rust-lang/rust/pull/93965/ |
| 105 | +[94081]: https://github.com/rust-lang/rust/pull/94081/ |
| 106 | +[94261]: https://github.com/rust-lang/rust/pull/94261/ |
| 107 | +[94295]: https://github.com/rust-lang/rust/pull/94295/ |
| 108 | +[94356]: https://github.com/rust-lang/rust/pull/94356/ |
| 109 | +[94832]: https://github.com/rust-lang/rust/pull/94832/ |
| 110 | +[95016]: https://github.com/rust-lang/rust/pull/95016/ |
| 111 | +[95098]: https://github.com/rust-lang/rust/pull/95098/ |
| 112 | +[95130]: https://github.com/rust-lang/rust/pull/95130/ |
| 113 | +[95247]: https://github.com/rust-lang/rust/pull/95247/ |
| 114 | +[95251]: https://github.com/rust-lang/rust/pull/95251/ |
| 115 | +[95430]: https://github.com/rust-lang/rust/pull/95430/ |
| 116 | +[95491]: https://github.com/rust-lang/rust/pull/95491/ |
| 117 | +[cargo/10448]: https://github.com/rust-lang/cargo/pull/10448/ |
| 118 | +[target_feature]: https://doc.rust-lang.org/reference/attributes/codegen.html#the-target_feature-attribute |
| 119 | + |
| 120 | + |
1 | 121 | Version 1.60.0 (2022-04-07)
|
2 | 122 | ==========================
|
3 | 123 |
|
|
0 commit comments