Rust 1.23.0
Released on January 4, 2018
What's Changed
- [Arbitrary
autotraits are now permitted in trait objects.][45772] - [rustc now uses subtyping on the left hand side of binary operations.][45435]
- [Enabled
TrapUnreachablein LLVM which should mitigate the impact of - [rustc now suggests renaming import if names clash.][45660]
- [Display errors/warnings correctly when there are zero-width or
- [rustc now avoids unnecessary copies of arguments that are
- [Updated musl used to build musl rustc to 1.1.17][45393]
- [Allow a trailing comma in
assert_eq/nemacro][45887] - [Implement Hash for raw pointers to unsized types][45483]
- [impl
From<*mut T>forAtomicPtr][45610] - [impl
FromforAtomicUsize/AtomicIsize.][45610] - [Removed the
T: Syncrequirement forRwLock][45267]: Send - [Removed
T: Sizedrequirement for{<const T>, <mut T>}::as_ref - [Optimized
Thread::{park, unpark}implementation][45524] - [Improved
SliceExt::binary_searchperformance.][45333] - [impl
FromIterator<()>for()][45379] - [Copied
AsciiExttrait methods to primitive types.][44042] Use ofAsciiExt
- [Cargo now supports uninstallation of multiple packages][cargo/4561]
- [Added unit test checking to
cargo check][cargo/4592] - [Cargo now lets you install a specific version
- [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]
- [Releases now ship with the Cargo book documentation.][45692]
- [rustdoc now prints rendering warnings on every run.][45324]
Full Changelog
Language
--------
- [Arbitrary auto traits 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 TrapUnreachable in 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/ne macro][45887]
- [Implement Hash for raw pointers to unsized types][45483]
- [impl From<*mut T> for AtomicPtr][45610]
- [impl From for AtomicUsize/AtomicIsize.][45610]
- [Removed the T: Sync requirement for RwLock][45267]
- [Removed T: Sized requirement for {<const T>, <mut T>}::as_ref
and <*mut T>::as_mut][44932]
- [Optimized Thread::{park, unpark} implementation][45524]
- [Improved SliceExt::binary_search performance.][45333]
- [impl FromIterator<()> for ()][45379]
- [Copied AsciiExt trait methods to primitive types.][44042] Use of AsciiExt
is now deprecated.
Stabilized APIs
---------------
Cargo
-----
- [Cargo now supports uninstallation of multiple packages][cargo/4561]
eg. cargo uninstall foo bar uninstalls foo and bar.
- [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.][45853] [Tracking issue for
further information][45852]
- [char::escape_debug now uses Unicode 10 over 9.][45571]
- [Upgraded Android SDK to 27, and NDK to r15c.][45580] This drops support for
Android 9, the minimum supported version is Android 14.
- [Bumped the minimum LLVM to 3.9][45326]
[44042]: https://github.com/rust-lang/rust/pull/44042
[44932]: https://github.com/rust-lang/rust/pull/44932
[45267]: https://github.com/rust-lang/rust/pull/45267
[45324]: https://github.com/rust-lang/rust/pull/45324
[45326]: https://github.com/rust-lang/rust/pull/45326
[45333]: https://github.com/rust-lang/rust/pull/45333
[45379]: https://github.com/rust-lang/rust/pull/45379
[45380]: https://github.com/rust-lang/rust/pull/45380
[45393]: https://github.com/rust-lang/rust/pull/45393
[45435]: https://github.com/rust-lang/rust/pull/45435
[45483]: https://github.com/rust-lang/rust/pull/45483
[45524]: https://github.com/rust-lang/rust/pull/45524
[45571]: https://github.com/rust-lang/rust/pull/45571
[45580]: https://github.com/rust-lang/rust/pull/45580
[45610]: https://github.com/rust-lang/rust/pull/45610
[45660]: https://github.com/rust-lang/rust/pull/45660
[45692]: https://github.com/rust-lang/rust/pull/45692
[45711]: https://github.com/rust-lang/rust/pull/45711
[45772]: https://github.com/rust-lang/rust/pull/45772
[45852]: https://github.com/rust-lang/rust/issues/45852
[45853]: https://github.com/rust-lang/rust/pull/45853
[45887]: https://github.com/rust-lang/rust/pull/45887
[45920]: https://github.com/rust-lang/rust/pull/45920
[cargo/4561]: https://github.com/rust-lang/cargo/pull/4561
[cargo/4592]: https://github.com/rust-lang/cargo/pull/4592
[cargo/4637]: https://github.com/rust-lang/cargo/pull/4637