Email me

Rust versions / 1.44

Rust release · Jun 4, 2020

Rust 1.44: what's new, what was stabilized

Short answerRust 1.44 was released on Jun 4, 2020: 12 newly stable APIs (PathBuf::with_capacity, PathBuf::capacity, PathBuf::clear, PathBuf::reserve, ...); 6 compatibility notes that can affect existing code. Point release: 1.44.1 (Jun 18, 2020).

Jun 4, 2020release date
0language stabilizations
12APIs stabilized
-new edition

← Rust 1.43All versionsRust 1.45 →

12 APIs stabilized

PathBuf::with_capacity, PathBuf::capacity, PathBuf::clear, PathBuf::reserve, PathBuf::reserve_exact, PathBuf::shrink_to_fit, f32::to_int_unchecked, f64::to_int_unchecked, Layout::align_to, Layout::pad_to_align, Layout::array, Layout::extend

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:

  • [Rustc now correctly generates static libraries on Windows GNU targets with
  • [Removed the -C no_integrated_as flag from rustc.][70345]
  • [The file_name property in JSON output of macro errors now points the actual
  • [The minimum required external LLVM version has been bumped to LLVM 8.][71147]
  • [mem::{zeroed, uninitialised} will now panic when used with types that do
  • [In 1.45.0 (the next release) converting a f64 to u32 using the as

Use it

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

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

  • [You can now use async/.await with #[no_std] enabled.][69033]
  • [Added the unused_braces lint.][70081]

**Syntax-only changes**

  • [Expansion-driven outline module parsing][69838]
#[cfg(FALSE)]
mod foo {
    mod bar {
        mod baz; // `foo/bar/baz.rs` doesn't exist, but no error!
    }
}

These are still rejected semantically, so you will likely receive an error but these changes can be seen and parsed by macros and conditional compilation.

Compiler

  • [Rustc now respects the -C codegen-units flag in incremental mode.][70156] Additionally when in incremental mode rustc defaults to 256 codegen units.
  • [Refactored catch_unwind to have zero-cost, unless unwinding is enabled and a panic is thrown.][67502]
  • [Added tier 3\* support for the aarch64-unknown-none and aarch64-unknown-none-softfloat targets.][68334]
  • [Added tier 3 support for arm64-apple-tvos and x86_64-apple-tvos targets.][68191]

Libraries

  • [Special cased vec![] to map directly to Vec::new().][70632] This allows vec![] to be able to be used in const contexts.
  • [convert::Infallible now implements Hash.][70281]
  • [OsString now implements DerefMut and IndexMut returning a &mut OsStr.][70048]
  • [Unicode 13 is now supported.][69929]
  • [String now implements From<&mut str>.][69661]
  • [IoSlice now implements Copy.][69403]
  • [Vec<T> now implements From<[T; N]>.][68692] Where N is at most 32.
  • [proc_macro::LexError now implements fmt::Display and Error.][68899]
  • [from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes, and to_ne_bytes methods are now const for all integer types.][69373]

Stabilized APIs

  • [PathBuf::with_capacity]
  • [PathBuf::capacity]
  • [PathBuf::clear]
  • [PathBuf::reserve]
  • [PathBuf::reserve_exact]
  • [PathBuf::shrink_to_fit]
  • [f32::to_int_unchecked]
  • [f64::to_int_unchecked]
  • [Layout::align_to]
  • [Layout::pad_to_align]
  • [Layout::array]
  • [Layout::extend]

Cargo

  • [Added the cargo tree command which will print a tree graph of your dependencies.][cargo/8062] E.g. `` mdbook v0.3.2 (/Users/src/rust/mdbook) ├── ammonia v3.0.0 │ ├── html5ever v0.24.0 │ │ ├── log v0.4.8 │ │ │ └── cfg-if v0.1.9 │ │ ├── mac v0.1.1 │ │ └── markup5ever v0.9.0 │ │ ├── log v0.4.8 (*) │ │ ├── phf v0.7.24 │ │ │ └── phf_shared v0.7.24 │ │ │ ├── siphasher v0.2.3 │ │ │ └── unicase v1.4.2 │ │ │ [build-dependencies] │ │ │ └── version_check v0.1.5 ... ` You can also display dependencies on multiple versions of the same crate with cargo tree -d (short for cargo tree --duplicates`).

Misc

  • [Rustdoc now allows you to specify --crate-version to have rustdoc include the version in the sidebar.][69494]

Compatibility Notes

  • [Rustc now correctly generates static libraries on Windows GNU targets with the .a extension, rather than the previous .lib.][70937]
  • [Removed the -C no_integrated_as flag from rustc.][70345]
  • [The file_name property in JSON output of macro errors now points the actual source file rather than the previous format of <NAME macros>.][70969] **Note:** this may not point to a file that actually exists on the user's system.
  • [The minimum required external LLVM version has been bumped to LLVM 8.][71147]
  • [mem::{zeroed, uninitialised} will now panic when used with types that do not allow zero initialization such as NonZeroU8.][66059] This was previously a warning.
  • [In 1.45.0 (the next release) converting a f64 to u32 using the as operator has been defined as a saturating operation.][71269] This was previously undefined behaviour, but you can use the {f64, f32}::to_int_unchecked methods to continue using the current behaviour, which may be desirable in rare performance sensitive situations.

Internal Only

These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools.

1.44.1 (Jun 18, 2020)

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

← Rust 1.43All versionsRust 1.45 →

Up next

Next releaseRust 1.45Released Jul 16, 2020.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