Rust versions · 1.0 to 1.99 · 2,142 stabilizations indexed
Rust versions: when was it stabilized, and which Rust do I need?
Search any API or language feature to see the Rust version that made it stable. Add a few and we work out the minimum Rust version (MSRV) your code needs.
Every release, newest first
- 1.99Oct 1, 2026Stabilize C-variadic function definitions; [Stabilize the ability to use #[unsafe(naked)] functions to define C-v
- 1.98Aug 20, 2026str::substr_range, [T]::subslice_range, core::fmt::NumBuffer
- 1.97Jul 9, 2026Stabilize the div32, lam-bh, lamcas, ld-seq-sa and scq target features; Stabilize cfg(target_has_atomic_primitive_alignment)
- 1.96May 28, 2026assert_matches!, debug_assert_matches!, From<T> for AssertUnwindSafe<T>
- 1.95Apr 16, 2026Stabilize if let guards on match arms; Stabilize inline assembly for PowerPC and PowerPC64
- 1.94Mar 5, 2026Stabilize additional 29 RISC-V target features including large portion
- 1.93Jan 22, 2026Stabilize several s390x vector-related target features and the is_s390; Stabilize declaration of C-style variadic functions for the system ABI
- 1.92Dec 11, 2025NonZero<u{N}>::div_ceil, Location::file_as_c_str, RwLockWriteGuard::downgrade
- 1.91Oct 30, 2025Stabilize declaration of C-style variadic functions for sysv64, win64,; Stabilize LoongArch32 inline assembly
- 1.90Sep 18, 2025u{n}::checked_sub_signed, u{n}::overflowing_sub_signed, u{n}::saturating_sub_signed
- 1.89Aug 7, 2025Stabilize explicitly inferred const arguments (feature(generic_arg_inf; Stabilize the avx512 target features
- 1.88Jun 26, 2025[Stabilize #![feature(let_chains)] in the 2024 edition.](https://githu; [Stabilize #![feature(naked_functions)].](https://github.com/rust-lang
- 1.87May 15, 2025Stabilize asm_goto feature; Stabilize feature(precise_capturing_in_traits) allowing use<...> bound
- 1.86Apr 3, 2025Stabilize upcasting trait objects to supertraits.
- 1.85Feb 20, 2025Rust 2024 edition. Stabilize async closures; [Stabilize #[diagnostic::do_not_recommend]](https://github.com/rust-la
- 1.84Jan 9, 2025Stabilize s390x inline assembly; Stabilize Arm64EC inline assembly
- 1.83Nov 28, 2024Stabilize &mut, *mut, &Cell, and *const Cell in const.; Stabilize expr_2021 macro fragment specifier in all editions.
- 1.82Oct 17, 2024Stabilize + use<'lt> opaque type precise capturing (RFC 3617); Stabilize &raw const and &raw mut operators (RFC 2582)
- 1.81Sep 5, 2024[Stabilize #[expect] for lints (RFC 2383),](https://github.com/rust-la
- 1.80Jul 25, 2024Stabilize exclusive_range_pattern feature
- 1.79Jun 13, 2024Stabilize inline const {} expressions.; Stabilize WebAssembly target features that are in phase 4 and 5.
- 1.78May 2, 2024[Stabilize #[cfg(target_abi = ...)]](https://github.com/rust-lang/rust; [Stabilize the #[diagnostic] namespace and #[diagnostic::on_unimplemen
- 1.77Mar 21, 2024Stabilize C-string literals.; Stabilize THIR unsafeck.
- 1.76Feb 8, 2024Arc::unwrap_or_clone, Rc::unwrap_or_clone, Result::inspect
- 1.75Dec 28, 2023Stabilize async fn and return-position impl Trait in traits.; Stabilize ratified RISC-V target features.
- 1.74Nov 16, 2023Stabilize impl_trait_projections
- 1.73Oct 5, 2023{integer}::div_ceil, {integer}::next_multiple_of, {integer}::checked_next_multiple_of
- 1.72Aug 24, 2023Stabilize inline asm for LoongArch64
- 1.71Jul 13, 2023Stabilize raw-dylib, link_ordinal, import_name_type and -Cdlltool.
- 1.70Jun 1, 2023NonZero*::MIN/MAX, BinaryHeap::retain, Default for std::collections::binary_heap::IntoIter
- 1.69Apr 20, 2023Stabilize the cmpxchg16b target feature on x86 and x86_64.
- 1.68Mar 9, 2023Stabilize default_alloc_error_handler; Stabilize efiapi calling convention.
- 1.67Jan 26, 2023{integer}::checked_ilog, {integer}::checked_ilog2, {integer}::checked_ilog10
- 1.66Dec 15, 2022Stabilize sym operands in inline assembly
- 1.65Nov 3, 2022Stabilize let else; Stabilize generic associated types (GATs)
- 1.64Sep 22, 2022future::IntoFuture, future::poll_fn, task::ready!
- 1.63Aug 11, 2022array::from_fn, Box::into_pin, BinaryHeap::try_reserve
- 1.62Jun 30, 2022[Stabilize #[derive(Default)] on enums with a #[default] variant][9445
- 1.61May 19, 2022Pin::static_mut, Pin::static_ref, Vec::retain_mut
- 1.60Apr 7, 2022[Stabilize #[cfg(panic = "...")] for either "unwind" or "abort".][9365; [Stabilize #[cfg(target_has_atomic = "...")] for each integer size and
- 1.59Feb 24, 2022[Stabilize default arguments for const parameters and remove the order; [Stabilize destructuring assignment][90521]
- 1.58Jan 13, 2022Metadata::is_symlink, Path::is_symlink, {integer}::saturating_div
- 1.57Dec 2, 2021[T; N]::as_mut_slice, [T; N]::as_slice, collections::TryReserveError
- 1.56Oct 21, 2021Rust 2021 edition. std::os::unix::fs::chroot, UnsafeCell::raw_get, BufWriter::into_parts
- 1.55Sep 9, 2021Bound::cloned, Drain::as_str, IntoInnerError::into_error
- 1.54Jul 29, 2021BTreeMap::into_keys, BTreeMap::into_values, HashMap::into_keys
- 1.53Jun 17, 2021AtomicBool::fetch_update, AtomicPtr::fetch_update, BTreeMap::retain
- 1.52May 6, 2021Arguments::as_str, char::MAX, char::REPLACEMENT_CHARACTER
- 1.51Mar 25, 2021Arc::decrement_strong_count, Arc::increment_strong_count, Once::call_once_force
- 1.50Feb 11, 2021bool::then, btree_map::Entry::or_insert_with_key, f32::clamp
- 1.49Dec 31, 2020slice::select_nth_unstable, slice::select_nth_unstable_by, slice::select_nth_unstable_by_key
- 1.48Nov 19, 2020slice::as_ptr_range, slice::as_mut_ptr_range, VecDeque::make_contiguous
- 1.47Oct 8, 2020Ident::new_raw, Range::is_empty, RangeInclusive::is_empty
- 1.46Aug 27, 2020Option::zip, vec::Drain::as_slice
- 1.45Jul 16, 2020Arc::as_ptr, BTreeMap::remove_entry, Rc::as_ptr
- 1.44Jun 4, 2020PathBuf::with_capacity, PathBuf::capacity, PathBuf::clear
- 1.43Apr 23, 2020Once::is_completed, f32::LOG10_2, f32::LOG2_10
- 1.42Mar 12, 2020CondVar::wait_while, CondVar::wait_timeout_while, DebugMap::key
- 1.41Jan 30, 2020Result::map_or, Result::map_or_else, std::rc::Weak::weak_count
- 1.40Dec 19, 2019BTreeMap::get_key_value, HashMap::get_key_value, Option::as_deref_mut
- 1.39Nov 7, 2019Pin::into_inner, Instant::checked_duration_since, Instant::saturating_duration_since
- 1.38Sep 26, 2019<*const T>::cast, <*mut T>::cast, Duration::as_secs_f32
- 1.37Aug 15, 2019BufReader::buffer, BufWriter::buffer, Cell::from_mut
- 1.36Jul 4, 2019VecDeque::rotate_left, VecDeque::rotate_right, Iterator::copied
- 1.35May 23, 2019f32::copysign, f64::copysign, RefCell::replace_with
- 1.34Apr 11, 2019Any::type_id, Error::type_id, atomic::AtomicI16
- 1.33Feb 28, 2019unix::FileExt::read_exact_at, unix::FileExt::write_all_at, Option::transpose
- 1.32Jan 17, 2019i8::to_be_bytes, i8::to_le_bytes, i8::to_ne_bytes
- 1.31Dec 6, 2018Rust 2018 edition. slice::align_to, slice::align_to_mut, slice::chunks_exact
- 1.30Oct 25, 2018Ipv4Addr::BROADCAST, Ipv4Addr::LOCALHOST, Ipv4Addr::UNSPECIFIED
- 1.29Sep 13, 2018Arc::downcast, Iterator::flatten, Rc::downcast
- 1.28Aug 2, 2018Iterator::step_by, Path::ancestors, SystemTime::UNIX_EPOCH
- 1.27Jun 21, 2018DoubleEndedIterator::rfind, DoubleEndedIterator::rfold, DoubleEndedIterator::try_rfold
- 1.26May 10, 2018*const T::add, *const T::copy_to_nonoverlapping, *const T::copy_to
- 1.25Mar 29, 2018Location::column, ptr::NonNull, Duration::new
- 1.24Feb 15, 2018RefCell::replace, RefCell::swap, atomic::spin_loop_hint
- 1.23Jan 4, 2018Fixes and improvements
- 1.22Nov 22, 2017Fixes and improvements
- 1.21Oct 12, 2017Fixes and improvements
- 1.20Aug 31, 2017CStr::into_c_string, CString::as_c_str, CString::into_boxed_c_str
- 1.19Jul 20, 2017OsString::shrink_to_fit, cmp::Reverse, Command::envs
- 1.18Jun 8, 2017[Stabilize pub(restricted)][40556] pub can now accept a module path to; [Stabilize #![windows_subsystem] attribute][40870] conservative exposu
- 1.17Apr 27, 2017Arc::into_raw, Arc::from_raw, Arc::ptr_eq
- 1.16Mar 16, 2017VecDeque::truncate, VecDeque::resize, String::insert_str
- 1.15Feb 2, 2017std::iter::Iterator::min_by, std::iter::Iterator::max_by, std::os::*::fs::FileExt
- 1.14Dec 22, 2016Fixes and improvements
- 1.13Nov 10, 2016[Stabilize the ? operator][36995]. ? is a simple way to propagate; [Stabilize macros in type position][36014]. Described in [RFC 873].
- 1.12Sep 29, 2016Cell::as_ptr, RefCell::as_ptr, IpAddr::is_unspecified
- 1.11Aug 18, 2016BinaryHeap::append, BTreeMap::append, BTreeMap::split_off
- 1.10Jul 7, 2016os::windows::fs::OpenOptionsExt::access_mode, os::windows::fs::OpenOptionsExt::share_mode, os::windows::fs::OpenOptionsExt::custom_flags
- 1.9May 26, 2016std::panic, std::panic::catch_unwind, std::panic::resume_unwind
- 1.8Apr 14, 2016Fixes and improvements
- 1.7Mar 3, 2016Fixes and improvements
- 1.6Jan 21, 2016Fixes and improvements
- 1.5Dec 10, 2015Fixes and improvements
- 1.4Oct 29, 2015Fixes and improvements
- 1.3Sep 17, 2015Fixes and improvements
- 1.2Aug 7, 2015Fixes and improvements
- 1.1Jun 25, 2015Fixes and improvements
- 1.0May 15, 2015Fixes and improvements
Editions
Editions change syntax and defaults without breaking old code: each crate picks one in Cargo.toml (edition = "2024") and crates on different editions work together. 2018 arrived with Rust 1.31, 2021 with 1.56, and 2024 with 1.85. Move with cargo fix --edition.
How we built this
We parse the Rust project's RELEASES.md: every "Stabilized APIs" list and every language and Cargo item that says it stabilizes something becomes a search entry pointing at its release. Release dates are the official ones.
Up next
Newest releaseRust 1.99: what is newRead it next →Also worth your time
Did this answer your question?