1.67.0 (26 January, 2023) #
Sizedpredicates coinductive, allowing cycles.
async fnalso affect the
- Elaborate supertrait obligations when deducing closure signatures.
- Invalid literals are no longer an error under
- Unreserve braced enum variants in value namespace.
- Enable varargs support for calling conventions other than
- Add new MIR constant propagation based on dataflow analysis.
- Optimize field ordering by grouping m*2^n-sized fields with equivalently aligned ones.
- Stabilize native library modifier
Added, updated, and removed targets:
- Add a tier 3 target for PowerPC on AIX,
- Add a tier 3 target for the Sony PlayStation 1,
- Add tier 3
no_stdtargets for the QNX Neutrino RTOS,
- Promote UEFI targets to tier 2,
- Remove tier 3
linuxkerneltargets (not used by the actual kernel).
Refer to Rust’s [platform support page][platform-support-doc] for more information on Rust’s tiered platform support.
- Fix inconsistent rounding of 0.5 when formatted to 0 decimal places.
- Don’t build
Stabilized APIs #
These APIs are now stable in const contexts:
Compatibility Notes #
- The layout of
repr(Rust)types now groups m*2^n-sized fields with equivalently aligned ones. This is intended to be an optimization, but it is also known to increase type sizes in a few cases for the placement of enum tags. As a reminder, the layout of
repr(Rust)types is an implementation detail, subject to change.
- 0.5 now rounds to 0 when formatted to 0 decimal places. This makes it consistent with the rest of floating point formatting that rounds ties toward even digits.
- Chains of
||will now drop temporaries from their sub-expressions in evaluation order, left-to-right. Previously, it was “twisted” such that the first expression dropped its temporaries last, after all of the other expressions dropped in order.
- Underscore suffixes on string literals are now a hard error. This has been a future-compatibility warning since 1.20.0.
- Stop passing
mainis now mangled as
- Cargo now emits an error if there are multiple registries in the configuration with the same index URL.
Internal Changes #
These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools.