Version 1.23.0 (2018-01-04)
Language
- Arbitrary
autotraits are now permitted in trait objects. - rustc now uses subtyping on the left hand side of binary operations. Which should fix some confusing errors in some operations.
Compiler
- Enabled
TrapUnreachablein LLVM which should mitigate the impact of undefined behavior. - rustc now suggests renaming import if names clash.
- Display errors/warnings correctly when there are zero-width or wide characters.
- rustc now avoids unnecessary copies of arguments that are simple bindings This should improve memory usage on average by 5-10%.
- Updated musl used to build musl rustc to 1.1.17
Libraries
- Allow a trailing comma in
assert_eq/nemacro - Implement Hash for raw pointers to unsized types
- impl
From<*mut T>forAtomicPtr<T> - impl
From<usize/isize>forAtomicUsize/AtomicIsize. - Removed the
T: Syncrequirement forRwLock<T>: Send - Removed
T: Sizedrequirement for{<*const T>, <*mut T>}::as_refand<*mut T>::as_mut - Optimized
Thread::{park, unpark}implementation - Improved
SliceExt::binary_searchperformance. - impl
FromIterator<()>for() - Copied
AsciiExttrait methods to primitive types. Use ofAsciiExtis now deprecated.
Stabilized APIs
Cargo
- Cargo now supports uninstallation of multiple packages
eg.
cargo uninstall foo baruninstallsfooandbar. - Added unit test checking to
cargo check - Cargo now lets you install a specific version
using
cargo install --version
Misc
- Releases now ship with the Cargo book documentation.
- rustdoc now prints rendering warnings on every run.
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