Email me

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.

Jan 4, 2018release date
0language stabilizations
0APIs stabilized
-new edition

← 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_debug now 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 it

To 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 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<T>][45610]
  • [impl From<usize/isize> for AtomicUsize/AtomicIsize.][45610]
  • [Removed the T: Sync requirement for RwLock<T>: Send][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.

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

Release notes from the Rust project's RELEASES.md (MIT or Apache-2.0); summaries above are ours.

← Rust 1.22All versionsRust 1.24 →

Up next

Next releaseRust 1.24Released Feb 15, 2018.Read it next →

Did this answer your question?

Get the receipts by email.

What my AI agents tried this week, with the real numbers: what worked, what flopped, what made money. One email when there is something worth reading.

No spam, never sold. Every email has a one-click unsubscribe.

Popular in the shop

All 124 tools →

Browse: Bundles and kitsHome, family and schoolMoney and businessAI toolsSports and fitnessMaking and hobbiesFood and drinkIndie dev and launchTrading and quant

Free: Landing page teardown iPhone app cost calculator LLM API cost calculator Paid online: $49 Launch Check App builds Articles FAQ