Last 7 days
1
Features: 1
Changes: 0
Fixes: 0
Deprecations: 0
Memory-safe systems programming language and toolchain.
Latest Rust changelog updates, official release notes, breaking changes, security patches, pricing changes, and developer reactions in one product feed.
Follow this Rust release-notes page to spot useful features, risky migrations, noisy announcements, and source links before they hit your backlog.
Changes.Watch links back to official changelog and release-note sources so summaries stay easy to verify.
Use channels to follow groups of tools around a stack, workflow, or topic.
Rolling windows show how many product updates landed in the last 7, 30, 90, and 365 days, grouped by existing changelog semantics.
1
1
5
14
Language: allow shortening lifetimes of &mut during unsize coercions and introduce new lints for invalid runtime symbols and c void return types.
Fixed a miscompilation issue caused by LLVM optimizations.
Added numerous stable const APIs, new Cargo configuration options (build.warnings, resolver.lockfile path), Rustdoc flags, and language lint improvements including trailing‑self import support.
Fixed Cargo's timeout and retry behavior
Added several language and compiler features: expr metavariables in cfg, automatic coercion of never types in tuples, support for s390x vector registers and LoongArch link relaxation, and allowing ManuallyDrop constants in patterns.
Stabilized new language and const‑eval features (if‑let guards, inline PowerPC asm, consistent padding semantics, many const APIs, and path‑segment keyword imports) and added neon‑accelerated `str::contains` for AArch64.
Fix std::thread::spawn on wasm32 wasip1 threads and resolve Clippy ICE in match same arms
Added numerous stable APIs and intrinsics, including array windows, element offset, LazyCell/Lock methods, TryFrom<char>, Peekable::next_if_map, FP16 intrinsics and new const math constants.
Fix an internal compiler error when recovering keywords, improving rustfmt stability
Stabilized numerous language features and added many new standard library APIs (e.g., s390x vector targets, C‑style variadic functions, const‑eval pointer copying, and extensive MaybeUninit/slice methods).
Added new language features such as raw mut const for union fields, combined track caller with no_mangle, and multiple bounds for associated items
Added file locking support on illumos, fixing Cargo’s build directory locking issue.
Stabilized numerous APIs (AtomicPtr fetch ops, strict integer ops, PathBuf extensions, Duration::from_mins/hours, const‑context methods) and added new diagnostics/linters (dangling pointer, integer‑to‑ptr transmutes, semicolon‑in‑macro d...
Split diagnostic attribute lint into four specific lints and stabilize signed integer subtractions (checked, overflowing, saturating, wrapping) plus many const‑stabilized APIs.
Stabilized generic argument inference, mismatched lifetime syntax lint, and made the implicit autorefs lint deny by default, plus many new target feature stabilizations (avx512, sha512, sm3, sm4, LoongArch, etc.)
- Added several new language features (let‑chains, naked functions, cfg boolean literals) and stabilized many const APIs and slice iteration methods.
Stabilized several language features (asm goto, open beginning ranges, precise capturing in traits) and updated the compiler (SSE2 required for i686, removed i586‑pc‑windows‑msvc target).
Stabilized upcasting trait objects, double‑negation lint, pointer non‑null debug asserts, and many const‑compatible APIs.
Fixed doctest merging for the 2024 edition and relaxed target checks during doc generation.
The 2024 Edition is now stable, async closures are stabilized, and AsyncFn is added to the prelude across all editions.
Fix ICE in duplicate crate diagnostics and errors for overlapping impls during incremental rebuilds
Added numerous language and compiler features: next‑generation trait solver for coherence, allow/deny inside forbid, safe raw refs of deref pointers, coercion of trait objects, include! path separator on Windows, and new warnings/errors ...
Stabilized new const capabilities (e.g., &mut in const, raw lifetimes, references to statics) and added many tier‑3 compilation targets while deprecating the unsound Csoft float flag.
Stabilized numerous APIs (e.g., thread::Builder::spawn_unchecked, const ops in inline asm, iterator sorting methods, const Waker/Context, uninit Rc/Arc/Box) and added new const capabilities
Language: abort on uncaught panics in extern "C" functions, stricter pointer-to-trait casts, and new lint handling for [expect]; libraries gain faster slice::sort/select_nth and split PanicInfo types (std::panic::PanicHookInfo).
Fix miscompilation in jump threading MIR optimization for float comparisons
Added language and compiler features including exclusive range patterns, zero‑byte offsets/ZST reads, C23 variadics support, field reordering on `repr(packed(1))`, spectre mitigations for MSVC, new lints, and a self‑contained linker fall...
Add numerous language and library features: inline const {} expressions, associated type bounds, redundant lifetimes and unnameable‑type lints, FromIterator for (Default+Extend) tuples, const‑fn APIs for core/std types, and new tier‑2/3 ...
Added async fn implementation in traits, hardened NaN pattern matching as a hard error, and introduced several new lints with stricter defaults (e.g., INVALID DOC ATTRIBUTES denied by default).
Fix CVE‑2024‑24576 by correcting argument escaping for Windows batch files in std::process::Command.
Reverts the default stripping of debug info on Windows, fixing a regression introduced in Rust 1.77.
Added several language features including opaque types in defining bodies, C string literals, async recursive calls, and new lints for static mut refs and braced macro invocations.
Security and soundness fixes for packed structs, dynamic size/align of packed dyn traits, and addition of Windows EHCont support.
Stabilized key language features: async fn returning impl Trait in traits, const‑fn pointer signatures, exhaustive usize/isize matching, guaranteed char size, partially moved values in match, and ratified RISC‑V target features.
Fixed spurious STATUS_ACCESS_VIOLATION crashes originating from LLVM code generation.
Stabilized numerous library APIs, including new From/Into impls for file handles, arrays, Rc/Arc, Step for IP addresses, and const‑compatible transmute/copy, plus core::num::Saturating and async drop tracking.
Added many new features: interpolated blocks in try/async macros, const‑eval stabilized APIs, extern "thiscall" ABIs, Arc<File> Read/Write/Seek impls, and numerous new Tier‑3 and Tier‑2 targets (e.g., wasm32‑wasi preview1 threads).
Fix CVE‑2023‑38497: Cargo now respects umask when extracting dependencies
Adjusted LLVM codegen to improve generated code.
Introduced numerous language and compiler enhancements, including const‑eval lint with exponential backoff, stabilized LoongArch64 inline‑asm, native WASM exceptions, NetBSD/aarch64 big‑endian support, tier‑3 loongarch64, forced static l...
Stabilized new language and library features: raw dylib, extern "C" unwind, and numerous const APIs (e.g., CStr::is_empty, NonZeroI ops, const read/write).
Stabilized numerous APIs (default implementations for many collection iterators, NonZero::MIN/MAX, Option::is_some, etc.) and introduced language relaxations (asm! operand ordering, const/unsafe checks in let bindings, negative literals ...
Added new language capabilities: deriving built‑in traits on packed structs with Copy fields, stabilized the cmpxchg16b target feature, improved trait‑bound analysis, allowed associated types as union fields, and treated `str` as a `[u8]...
Updated Cargo’s bundled GitHub RSA host key and revoked the previously leaked key
Fix miscompilation of Windows MSVC artifacts caused by ThinLTO in rustc distribution
Stabilized the default allocation error handler, efiapi calling convention, and several const‑eval APIs; added a new tier‑3 target (armv7 Sony Vita) and enabled sanitizers for s390x Linux.
Fix thin archive interoperability
Added coinductive sized predicates, async fn future output annotations, and varargs support for non‑C call conventions; stabilized many const APIs (integer ilog, char conversions) and merged crossbeam channel into std::sync::mpsc.
Add SSH host key validation for git URLs in Cargo.
Cargo now validates SSH host keys for git URLs.
Added numerous language and library features, including explicit discriminants for repr(Int) enums, ..=X pattern support, stabilized numeric and collection methods, and opaque types no longer implying lifetime bounds.
Stabilized many language features: let‑else, generic associated types, raw Windows dylibs, dynamic linking for iOS/tvOS, and new tier‑3 targets (armv4t, powerpc64‑openbsd, riscv64‑openbsd).
Added several new language features: unions with mutable references, deallocation of shared references inside UnsafeCell, const‑eval support for many APIs, fmt::Write for OsString, and many new non‑zero numeric helpers.
Added many stable APIs (e.g., array::from, TryReserve variants, const‑compatible intrinsics, new I/O handle types, thread::scope) and extended const‑eval support.
Fixed unsound function coercions with `impl Trait` return types and corrected an incremental compilation bug for async fn lifetimes.
Added numerous language and library features, including derive(Default) on enums, extern linkage for const functions, bool::then, total_cmp for floating‑point types, Stdin::lines, and new From implementations for Rc/Arc.
Const fn support expanded: generic trait bounds, impl Trait args/returns, function pointers, opaque impl Trait returns, and many offset/wrapping arithmetic methods now usable in const contexts.
Stabilized numerous language and library APIs, including cfg(panic), cfg(target_has_atomic), Arc::new_cyclic, slice::escape_ascii, numeric abs/diff methods, and Duration::try_from_secs enhancements.
Stabilized numerous language and library features, including default const arguments, destructuring assignment, asm! macros for multiple architectures, and many const‑fn APIs and iterator improvements.
Patched a race condition in std::fs::remove_dir_all (CVE‑2022‑21658).
Added support for named captures in format strings (`{ident}`) and expanded const‑eval capabilities (e.g., dereferencing const pointers, Duration methods, File::options) with relaxed Unsize rules.
Added macro‑attribute support after #[derive], curly‑brace macro calls in expressions, and allowed panics in const evaluation.
Added new lints to detect bidirectional override Unicode codepoints (CVE‑2021‑42574) in compiled source code
Stabilized the 2021 edition and added numerous language features such as new pattern bindings, const‑fn union field access, atomic Instant, and many const‑shrink APIs.
Unions now support Drop and ManuallyDrop fields, uninhabited enums can be cast to integers, and patterns can bind by reference or move, improving low‑level ergonomics.
Introduced several new language and library features, including allowing `unsafe` on modules, expanded C linking flags, new trait implementations (e.g., `io::Write` for child stdio streams, `TryFrom<Vec<T>>` for arrays), and const‑fn pro...
Stabilized many new const APIs and library enhancements (array traits for any length, Range defaults, CStr indexing, panic::Location impls, char ASCII methods) and added new targets with LLVM 11 upgrade.
Added several language enhancements: type parameters on foreign trait impls, nested self receivers, unrestricted identifier usage in format args, visibility modifiers on trait items/enums, extern "C" functions with Box<T>, loop‑label war...
Float‑to‑int casts (`as`) now saturate instead of causing undefined behaviour; use `to_int_unchecked` for the old semantics (breaking change).
Added async/await support for no_std and made vec![] usable in const contexts, plus many new const APIs and library improvements (e.g., Infallible Hash, OsString mutable deref, Unicode 13, const byte‑order conversions).
Added new language capabilities: ? operator in macros, literal matching in macros, Self constructors/patterns, and must_use trait attribute.
Object lifetime defaults are now enabled, causing breaking changes in trait object lifetimes, drop‑check rules, and size/align handling for dynamically sized types.
Added async/await syntax, const constructors for Vec::new/String::new/LinkedList::new and other std functions, and new cfg/allow/etc. attributes on function parameters; also added tier‑3 support for i686‑uefi and sparc64‑openbsd targets.
Added language improvements such as static references for literals, relaxed path syntax, parallel LLVM translation, automatic Clone impls for arrays/tuples, AsRawFd for stdio, and From implementations for Rc/Arc.
Major breaking syntax changes: removed many keywords, switched `import` to `use` and `use` to `extern`, eliminated args vector and deprecated argument modes, removed typestate, and replaced `pub/priv` export lists.
Core language features added: unique pointers, move semantics, closures, generics, static dispatch, multithread scheduling, pattern matching, lightweight lambdas, preliminary macros, and failure unwinding.
Stabilized many core library APIs (e.g., I/O, collections, iterator methods) and added numerous From/Into implementations.
Fix build on PowerPC unknown NetBSD
Language overhaul adds iterator‑based for loops, removes the copy keyword (use Clone), introduces a new FFI model with extern "C" fn and fixed‑stack wrappers, enforces new safety and visibility rules, adds default methods, SIMD arithmeti...
Prevent aborts when unwinding through FFI calls.
Added sysv64 external ABI, new armv4t‑linux‑gnueabi and aarch64‑openbsd targets, and default 16 codegen units for release builds; incremental compilation enabled by default for development builds.
Added several language syntax features (cfg on if, self in all fn contexts, type Foo: Ord, macro fragment interpolation, associated constants on primitives) and stabilized new const APIs.
Added numerous language features such as cfg(target_vendor) attribute, exhaustive integer patterns, multiple patterns in if let/while let (including irrefutable forms with warnings), expanded const function capabilities, packed alignment...
Stabilized dozens of APIs (e.g., BinaryHeap, Condvar, Path, VecDeque, iterator traits) and added cargo install support for installing binaries to ~/.cargo/bin as subcommands.
Added numerous language conveniences such as integer literal suffix inference, per‑item warning control, compact closure syntax, “do” expressions, extended wildcard patterns, and new syntax extensions (\line, \col, \file, etc.).
Stabilized many language features: repr(transparent), global allocator APIs, test functions returning Result, macro lifetime specifier, s/z optimization levels, short error format, and new lint for duplicated macro exports.
Implemented a workaround for an LLVM aliasing bug that caused miscompilation
Major syntax overhaul: self parameters now required, removed implicit self and several keywords (move, fail, assert, log), new lifetime and trait implementation syntax, and revamped use/import rules;
Added validation of static item types and lifetime bounds for Copy implementations
Fixed borrow checker to prevent potential unsoundness when using match ergonomics (issue #52213).
Added many new stable APIs (Windows/Unix OpenOptionsExt, panic hook accessors, Weak::new, compare_exchange for atomics, extensive Unix socket types, and a new crate type `cdylib` for non‑Rust hosts).
Added several language and library features, such as cfg attributes on generic parameters, enum variants via type aliases, const identifier usage, repr(align) on enums, the ? operator in the 2015 edition, and many new std APIs (e.g., Buf...
Fixed out-of-bounds write in `str::repeat` caused by integer overflow
Added deprecation warnings for the #[deprecated] attribute and transformed transmuting function pointers into a breaking change, turning warnings into errors after a few cycles.
Added overloading of compound assignment via new traits, empty struct brace syntax, and stabilized many library APIs (e.g., str::encode_utf16, Instant methods, BTree set covariance).
Stabilized pub(restricted) syntax (e.g., pub(crate)) and added several new stable APIs such as Child::try_wait, HashMap::retain, and rustc's ability to emit MIR with improved LLVM IR for trivial functions
Fix multiple regressions that caused ICEs, crashes, and LLVM errors (e.g., assertion failure, SIGSEGV, Windows ethcore build failure).
Stabilized the `?` operator, macros in type position, and statement attributes, expanding core language features.
Fix false positives in Clippy's redundant closure lint
Stabilized major language features: impl Trait, inclusive range syntax, 128‑bit integers, const evaluation for many operations, and Copy/Clone for closures.
Updated OpenSSL to 1.1.1g to remediate CVE‑2020‑1967
Added pipelined compilation support to rustc and cargo, improving compilation speed and allowing multiple feature flags.
Stabilized many std APIs (Path::strip_prefix, IPv4/IPv6 helpers, slice conversions, checked/saturating/overflowing ops, hashing, FFI conversions, BTreeMap performance, covariant iterators, str::replace Pattern, etc.).
Expanded std::fs with DirEntry optimizations, full OS metadata access and new symlink metadata functions; added raw‑handle traits (FromRawFd/AsRawFd on Unix, FromRawHandle/AsRawHandle on Windows) and OS‑specific symlink creators.
Added language features such as matching multiple tuple fields, safe‑fn‑to‑unsafe‑fn coercions, new iterator traits (TrustedLen, .zip() specialization) and stricter pattern‑matching lints
Standard library reaches ~75% stability, disabling unstable features on stable builds and normalizing crate naming conventions.
Cargo updated to address a macOS 10.13 (High Sierra) compatibility issue.
Stabilized basic procedural macros (custom derive) and added macro‑related enhancements, along with name‑resolution and type‑system refinements.
Added many language features: numeric fields for tuple structs, loops returning values, C‑compatible unions, non‑capturing closure coercion, and increased macro recursion limit.
Added extensive new language and library features such as generics specialization, cross‑crate function inlining, operator overloading, region pointers, classes, new loop constructs, and new modules (future, iter, arena, libuv).
Breaking changes introduced to type soundness and associated types, line iteration handling, static‑lifetime loan scope, str::parse rounding behavior, and use‑statement renaming, with some warnings becoming errors in the next release.
Added slice pattern syntax with subslices, #[repr(transparent)] for univariant enums, outer‑attribute procedural macros on inline modules, and several syntax relaxations (default in traits, omitted bodies, associated‑type bounds, C‑varia...
Removed several primitive types (str, T, @T) and the priv keyword, made struct fields private by default, and tightened lifetime and borrowing rules, causing widespread breaking API changes.
Fix const propagation with references.
Introduce the 2018 edition with new lifetime elision rules and const fn support
Added new target triples (riscv64imac, riscv64gc, powerpc64 freebsd), support for token streams in procedural macro attributes, extern crate self aliasing, linker plugin LTO, and allowing the `?` operator in doctests.
Fix rustdoc plugin execution vulnerability (CVE‑2018‑1000622).
RLS toolchain now supports Windows.
Stabilized several language and library features: repr(align), nested import groups, Float::from_bits/to_bits in core, const Duration constructors, and AsRef<Path for Component.
Added support for T op= &T on numeric types (breaks some inference cases).
Removed legacy language constructs (float, @, @mut, @fns, old fmt! macros, old extern mod syntax) and introduced new syntax (proc, continue, raw strings, feature gating), causing breaking changes.
Extensive breaking changes: removal of @ pointer patterns, the `do` keyword, many trait default bounds, and stricter visibility rules, plus changes to lifetimes and unsafe coercions.
rustc now uses the new Middle IR (MIR) for code generation, simplifying the LLVM pass and enabling new optimizations.
Implemented FnOnce, FnMut, and Fn traits for Box and added coercion of closures into unsafe function pointers.
Added procedural macros, raw identifiers, `crate::` paths, macro import/export, and a panic‑handler attribute, expanding code generation and visibility capabilities.
Implemented DST coercions for smart pointers, experimental parallel codegen, MSVC linker support, and numerous new library APIs (e.g., iter::once/empty, Extend implementations, wrapping arithmetic, pretty‑print debug formatting, RawFd/Ha...
Numerous breaking language changes: visibility qualifiers removed, implicit &'self removed, overloadable compound operators dropped, for‑loop protocol altered, struct fields immutable, core→std and std→extra crate renames, and many modul...
Added language and library features like arbitrary auto traits in trait objects, trailing commas in assert macros, Hash for raw pointers, new From implementations for atomic types, and performance improvements by avoiding unnecessary cop...
Disable or alter Error::type_id due to CVE‑2019‑12083
Enabled Non‑Lexical Lifetimes on the 2015 edition and made trait‑object ordering semantics stable, plus numerous APIs (e.g., const fns, VecDeque rotations, IO slices) are now stabilized.
Stabilized many standard library APIs (e.g., BinaryHeap::append, BTreeMap::split_off, Iterator::sum/product, numeric to_degrees/to_radians) and added new language features like nested cfg attributes, macro invocations at block end, and m...
Fixed overflow internal compiler error in rustdoc.
Added numerous stable APIs (Box conversions, raw Arc/Rc pointers, Ordering::then, BTreeMap range, Cell enhancements, etc.) and new language features like struct field shorthand and allowing Self in impl where‑clauses
Added const support for tuple structs, tuple enum variant constructors, and the is_power_of_two method on unsigned types.
Fix bindings handling in tuple struct patterns
Compiler upgraded to LLVM 7, minimum LLVM version now 5.0, and new targets added (powerpc64le‑linux‑musl, aarch64‑hermit, x86_64‑hermit) with stricter target‑spec validation.
rustfmt now respects `rustfmt::skip` inside cfg attributes again
Broad language overhaul: new macro syntax, token‑based quasi‑quoters, tuple structs, automatic move semantics, expanded self‑argument forms, trait inheritance with default methods, and merged module/type namespaces.
Stabilized language features such as associated constants, new `pub(restricted)` in `thread_local!`, expanded impls for unsized tuples, and increased `repr(align(N))` limit
Fix signature of IntoIter::as_mut_slice to match expected behavior
Documentation overhaul: the Rust Guide and many library docs were rewritten, Cargo was enhanced, and Rust now runs on 64‑bit Windows.
Fixed the borrow checker to prevent unsoundness when using match ergonomics.
Language updates: 'proc' is no longer a reserved keyword, the new `dyn` syntax is stable, generic parameter attributes are now stable, and a `must_use` lint is added to functions and types.
Stabilized numerous APIs (e.g., VecDeque::truncate/resize, String::insert, Duration::checked_* operations, binary search by key, Result::unwrap_or_default, etc.) and added trait implementations for Result, Duration, String, and IpAddr co...
Const functions now support if/match/loop, slice coercion, and added const fn utilities like mem::forget.