Stable Release in branch 1.49
1.49.0
Released 31 Dec 2020
(5 years ago)
SoftwareRust
Version1.49
Initial release1.49.0
31 Dec 2020
(5 years ago)
Latest release1.49.0
31 Dec 2020
(5 years ago)
Support status12 Feb 2021
(Ended 5 years ago)
Release noteshttps://github.com/rust-lang/rust/releases/tag/1.49.0
Source codehttps://github.com/rust-lang/rust/tree/1.49.0
Downloadhttps://github.com/rust-lang/rust/releases/tag/1.49.0
Rust 1.49 ReleasesView full list

What Is New in Rust 1.49

Category Highlights
New Features Tier 1 support for aarch64-unknown-linux-gnu, Tier 2 for aarch64-apple-darwin and aarch64-pc-windows-msvc; three new stable library functions and two functions promoted to const.
Improvements Test framework now captures thread output and only prints it on failure, reducing noisy test logs.

How does Rust 1.49 improve support for ARM platforms?

Rust 1.49 promotes the aarch64-unknown-linux-gnu target to Tier 1, giving it the same testing guarantees as x86 platforms.

  • Tier 1 means the full test suite runs on every change and pre-built binaries are shipped.
  • The aarch64-apple-darwin (Apple M1) and aarch64-pc-windows-msvc (Windows ARM) targets reach Tier 2, providing ready-to-install binaries via rustup while the test suite is not yet executed on those platforms.
  • This matters if your CI or production workloads run on 64-bit ARM; you can now depend on official binaries and expect higher stability.

What changes were made to the built-in test framework in Rust 1.49?

The test runner now captures all output from spawned threads and only displays it when a test fails.

#[test]
fn thready_pass() {
    println!("fee");
    std::thread::spawn(|| {
        println!("fie");
        println!("foe");
    })
    .join()
    .unwrap();
    println!("fum");
}

Running this test with Rust 1.48 prints the thread's println! lines interleaved with the harness output. With Rust 1.49 the output is hidden on success, producing a clean "ok" line; on failure the full stdout (including fee, fie, foe, fum) is shown, aiding debugging.

Which new stable library functions arrived in Rust 1.49?

Rust 1.49 adds three new stable functions to the standard library and promotes two existing functions to const, allowing them in constant contexts.

  • The exact function signatures are listed in the detailed release notes; they expand the API surface for low-level and const-eval use cases.
  • Making functions const enables compile-time computation, which can reduce runtime overhead in performance-critical code.

How does Tier 1 support affect CI pipelines for aarch64-unknown-linux-gnu?

CI pipelines can now pull pre-built aarch64-unknown-linux-gnu binaries from the official channel and rely on the fact that the full Rust test suite runs on that platform for every change.

  • This reduces the need for custom cross-compilation steps.
  • It also gives higher confidence that platform-specific bugs are caught upstream.

Frequently Asked Questions

Does Rust 1.49 require a new rustup command to install the ARM targets?
Yes you can add them with rustup target add aarch64-apple-darwin, aarch64-pc-windows-msvc or aarch64-unknown-linux-gnu.

Will existing Cargo test suites produce different output after upgrading to Rust 1.49?
The test runner now hides thread output on success and only shows it when a test fails.

Are there any breaking changes in the standard library for Rust 1.49?
No breaking changes were introduced in this release.

Which new stable functions were added in Rust 1.49?
The release added three new stable functions and made two existing functions const, as described in the official release notes.

How does Tier 1 support affect CI pipelines for aarch64-unknown-linux-gnu?
CI can rely on official pre-built binaries and full test coverage, giving higher confidence for production builds.

Can I use Rust 1.49 on Windows ARM devices today?
Yes the aarch64-pc-windows-msvc target reached Tier 2 and pre-built binaries are available via rustup.

Releases In Branch 1.49

VersionRelease date
1.49.031 Dec 2020
(5 years ago)