Empowering everyone to build reliable and efficient software.
static_mut_refs
to warn on references to mutable statics.
unstable_features
and make use of it in the compiler.
soft_unstable
in future breakage reports.
i128
and u128
16-byte aligned on x86-based targets.
--verbose
in diagnostic output.
unused_tuple_struct_fields
lint into dead_code
.
fn
/const
items implied bounds and well-formedness check.
riscv32{im|imafc}-unknown-none-elf
targets to tier 2.
Refer to Rust's platform support page for more information on Rust's tiered platform support.
array::each_ref
array::each_mut
core::net
f32::round_ties_even
f64::round_ties_even
mem::offset_of!
slice::first_chunk
slice::first_chunk_mut
slice::split_first_chunk
slice::split_first_chunk_mut
slice::last_chunk
slice::last_chunk_mut
slice::split_last_chunk
slice::split_last_chunk_mut
slice::chunk_by
slice::chunk_by_mut
Bound::map
File::create_new
Mutex::clear_poison
RwLock::clear_poison
cargo::
.
id
format as PackageIDSpec
.
cargo-util-schemas
as a crate.
()
.
localStorage
.
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.
ambiguous_wide_pointer_comparisons
that supersedes clippy::vtable_address_comparisons
#[must_use]
pointers (in particular, Box<T>
where T
is #[must_use]
) in unused_must_use
.
$message_type
field to distinguish json diagnostic outputs
Refer to Rust's platform support page for more information on Rust's tiered platform support.
dbg!()
std::hash::{DefaultHasher, RandomState}
exports
RwLockReadGuard
and RwLockWriteGuard
's Debug impls.
File::create
to work on hidden files
Arc::unwrap_or_clone
Rc::unwrap_or_clone
Result::inspect
Result::inspect_err
Option::inspect
type_name_of_val
std::hash::{DefaultHasher, RandomState}
These were previously available only through std::collections::hash_map
.ptr::{from_ref, from_mut}
ptr::addr_eq
See Cargo release notes.
()
with user-provided spans, which means that this lint will warn for user code.print_tts
This change can break some naive manual parsing of token trees in proc macro code which expect a particular structure after .to_string()
, rather than just arbitrary Rust code.IMPLIED_BOUNDS_ENTAILMENT
into a hard error from a lint
impl FromIterator for Vec
for more details.default
on free const items
async fn
and return-position impl Trait
in traits.
&mut T
in const
contexts.
usize
/isize
exhaustively with half-open ranges.
char
has the same size and alignment as u32
.
match
.
COINDUCTIVE_OVERLAP_IN_COHERENCE
to deny, and warn in dependencies.
riscv64-linux-android
target spec.
Refer to Rust's platform support page for more information on Rust's tiered platform support.
Waker::clone_from
to avoid cloning Waker
s unnecessarily.
BufRead
for VecDeque<u8>
.
FusedIterator
for DecodeUtf16
when the inner iterator does.
Not, Bit{And,Or}{,Assign}
for IP addresses.
Default
for ExitCode
.
str::SplitInclusive
's DoubleEndedIterator
impl
cfg(unix)
platforms.
Atomic*::from_ptr
FileTimes
FileTimesExt
File::set_modified
File::set_times
IpAddr::to_canonical
Ipv6Addr::to_canonical
Option::as_slice
Option::as_mut_slice
pointer::byte_add
pointer::byte_offset
pointer::byte_offset_from
pointer::byte_sub
pointer::wrapping_byte_add
pointer::wrapping_byte_offset
pointer::wrapping_byte_sub
These APIs are now stable in const contexts:
Ipv6Addr::to_ipv4_mapped
MaybeUninit::assume_init_read
MaybeUninit::zeroed
mem::discriminant
mem::zeroed
[workspace.members]
automatically.
Cargo.toml
manifests.
#[repr(transparent)]
if it isn't part of the public ABI.
const
contexts.
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.
std::mem::Discriminant<T>
does not depend on any lifetimes in T
private_in_public
lint with private_interfaces
and private_bounds
per RFC 2145. Read more in RFC 2145.#[repr(Rust)]
async
blocks
impl_trait_projections
PATH
option for --print KIND=PATH
*-apple-ios-macabi
i686-pc-windows-gnullvm
as a tier 3 target
From<OwnedFd/Handle>
for ChildStdin/out/err
From<{&,&mut} [T; N]>
for Vec<T>
where T: Clone
From<[T; N]>
for Rc<[T]>
and Arc<[T]>
impl TryFrom<char> for u16
io_error_other
feature
Saturating
type
core::num::Saturating
impl From<io::Stdout> for std::process::Stdio
impl From<io::Stderr> for std::process::Stdio
impl From<OwnedHandle> for std::process::Child{Stdin, Stdout, Stderr}
impl From<OwnedFd> for std::process::Child{Stdin, Stdout, Stderr}
std::ffi::OsString::from_encoded_bytes_unchecked
std::ffi::OsString::into_encoded_bytes
std::ffi::OsStr::from_encoded_bytes_unchecked
std::ffi::OsStr::as_encoded_bytes
std::io::Error::other
impl TryFrom<char> for u16
impl<T: Clone, const N: usize> From<&[T; N]> for Vec<T>
impl<T: Clone, const N: usize> From<&mut [T; N]> for Vec<T>
impl<T, const N: usize> From<[T; N]> for Arc<[T]>
impl<T, const N: usize> From<[T; N]> for Rc<[T]>
These APIs are now stable in const contexts:
Cargo.toml
, stabilize [lints]
--keep-going
build flag
--help
output
cargo clean
, add --dry-run
flag and summary line at the end
cargo update
, make --package
more convenient by being positional
cargo update
, clarify meaning of --aggressive as --recursive
--dry-run
--package
flags) to resolve ambiguities
.cargo/config.toml
, merge lists in precedence order
target.'cfg(..)'.linker
--extern
impl From<{&,&mut} [T; N]> for Vec<T>
is known to cause some inference failures with overly-generic code. In those examples using the tui
crate, the combination of AsRef<_>
and Into<Vec>
leaves the middle type ambiguous, and the new impl
adds another possibility, so it now requires an explicit type annotation.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.
None this cycle.
clippy::fn_null_check
lint as useless_ptr_null_checks
.
noop_method_call
warn by default.
try
and async
in macros.
unconditional_recursion
lint detect recursive drops.
invalid_reference_casting
lint is now deny-by-default (instead of allow-by-default)
.comment
section like GCC/Clang.
extern "thiscall"
and "thiscall-unwind"
ABIs.
wasm32-wasi-preview1-threads
as a tier 2 target.
Refer to Rust's platform support page for more information on Rust's tiered platform support.
Read
, Write
and Seek
impls for Arc<File>
.
io::Sink
into io::Empty
.
RefUnwindSafe
for Backtrace
ExitStatus
implement Default
impl SliceIndex<str> for (Bound<usize>, Bound<usize>)
assert_eq!
& assert_ne!
panic messages.
stat
struct definitions.
{integer}::div_ceil
{integer}::next_multiple_of
{integer}::checked_next_multiple_of
std::ffi::FromBytesUntilNulError
std::os::unix::fs::chown
std::os::unix::fs::fchown
std::os::unix::fs::lchown
LocalKey::<Cell<T>>::get
LocalKey::<Cell<T>>::set
LocalKey::<Cell<T>>::take
LocalKey::<Cell<T>>::replace
LocalKey::<RefCell<T>>::with_borrow
LocalKey::<RefCell<T>>::with_borrow_mut
LocalKey::<RefCell<T>>::set
LocalKey::<RefCell<T>>::take
LocalKey::<RefCell<T>>::replace
These APIs are now stable in const contexts:
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.
rustc_apfloat
with the new version of the crate.
internal_features
lint for internal unstable features.
suspicious_double_ref_op
lint when calling borrow()
can_eq
in derive(..)
suggestion for missing method
#![cfg(FALSE)]
behaves on crate root
clippy::undropped_manually_drops
lint
clippy::invalid_utf8_in_unchecked
lint as invalid_from_utf8_unchecked
and invalid_from_utf8
clippy::cast_ref_to_mut
lint as invalid_reference_casting
clippy::cmp_nan
lint as invalid_nan_comparisons
dyn Trait
objects
cfg
-ed out items to mention them in diagnostics
-
is given as output file
loongarch64-unknown-none*
.eh_frame
from being emitted for -C panic=abort
Refer to Rust's platform support page for more information on Rust's tiered platform support.
thread::{park, unpark}
T: Sized
bounds on BufReader<T>
, BufWriter<T>
and LineWriter<T>
select_nth_unstable
Ok
on kill if process has already exited
Vec
s over different allocators
{Arc,Rc,Weak}::ptr_eq
ignore pointer metadata
[]
These APIs are now stable in const contexts:
-Zdoctest-in-workspace
by default. When running each documentation test, the working directory is set to the root directory of the package the test belongs to. docs #12221 #12288
build.jobs
parallelism back to the default. #12222
Display
for Ipv6Addr
for IPv4-compatible addresses
mips*-unknown-linux-gnu*
targets from host tier 2 to target tier 3 support.