1.76.0
版本发布时间: 2024-02-08 22:07:09
rust-lang/rust最新发布版本:1.83.0(2024-11-28 22:02:00)
Language
- Document Rust ABI compatibility between various types
- Also: guarantee that char and u32 are ABI-compatible
- Warn against ambiguous wide pointer comparisons
Compiler
-
Lint pinned
#[must_use]
pointers (in particular,Box<T>
whereT
is#[must_use]
) inunused_must_use
. - Soundness fix: fix computing the offset of an unsized field in a packed struct
- Soundness fix: fix dynamic size/align computation logic for packed types with dyn Trait tail
-
Add
$message_type
field to distinguish json diagnostic outputs - Enable Rust to use the EHCont security feature of Windows
- Add tier 3 {x86_64,i686}-win7-windows-msvc targets
- Add tier 3 aarch64-apple-watchos target
- Add tier 3 arm64e-apple-ios & arm64e-apple-darwin targets
Refer to Rust's platform support page for more information on Rust's tiered platform support.
Libraries
-
Add a column number to
dbg!()
-
Add
std::hash::{DefaultHasher, RandomState}
exports - Fix rounding issue with exponents in fmt
-
Add T: ?Sized to
RwLockReadGuard
andRwLockWriteGuard
's Debug impls. -
Windows: Allow
File::create
to work on hidden files
Stabilized APIs
-
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 throughstd::collections::hash_map
. -
ptr::{from_ref, from_mut}
-
ptr::addr_eq
Cargo
See Cargo release notes.
Rustdoc
- Don't merge cfg and doc(cfg) attributes for re-exports
- rustdoc: allow resizing the sidebar / hiding the top bar
- rustdoc-search: add support for traits and associated types
- rustdoc: Add highlighting for comments in items declaration
Compatibility Notes
-
Add allow-by-default lint for unit bindings This is expected to be upgraded to a warning by default in a future Rust release. Some macros emit bindings with type
()
with user-provided spans, which means that this lint will warn for user code. - Remove x86_64-sun-solaris target.
- Remove asmjs-unknown-emscripten target
- Report errors in jobserver inherited through environment variables This may warn on benign problems too.
- Update the minimum external LLVM to 16.
-
Improve
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. -
Make
IMPLIED_BOUNDS_ENTAILMENT
into a hard error from a lint -
Vec's allocation behavior was changed when collecting some iterators Allocation behavior is currently not specified, nevertheless changes can be surprising. See
impl FromIterator for Vec
for more details. -
Properly reject
default
on free const items