1.80.0
版本发布时间: 2024-07-26 04:26:54
rust-lang/rust最新发布版本:1.83.0(2024-11-28 22:02:00)
Language
- Document maximum allocation size
- Allow zero-byte offsets and ZST read/writes on arbitrary pointers
- Support C23's variadics without a named parameter
-
Stabilize
exclusive_range_pattern
feature -
Guarantee layout and ABI of
Result
in some scenarios
Compiler
- Update cc crate to v1.0.97 allowing additional spectre mitigations on MSVC targets
-
Allow field reordering on types marked
repr(packed(1))
- Add a lint against never type fallback affecting unsafe code
- Disallow cast with trailing braced macro in let-else
-
Expand
for_loops_over_fallibles
lint to lint on fallibles behind references. -
self-contained linker: retry linking without
-fuse-ld=lld
on CCs that don't support it -
Do not parse CVarArgs (
...
) as a type in trait bounds - Improvements to LLDB formatting #124458 #124500
-
For the wasm32-wasip2 target default to PIC and do not use
-fuse-ld=lld
- Add x86_64-unknown-linux-none as a tier 3 target
-
Lint on
foo.into_iter()
resolving to&Box<[T]>: IntoIterator
Libraries
-
Add
size_of
andsize_of_val
andalign_of
andalign_of_val
to the prelude - Abort a process when FD ownership is violated
- io::Write::write_fmt: panic if the formatter fails when the stream does not fail
-
Panic if
PathBuf::set_extension
would add a path separator - Add assert_unsafe_precondition to unchecked_{add,sub,neg,mul,shl,shr} methods
-
Update
c_char
on AIX to use the correct type -
offset_of!
no longer returns a temporary -
Handle sigma in
str.to_lowercase
correctly -
Raise
DEFAULT_MIN_STACK_SIZE
to at least 64KiB
Stabilized APIs
-
impl Default for Rc<CStr>
-
impl Default for Rc<str>
-
impl Default for Rc<[T]>
-
impl Default for Arc<str>
-
impl Default for Arc<CStr>
-
impl Default for Arc<[T]>
-
impl IntoIterator for Box<[T]>
-
impl FromIterator<String> for Box<str>
-
impl FromIterator<char> for Box<str>
-
LazyCell
-
LazyLock
-
Duration::div_duration_f32
-
Duration::div_duration_f64
-
Option::take_if
-
Seek::seek_relative
-
BinaryHeap::as_slice
-
NonNull::offset
-
NonNull::byte_offset
-
NonNull::add
-
NonNull::byte_add
-
NonNull::sub
-
NonNull::byte_sub
-
NonNull::offset_from
-
NonNull::byte_offset_from
-
NonNull::read
-
NonNull::read_volatile
-
NonNull::read_unaligned
-
NonNull::write
-
NonNull::write_volatile
-
NonNull::write_unaligned
-
NonNull::write_bytes
-
NonNull::copy_to
-
NonNull::copy_to_nonoverlapping
-
NonNull::copy_from
-
NonNull::copy_from_nonoverlapping
-
NonNull::replace
-
NonNull::swap
-
NonNull::drop_in_place
-
NonNull::align_offset
-
<[T]>::split_at_checked
-
<[T]>::split_at_mut_checked
-
str::split_at_checked
-
str::split_at_mut_checked
-
str::trim_ascii
-
str::trim_ascii_start
-
str::trim_ascii_end
-
<[u8]>::trim_ascii
-
<[u8]>::trim_ascii_start
-
<[u8]>::trim_ascii_end
-
Ipv4Addr::BITS
-
Ipv4Addr::to_bits
-
Ipv4Addr::from_bits
-
Ipv6Addr::BITS
-
Ipv6Addr::to_bits
-
Ipv6Addr::from_bits
-
Vec::<[T; N]>::into_flattened
-
<[[T; N]]>::as_flattened
-
<[[T; N]]>::as_flattened_mut
These APIs are now stable in const contexts:
Cargo
-
Stabilize
-Zcheck-cfg
as always enabled - Warn, rather than fail publish, if a target is excluded
-
Add special
check-cfg
lint config for theunexpected_cfgs
lint -
Stabilize
cargo update --precise <yanked>
-
Don't change file permissions on
Cargo.toml
when usingcargo add
-
Support using
cargo fix
on IPv6-only networks
Rustdoc
- Allow searching for references
-
Stabilize
custom_code_classes_in_docs
feature - fix: In cross-crate scenarios show enum variants on type aliases of enums
Compatibility Notes
- rustfmt estimates line lengths differently when using non-ascii characters
- Type aliases are now handled correctly in orphan check
-
Allow instructing rustdoc to read from stdin via
-
-
std::env::{set_var, remove_var}
can no longer be converted to safe function pointers and no longer implement theFn
family of traits -
Warn (or error) when
Self
constructor from outer item is referenced in inner nested item -
Turn
indirect_structural_match
andpointer_structural_match
lints into hard errors -
Make
where_clause_object_safety
lint a regular object safety violation -
Turn
proc_macro_back_compat
lint into a hard error. - Detect unused structs even when implementing private traits
-
std::sync::ReentrantLockGuard<T>
is no longerSync
ifT: !Sync
which meansstd::io::StdoutLock
andstd::io::StderrLock
are no longer Sync
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.
- Misc improvements to size of generated html by rustdoc e.g. #124738 and #123734
- MSVC targets no longer depend on libc