|
| 1 | +Version 1.64.0 (2022-09-22) |
| 2 | +=========================== |
| 3 | + |
| 4 | +Language |
| 5 | +-------- |
| 6 | +- [make `const_err` show up in future breakage reports](https://github.com/rust-lang/rust/pull/97743/) |
| 7 | +- [allow unions with mutable references and tuples of allowed types](https://github.com/rust-lang/rust/pull/97995/) |
| 8 | +- It is now considered valid to deallocate memory pointed to by a shared reference `&T` [if every byte in `T` is inside an `UnsafeCell`](https://github.com/rust-lang/rust/pull/98017/) |
| 9 | +- Unused tuple struct fields are now warned against in an allow-by-default lint, [`unused_tuple_struct_fields`](https://github.com/rust-lang/rust/pull/95977/), similar to the existing warning for unused struct fields. This lint will become warn-by-default in the future. |
| 10 | + |
| 11 | +Compiler |
| 12 | +-------- |
| 13 | +- The minimum required versions for all `-linux-gnu` targets are now at least kernel 3.2 and glibc 2.17, for targets that previously supported older versions: [Increase the minimum linux-gnu versions](https://github.com/rust-lang/rust/pull/95026/) |
| 14 | +- [Keep unstable target features for asm feature checking](https://github.com/rust-lang/rust/pull/99155/) |
| 15 | +- [Add Nintendo Switch as tier 3 target](https://github.com/rust-lang/rust/pull/88991/) |
| 16 | + - Refer to Rust's [platform support page][platform-support-doc] for more |
| 17 | + information on Rust's tiered platform support. |
| 18 | +- [Only compile #[used] as llvm.compiler.used for ELF targets](https://github.com/rust-lang/rust/pull/93718/) |
| 19 | +- [sess: stabilize `-Zterminal-width` as `--diagnostic-width`](https://github.com/rust-lang/rust/pull/95635/) |
| 20 | +- [Fix repr(align) enum handling](https://github.com/rust-lang/rust/pull/96814/) |
| 21 | +- [Suggest defining variable as mutable on `&mut _` type mismatch in pats](https://github.com/rust-lang/rust/pull/98431/) |
| 22 | +- [Emit warning when named arguments are used positionally in format](https://github.com/rust-lang/rust/pull/98580/) |
| 23 | +- [Add support for link-flavor rust-lld for iOS, tvOS and watchOS](https://github.com/rust-lang/rust/pull/98771/) |
| 24 | +- [Do not mention private types from other crates as impl candidates](https://github.com/rust-lang/rust/pull/99091/) |
| 25 | + |
| 26 | +Libraries |
| 27 | +--------- |
| 28 | +- [Implement network primitives with ideal Rust layout, not C system layout](https://github.com/rust-lang/rust/pull/78802/) |
| 29 | +- [Remove restrictions on compare-exchange memory ordering.](https://github.com/rust-lang/rust/pull/98383/) |
| 30 | +- You can now `write!` or `writeln!` into an `OsString`: [Implement `fmt::Write` for `OsString`](https://github.com/rust-lang/rust/pull/97915/) |
| 31 | +- [Enforce that layout size fits in isize in Layout](https://github.com/rust-lang/rust/pull/95295/) |
| 32 | +- [Make RwLockReadGuard covariant](https://github.com/rust-lang/rust/pull/96820/) |
| 33 | +- [Implement `FusedIterator` for `std::net::[Into]Incoming`](https://github.com/rust-lang/rust/pull/97300/) |
| 34 | +- [`impl<T: AsRawFd> AsRawFd for {Arc,Box}<T>`](https://github.com/rust-lang/rust/pull/97437/) |
| 35 | +- [ptr::copy and ptr::swap are doing untyped copies](https://github.com/rust-lang/rust/pull/97712/) |
| 36 | +- [Add assertion that `transmute_copy`'s U is not larger than T](https://github.com/rust-lang/rust/pull/98839/) |
| 37 | +- [A soundness bug in `BTreeMap` was fixed](https://github.com/rust-lang/rust/pull/99413/) that allowed data it was borrowing to be dropped before the container. |
| 38 | +- [Add cgroupv1 support to `available_parallelism`](https://github.com/rust-lang/rust/pull/97925/) |
| 39 | +- [mem::uninitialized: mitigate many incorrect uses of this function](https://github.com/rust-lang/rust/pull/99182/) |
| 40 | + |
| 41 | +Stabilized APIs |
| 42 | +--------------- |
| 43 | + |
| 44 | +- [`ffi::CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html) |
| 45 | +- [`ffi::CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html) |
| 46 | +- [`ffi::FromBytesWithNulError`](https://doc.rust-lang.org/stable/std/ffi/struct.FromBytesWithNulError.html) |
| 47 | +- [`ffi::FromVecWithNulError`](https://doc.rust-lang.org/stable/std/ffi/struct.FromVecWithNulError.html) |
| 48 | +- [`ffi::IntoStringError`](https://doc.rust-lang.org/stable/std/ffi/struct.IntoStringError.html) |
| 49 | +- [`ffi::NulError`](https://doc.rust-lang.org/stable/std/ffi/struct.NulError.html) |
| 50 | +- [`ffi::c_char`](https://doc.rust-lang.org/stable/std/ffi/type.c_char.html) |
| 51 | +- [`ffi::c_double`](https://doc.rust-lang.org/stable/std/ffi/type.c_double.html) |
| 52 | +- [`ffi::c_float`](https://doc.rust-lang.org/stable/std/ffi/type.c_float.html) |
| 53 | +- [`ffi::c_int`](https://doc.rust-lang.org/stable/std/ffi/type.c_int.html) |
| 54 | +- [`ffi::c_long`](https://doc.rust-lang.org/stable/std/ffi/type.c_long.html) |
| 55 | +- [`ffi::c_longlong`](https://doc.rust-lang.org/stable/std/ffi/type.c_longlong.html) |
| 56 | +- [`ffi::c_schar`](https://doc.rust-lang.org/stable/std/ffi/type.c_schar.html) |
| 57 | +- [`ffi::c_short`](https://doc.rust-lang.org/stable/std/ffi/type.c_short.html) |
| 58 | +- [`ffi::c_uchar`](https://doc.rust-lang.org/stable/std/ffi/type.c_uchar.html) |
| 59 | +- [`ffi::c_uint`](https://doc.rust-lang.org/stable/std/ffi/type.c_uint.html) |
| 60 | +- [`ffi::c_ulong`](https://doc.rust-lang.org/stable/std/ffi/type.c_ulong.html) |
| 61 | +- [`ffi::c_ulonglong`](https://doc.rust-lang.org/stable/std/ffi/type.c_ulonglong.html) |
| 62 | +- [`ffi::c_ushort`](https://doc.rust-lang.org/stable/std/ffi/type.c_ushort.html) |
| 63 | +- [`future::IntoFuture`](https://doc.rust-lang.org/stable/std/future/trait.IntoFuture.html) |
| 64 | +- [`future::poll_fn`](https://doc.rust-lang.org/stable/std/future/fn.poll_fn.html) |
| 65 | +- [`task::ready!`](https://doc.rust-lang.org/stable/std/task/macro.ready.html) |
| 66 | +- [`num::NonZero*::checked_mul`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_mul) |
| 67 | +- [`num::NonZero*::checked_pow`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_pow) |
| 68 | +- [`num::NonZero*::saturating_mul`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.saturating_mul) |
| 69 | +- [`num::NonZero*::saturating_pow`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.saturating_pow) |
| 70 | +- [`num::NonZeroI*::abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.abs) |
| 71 | +- [`num::NonZeroI*::checked_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.checked_abs) |
| 72 | +- [`num::NonZeroI*::overflowing_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.overflowing_abs) |
| 73 | +- [`num::NonZeroI*::saturating_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.saturating_abs) |
| 74 | +- [`num::NonZeroI*::unsigned_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.unsigned_abs) |
| 75 | +- [`num::NonZeroI*::wrapping_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.wrapping_abs) |
| 76 | +- [`num::NonZeroU*::checked_add`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_add) |
| 77 | +- [`num::NonZeroU*::checked_next_power_of_two`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_next_power_of_two) |
| 78 | +- [`num::NonZeroU*::saturating_add`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.saturating_add) |
| 79 | +- [`os::unix::process::CommandExt::process_group`](https://doc.rust-lang.org/stable/std/os/unix/process/trait.CommandExt.html#tymethod.process_group) |
| 80 | +- [`os::windows::fs::FileTypeExt::is_symlink_dir`](https://doc.rust-lang.org/stable/std/os/windows/fs/trait.FileTypeExt.html#tymethod.is_symlink_dir) |
| 81 | +- [`os::windows::fs::FileTypeExt::is_symlink_file`](https://doc.rust-lang.org/stable/std/os/windows/fs/trait.FileTypeExt.html#tymethod.is_symlink_file) |
| 82 | + |
| 83 | +These APIs are now usable in const contexts: |
| 84 | + |
| 85 | +- [`slice::from_raw_parts`](https://doc.rust-lang.org/stable/core/slice/fn.from_raw_parts.html) |
| 86 | + |
| 87 | +Cargo |
| 88 | +----- |
| 89 | +- Packages can now inherit settings from the workspace so that the settings |
| 90 | + can be centralized in one place. See |
| 91 | + [`workspace.package`](https://doc.rust-lang.org/nightly/cargo/reference/workspaces.html#the-workspacepackage-table) |
| 92 | + and |
| 93 | + [`workspace.dependencies`](https://doc.rust-lang.org/nightly/cargo/reference/workspaces.html#the-workspacedependencies-table) |
| 94 | + for more details on how to define these common settings. |
| 95 | + [#10859](https://github.com/rust-lang/cargo/pull/10859) |
| 96 | +- Cargo commands can now accept multiple `--target` flags to build for |
| 97 | + multiple targets at once, and the |
| 98 | + [`build.target`](https://doc.rust-lang.org/nightly/cargo/reference/config.html#buildtarget) |
| 99 | + config option may now take an array of multiple targets. |
| 100 | + [#10766](https://github.com/rust-lang/cargo/pull/10766) |
| 101 | +- The `--jobs` argument can now take a negative number to count backwards from |
| 102 | + the max CPUs. |
| 103 | + [#10844](https://github.com/rust-lang/cargo/pull/10844) |
| 104 | +- `cargo add` will now update `Cargo.lock`. |
| 105 | + [#10902](https://github.com/rust-lang/cargo/pull/10902) |
| 106 | +- Added the |
| 107 | + [`--crate-type`](https://doc.rust-lang.org/nightly/cargo/commands/cargo-rustc.html#option-cargo-rustc---crate-type) |
| 108 | + flag to `cargo rustc` to override the crate type. |
| 109 | + [#10838](https://github.com/rust-lang/cargo/pull/10838) |
| 110 | +- Significantly improved the performance fetching git dependencies from GitHub |
| 111 | + when using a hash in the `rev` field. |
| 112 | + [#10079](https://github.com/rust-lang/cargo/pull/10079) |
| 113 | + |
| 114 | +Misc |
| 115 | +---- |
| 116 | +- [Let rust-analyzer ship on stable, non-preview](https://github.com/rust-lang/rust/pull/98640/) |
| 117 | + |
| 118 | +Compatibility Notes |
| 119 | +------------------- |
| 120 | +- The minimum required versions for all `-linux-gnu` targets are now at least kernel 3.2 and glibc 2.17, for targets that previously supported older versions: [Increase the minimum linux-gnu versions](https://github.com/rust-lang/rust/pull/95026/) |
| 121 | +- [Implement network primitives with ideal Rust layout, not C system layout](https://github.com/rust-lang/rust/pull/78802/) |
| 122 | +- [Add assertion that `transmute_copy`'s U is not larger than T](https://github.com/rust-lang/rust/pull/98839/) |
| 123 | +- [A soundness bug in `BTreeMap` was fixed](https://github.com/rust-lang/rust/pull/99413/) that allowed data it was borrowing to be dropped before the container. |
| 124 | +- [The Drop behavior of C-like enums cast to ints has changed](https://github.com/rust-lang/rust/pull/96862/). These are already discouraged by a compiler warning. |
| 125 | +- [Relate late-bound closure lifetimes to parent fn in NLL](https://github.com/rust-lang/rust/pull/98835/) |
| 126 | +- [Errors at const-eval time are now in future incompatibility reports](https://github.com/rust-lang/rust/pull/97743/) |
| 127 | +- On the `thumbv6m-none-eabi` target, some incorrect `asm!` statements were erroneously accepted if they used the high registers (r8 to r14) as an input/output operand. [This is no longer accepted](https://github.com/rust-lang/rust/pull/99155/). |
| 128 | +- [`impl Trait` was accidentally accepted as the associated type value of return-position `impl Trait`](https://github.com/rust-lang/rust/pull/97346/), without fulfilling all the trait bounds of that associated type, as long as the hidden type satisfies said bounds. This has been fixed. |
| 129 | + |
| 130 | +Internal Changes |
| 131 | +---------------- |
| 132 | + |
| 133 | +These changes do not affect any public interfaces of Rust, but they represent |
| 134 | +significant improvements to the performance or internals of rustc and related |
| 135 | +tools. |
| 136 | + |
| 137 | +- Windows builds now use profile-guided optimization, providing 10-20% improvements to compiler performance: [Utilize PGO for windows x64 rustc dist builds](https://github.com/rust-lang/rust/pull/96978/) |
| 138 | +- [Stop keeping metadata in memory before writing it to disk](https://github.com/rust-lang/rust/pull/96544/) |
| 139 | +- [compiletest: strip debuginfo by default for mode=ui](https://github.com/rust-lang/rust/pull/98140/) |
| 140 | +- Many improvements to generated code for derives, including performance improvements: |
| 141 | + - [Don't use match-destructuring for derived ops on structs.](https://github.com/rust-lang/rust/pull/98446/) |
| 142 | + - [Many small deriving cleanups](https://github.com/rust-lang/rust/pull/98741/) |
| 143 | + - [More derive output improvements](https://github.com/rust-lang/rust/pull/98758/) |
| 144 | + - [Clarify deriving code](https://github.com/rust-lang/rust/pull/98915/) |
| 145 | + - [Final derive output improvements](https://github.com/rust-lang/rust/pull/99046/) |
| 146 | + - [Stop injecting `#[allow(unused_qualifications)]` in generated `derive` implementations](https://github.com/rust-lang/rust/pull/99485/) |
| 147 | + - [Improve `derive(Debug)`](https://github.com/rust-lang/rust/pull/98190/) |
| 148 | +- [Bump to clap 3](https://github.com/rust-lang/rust/pull/98213/) |
| 149 | +- [fully move dropck to mir](https://github.com/rust-lang/rust/pull/98641/) |
| 150 | +- [Optimize `Vec::insert` for the case where `index == len`.](https://github.com/rust-lang/rust/pull/98755/) |
| 151 | +- [Convert rust-analyzer to an in-tree tool](https://github.com/rust-lang/rust/pull/99603/) |
| 152 | + |
1 | 153 | Version 1.63.0 (2022-08-11)
|
2 | 154 | ==========================
|
3 | 155 |
|
|
0 commit comments