You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Pkgsrc changes:
* We now manage to build for mipsel-unknown-netbsd, but despite the
target spec saying cpu = "mips3", the compiler manages to emit 64-bit
instructions which cause "illegal instruction" error. Will need more
work. The mipsel-unknown-netbsd entry is commentd out since there
is no 1.64.0 bootstrap.
* Managed to retain the build of aarch64_be, llvm needed a patch to
avoid use of neon instructions in the BE case (llvm doesn't support
use of neon in BE mode). Ref. patch to
src/llvm-project/llvm/lib/Support/BLAKE3/blake3_impl.h.
* The minimum gcc version is now 7.x, and that includes the cross-compiler
for the targets. For i386 this also needs to /usr/include/gcc-7 include
files in the target root, because immintrin.h from gcc 5 is not
compatible with gcc 7.x. This applies for the targets where we build
against a root from netbsd-8 (sparc64, powerpc, i386), and files/gcc-wrap
gets a hack for this.
* Pick up tweak for -latomic inclusion from
rust-lang/rust#104220
and
rust-lang/rust#104572
* Retain ability to do 32-bit NetBSD, by changing from 64 to 32 bit
types in library/std/src/sys/unix/thread_parker/netbsd.rs.
* I've struggled a bit to get the "openssl-src" build with -latomic
where it's needed. I introduce "NetBSD-generic32" system type and
use it for the NetBSD mipsel target. There is another attempt to
do the same in the patch to vendor/openssl-sys/build/main.rs.
* Bump bootstraps to 1.64.0, checksum updates.
Upstream changes:
Version 1.65.0 (2022-11-03)
==========================
Language
--------
- [Error on `as` casts of enums with `#[non_exhaustive]` variants]
(rust-lang/rust#92744)
- [Stabilize `let else`](rust-lang/rust#93628)
- [Stabilize generic associated types (GATs)]
(rust-lang/rust#96709)
- [Add lints `let_underscore_drop`, `let_underscore_lock`, and
`let_underscore_must_use` from Clippy]
(rust-lang/rust#97739)
- [Stabilize `break`ing from arbitrary labeled blocks ("label-break-value")]
(rust-lang/rust#99332)
- [Uninitialized integers, floats, and raw pointers are now considered
immediate UB](rust-lang/rust#98919).
Usage of `MaybeUninit` is the correct way to work with uninitialized
memory.
- [Stabilize raw-dylib for Windows x86_64, aarch64, and thumbv7a]
(rust-lang/rust#99916)
- [Do not allow `Drop` impl on foreign ADTs]
(rust-lang/rust#99576)
Compiler
--------
- [Stabilize -Csplit-debuginfo on Linux]
(rust-lang/rust#98051)
- [Use niche-filling optimization even when multiple variants have
data] (rust-lang/rust#94075)
- [Associated type projections are now verified to be well-formed
prior to resolving the underlying type]
(rust-lang/rust#99217)
- [Stringify non-shorthand visibility correctly]
(rust-lang/rust#100350)
- [Normalize struct field types when unsizing]
(rust-lang/rust#101831)
- [Update to LLVM 15](rust-lang/rust#99464)
- [Fix aarch64 call abi to correctly zeroext when needed]
(rust-lang/rust#97800)
- [debuginfo: Generalize C++-like encoding for enums]
(rust-lang/rust#98393)
- [Add `special_module_name` lint]
(rust-lang/rust#94467)
- [Add support for generating unique profraw files by default when
using `-C instrument-coverage`]
(rust-lang/rust#100384)
- [Allow dynamic linking for iOS/tvOS targets]
(rust-lang/rust#100636)
New targets:
- [Add armv4t-none-eabi as a tier 3 target]
(rust-lang/rust#100244)
- [Add powerpc64-unknown-openbsd and riscv64-unknown-openbsd as tier 3 targets]
(rust-lang/rust#101025)
- Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.
Libraries
---------
- [Don't generate `PartialEq::ne` in derive(PartialEq)]
(rust-lang/rust#98655)
- [Windows RNG: Use `BCRYPT_RNG_ALG_HANDLE` by default]
(rust-lang/rust#101325)
- [Forbid mixing `System` with direct system allocator calls]
(rust-lang/rust#101394)
- [Document no support for writing to non-blocking stdio/stderr]
(rust-lang/rust#101416)
- [`std::layout::Layout` size must not overflow `isize::MAX` when
rounded up to `align`](rust-lang/rust#95295)
This also changes the safety conditions on
`Layout::from_size_align_unchecked`.
Stabilized APIs
---------------
- [`std::backtrace::Backtrace`]
(https://doc.rust-lang.org/stable/std/backtrace/struct.Backtrace.html)
- [`Bound::as_ref`]
(https://doc.rust-lang.org/stable/std/ops/enum.Bound.html#method.as_ref)
- [`std::io::read_to_string`]
(https://doc.rust-lang.org/stable/std/io/fn.read_to_string.html)
- [`<*const T>::cast_mut`]
(https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.cast_mut)
- [`<*mut T>::cast_const`]
(https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.cast_const)
These APIs are now stable in const contexts:
- [`<*const T>::offset_from`]
(https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from)
- [`<*mut T>::offset_from`]
(https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from)
Cargo
-----
- [Apply GitHub fast path even for partial hashes]
(rust-lang/cargo#10807)
- [Do not add home bin path to PATH if it's already there]
(rust-lang/cargo#11023)
- [Take priority into account within the pending queue]
(rust-lang/cargo#11032).
This slightly optimizes job scheduling by Cargo, with typically
small improvements on larger crate graph builds.
Compatibility Notes
-------------------
- [`std::layout::Layout` size must not overflow `isize::MAX` when
rounded up to `align`] (rust-lang/rust#95295).
This also changes the safety conditions on
`Layout::from_size_align_unchecked`.
- [`PollFn` now only implements `Unpin` if the closure is `Unpin`]
(rust-lang/rust#102737).
This is a possible breaking change if users were relying on the
blanket unpin implementation. See discussion on the PR for
details of why this change was made.
- [Drop ExactSizeIterator impl from std::char::EscapeAscii]
(rust-lang/rust#99880)
This is a backwards-incompatible change to the standard library's
surface area, but is unlikely to affect real world usage.
- [Do not consider a single repeated lifetime eligible for elision
in the return type] (rust-lang/rust#103450)
This behavior was unintentionally changed in 1.64.0, and this
release reverts that change by making this an error again.
- [Reenable disabled early syntax gates as future-incompatibility
lints] (rust-lang/rust#99935)
- [Update the minimum external LLVM to 13]
(rust-lang/rust#100460)
- [Don't duplicate file descriptors into stdio fds]
(rust-lang/rust#101426)
- [Sunset RLS](rust-lang/rust#100863)
- [Deny usage of `#![cfg_attr(..., crate_type = ...)]` to set the
crate type] (rust-lang/rust#99784)
This strengthens the forward compatibility lint
deprecated_cfg_attr_crate_type_name to deny.
- [`llvm-has-rust-patches` allows setting the build system to treat
the LLVM as having Rust-specific patches]
(rust-lang/rust#101072)
This option may need to be set for distributions that are building
Rust with a patched LLVM via `llvm-config`, not the built-in
LLVM.
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.
- [Add `x.sh` and `x.ps1` shell scripts]
(rust-lang/rust#99992)
- [compiletest: use target cfg instead of hard-coded tables]
(rust-lang/rust#100260)
- [Use object instead of LLVM for reading bitcode from rlibs]
(rust-lang/rust#98100)
- [Enable MIR inlining for optimized compilations]
(rust-lang/rust#91743)
This provides a 3-10% improvement in compiletimes for real world
crates. See [perf results]
(https://perf.rust-lang.org/compare.html?start=aedf78e56b2279cc869962feac5153b6ba7001ed&end=0075bb4fad68e64b6d1be06bf2db366c30bc75e1&stat=instructions:u).
0 commit comments