Email me

Rust versions / 1.38

Rust release · Sep 26, 2019

Rust 1.38: what's new, what was stabilized

Short answerRust 1.38 was released on Sep 26, 2019: 11 newly stable APIs (<*const T>::cast, <*mut T>::cast, Duration::as_secs_f32, Duration::as_secs_f64, ...); 2 compatibility notes that can affect existing code.

Sep 26, 2019release date
0language stabilizations
11APIs stabilized
-new edition

← Rust 1.37All versionsRust 1.39 →

11 APIs stabilized

<*const T>::cast, <*mut T>::cast, Duration::as_secs_f32, Duration::as_secs_f64, Duration::div_f32, Duration::div_f64, Duration::from_secs_f32, Duration::from_secs_f64, Duration::mul_f32, Duration::mul_f64, any::type_name

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:

  • The [x86_64-unknown-uefi platform can not be built][62785] with rustc
  • The [armv7-unknown-linux-gnueabihf platform is known to have

Use it

rustup update stable        # get the newest release
rustup install 1.38          # or exactly this one
rustup override set 1.38     # pin a project to it

To require at least this version from users of your crate, set rust-version = "1.38" 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

  • [The #[global_allocator] attribute can now be used in submodules.][62735]
  • [The #[deprecated] attribute can now be used on macros.][62042]

Compiler

  • [Added pipelined compilation support to rustc.][62766] This will improve compilation times in some cases. For further information please refer to the [_"Evaluating pipelined rustc compilation"_][pipeline-internals] thread.
  • [Added tier 3\* support for the aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, and x86_64-uwp-windows-msvc targets.][60260]
  • [Added tier 3 support for the armv7-unknown-linux-gnueabi and armv7-unknown-linux-musleabi targets.][63107]
  • [Added tier 3 support for the hexagon-unknown-linux-musl target.][62814]
  • [Added tier 3 support for the riscv32i-unknown-none-elf target.][62784]
  • [Upgraded to LLVM 9.][62592]

\* Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support.

Libraries

  • [ascii::EscapeDefault now implements Clone and Display.][63421]
  • [Derive macros for prelude traits (e.g. Clone, Debug, Hash) are now available at the same path as the trait.][63056] (e.g. The Clone derive macro is available at std::clone::Clone). This also makes all built-in macros available in std/core root. e.g. std::include_bytes!.
  • [str::Chars now implements Debug.][63000]
  • [slice::{concat, connect, join} now accepts &[T] in addition to &T.][62528]
  • [*const T and *mut T now implement marker::Unpin.][62583]
  • [Arc<[T]> and Rc<[T]> now implement FromIterator<T>.][61953]
  • [Added euclidean remainder and division operations (div_euclid, rem_euclid) to all numeric primitives.][61884] Additionally checked, overflowing, and wrapping versions are available for all integer primitives.
  • [thread::AccessError now implements Clone, Copy, Eq, Error, and PartialEq.][61491]
  • [iter::{StepBy, Peekable, Take} now implement DoubleEndedIterator.][61457]

Stabilized APIs

  • [<*const T>::cast]
  • [<*mut T>::cast]
  • [Duration::as_secs_f32]
  • [Duration::as_secs_f64]
  • [Duration::div_f32]
  • [Duration::div_f64]
  • [Duration::from_secs_f32]
  • [Duration::from_secs_f64]
  • [Duration::mul_f32]
  • [Duration::mul_f64]
  • [any::type_name]

Cargo

  • [Added pipelined compilation support to cargo.][cargo/7143]
  • [You can now pass the --features option multiple times to enable multiple features.][cargo/7084]

Rustdoc

  • [Documentation on pub use statements is prepended to the documentation of the re-exported item][63048]

Misc

  • [rustc will now warn about some incorrect uses of mem::{uninitialized, zeroed} that are known to cause undefined behaviour.][63346]

Compatibility Notes

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

← Rust 1.37All versionsRust 1.39 →

Up next

Next releaseRust 1.39Released Nov 7, 2019.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