Add special_module_name
lint by ibraheemdev · Pull Request #94467 · rust-lang/rust (original) (raw)
Pkgsrc changes:
- pkglint cleanups, bump bootstrap kits to 1.65.0.
- New target: mipsel-unknown-netbsd, for cpu=mips32 with soft-float.
- 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. Also submitted upstream of LLVM to the BLAKE3 maintainers.
- 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 tried to get the "openssl-src" build with -latomic where it's needed. I've introduced the "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.
Upstream changes:
Version 1.66.1 (2023-01-10)
- Added validation of SSH host keys for git URLs in Cargo (CVE-2022-46176)
Version 1.66.0 (2022-12-15)
Language
- Permit specifying explicit discriminants on all
repr(Int)
enums#[repr(u8)] enum Foo { A(u8) = 0, B(i8) = 1, C(bool) = 42, }
- Allow transmutes between the same type differing only in lifetimes
- Change constant evaluation errors from a deny-by-default lint to a hard error
- Trigger
must_use
onimpl Trait
for supertraits This makesimpl ExactSizeIterator
respect the existing#[must_use]
annotation onIterator
. - Allow
..X
and..=X
in patterns - Uplift
clippy::for_loops_over_fallibles
lint into rustc - Stabilize
sym
operands in inline assembly - Update to Unicode 15
- Opaque types no longer imply lifetime bounds This is a soundness fix which may break code that was erroneously relying on this behavior.
Compiler
- Add armv5te-none-eabi and thumbv5te-none-eabi tier 3
targets
- Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support.
- Add support for linking against macOS universal libraries
Libraries
- Fix
#[derive(Default)]
on a generic#[default]
enum adding unnecessaryDefault
bounds - Update to Unicode 15
Stabilized APIs
proc_macro::Span::source_text
uX::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
iX::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
iX::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
BTreeSet::{first, last, pop_first, pop_last}
BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
- Add
AsFd
implementations for stdio lock types on WASI. impl TryFrom<Vec<T>> for Box<[T; N]>
core::hint::black_box
Duration::try_from_secs_{f32,f64}
Option::unzip
std::os::fd
Rustdoc
Cargo
- Added
cargo remove
to remove dependencies from Cargo.toml cargo publish
now waits for the new version to be downloadable before exiting
See detailed release notes for more.
Compatibility Notes
- Only apply
ProceduralMasquerade
hack to older versions ofrental
- Don't export
__heap_base
and__data_end
on wasm32-wasi. - Don't export
__wasm_init_memory
on WebAssembly. - Only export
__tls_*
on wasm32-unknown-unknown. - Don't link to
libresolv
in libstd on Darwin - Update libstd's libc to 0.2.135 (to make
libstd
no longer pull inlibiconv.dylib
on Darwin) - Opaque types no longer imply lifetime bounds This is a soundness fix which may break code that was erroneously relying on this behavior.
- Make
order_dependent_trait_objects
show up in future-breakage reports - Change std::process::Command spawning to default to inheriting the parent's signal mask
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.
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
- [Stabilize generic associated types (GATs)] (rust-lang/rust#96709)
- [Add lints
let_underscore_drop
,let_underscore_lock
, andlet_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.
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
- [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 overflowisize::MAX
when rounded up toalign
This also changes the safety conditions onLayout::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 overflowisize::MAX
when rounded up toalign
] (rust-lang/rust#95295). This also changes the safety conditions onLayout::from_size_align_unchecked
. - [
PollFn
now only implementsUnpin
if the closure isUnpin
] (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
- [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 viallvm-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
andx.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).