Rust versions / 1.23
Rust release · Jan 4, 2018
Rust 1.23: what's new, what was stabilized
Short answerRust 1.23 was released on Jan 4, 2018: 4 compatibility notes that can affect existing code.
← Rust 1.22All versionsRust 1.24 →
Can it break my build?
The release lists these compatibility notes. Most only affect rare code, but read them before you raise your toolchain in CI:
- [Changes have been made to type equality to make it more correct,
- [
char::escape_debugnow uses Unicode 10 over 9.][45571] - [Upgraded Android SDK to 27, and NDK to r15c.][45580] This drops support for
- [Bumped the minimum LLVM to 3.9][45326]
Use it
rustup update stable # get the newest release
rustup install 1.23 # or exactly this one
rustup override set 1.23 # pin a project to itTo require at least this version from users of your crate, set rust-version = "1.23" under [package] in Cargo.toml. Cargo then refuses to build it on older compilers with a clear message, and with resolver 3 (the default on the 2024 edition, Rust 1.85+) it also prefers dependency versions that support it.
Full release notes
Language
- [Arbitrary
autotraits are now permitted in trait objects.][45772] - [rustc now uses subtyping on the left hand side of binary operations.][45435] Which should fix some confusing errors in some operations.
Compiler
- [Enabled
TrapUnreachablein LLVM which should mitigate the impact of undefined behavior.][45920] - [rustc now suggests renaming import if names clash.][45660]
- [Display errors/warnings correctly when there are zero-width or wide characters.][45711]
- [rustc now avoids unnecessary copies of arguments that are simple bindings][45380] This should improve memory usage on average by 5-10%.
- [Updated musl used to build musl rustc to 1.1.17][45393]
Libraries
- [Allow a trailing comma in
assert_eq/nemacro][45887] - [Implement Hash for raw pointers to unsized types][45483]
- [impl
From<*mut T>forAtomicPtr<T>][45610] - [impl
From<usize/isize>forAtomicUsize/AtomicIsize.][45610] - [Removed the
T: Syncrequirement forRwLock<T>: Send][45267] - [Removed
T: Sizedrequirement for{<*const T>, <*mut T>}::as_refand<*mut T>::as_mut][44932] - [Optimized
Thread::{park, unpark}implementation][45524] - [Improved
SliceExt::binary_searchperformance.][45333] - [impl
FromIterator<()>for()][45379] - [Copied
AsciiExttrait methods to primitive types.][44042] Use ofAsciiExtis now deprecated.
Cargo
- [Cargo now supports uninstallation of multiple packages][cargo/4561] eg.
cargo uninstall foo baruninstallsfooandbar. - [Added unit test checking to
cargo check][cargo/4592] - [Cargo now lets you install a specific version using
cargo install --version][cargo/4637]
Misc
- [Releases now ship with the Cargo book documentation.][45692]
- [rustdoc now prints rendering warnings on every run.][45324]
Compatibility Notes
- Changes have been made to type equality to make it more correct, in rare cases this could break some code. Tracking issue for further information
char::escape_debugnow uses Unicode 10 over 9.- Upgraded Android SDK to 27, and NDK to r15c. This drops support for Android 9, the minimum supported version is Android 14.
- Bumped the minimum LLVM to 3.9
Release notes from the Rust project's RELEASES.md (MIT or Apache-2.0); summaries above are ours.
Up next
Next releaseRust 1.24Released Feb 15, 2018.Read it next →Also worth your time
Did this answer your question?