Rust (GNU LLVM)

The Rust Project Developers·Rustlang.Rust.GNU.LLVM

A language empowering everyone to build reliable and efficient software.

The Rust programming language helps you write faster, more reliable software. High-level ergonomics and low-level control are often at odds in programming language design; Rust challenges that conflict. Through balancing powerful technical capacity and a great developer experience, Rust gives you the option to control low-level details (such as memory usage) without all the hassle traditionally associated with such control.

winget install --id Rustlang.Rust.GNU.LLVM --exact --source winget

Latest 1.98.0·August 20, 2026

Release Notes

Language

  • Allow shortening lifetime of &mut when unsize-coercing, even in an invariant position. For example, you can now coerce a Cell<&'long mut i32> to a Cell<&'short mut dyn Send>. Such shortenings were already previously allowed when coercing a &mut to a &, or coercing a & to a &.
  • Add deny-by-default invalid_runtime_symbol_definitions lint and warn-by-default suspicious_runtime_symbol_definitions lint
    • The lints currently specifically targets core runtime symbols like memcmp, memset, strlen, ... and is planned to be expanded in the next few releases.
  • Add warn-by-default c_void_returns lint to check core::ffi::c_void as a return type Platform Support
  • Add powerpc64-unknown-linux-gnuelfv2 as Tier 3
  • Add aarch64-unknown-linux-pauthtest as Tier 3 target
  • Promote thumbv7a-none-eabi to Tier 2
  • Promote thumbv7a-none-eabihf to Tier 2
  • Promote thumbv7r-none-eabi to Tier 2
  • Promote thumbv7r-none-eabihf to Tier 2
  • Promote thumbv8r-none-eabihf to Tier 2 Refer to Rust's platform support page for more information on Rust's tiered platform support. Libraries
  • Change Location<'_> lifetime to 'static in Panic[Hook]Info
  • Document panic in RangeInclusive::from(legacy::RangeInclusive)
  • Document that ManuallyDrop's Box interaction has been fixed
  • Stabilize LoongArch CRC Intrinsics
  • The derive macro is available at {core,std}::derive. This was previously unintentionally stabilized in 1.96, but is now explicitly accepted as a stabilized API.
    • Please note that the MSRV for {core,std}::derive will be 1.96, and not 1.98. Stabilized APIs
  • str::substr_range
  • core::fmt::NumBuffer
  • <{integer}>::format_into
  • Send/Sync for std::process::CommandArgs
  • {fN}::algebraic_add
  • {fN}::algebraic_sub
  • {fN}::algebraic_mul
  • {fN}::algebraic_div
  • {fN}::algebraic_rem
  • NonZero<{integer}>::from_str_radix
  • String::from_utf16le
  • String::from_utf16le_lossy
  • String::from_utf16be
  • String::from_utf16be_lossy
  • str::strip_circumfix
  • Atomic::from_mut
  • Atomic::get_mut_slice
  • Atomic::from_mut_slice
  • std::range::legacy Compatibility Notes
  • If fully elided, lifetime bounds of trait object types may now resolve differently or even get rejected in very specific niche scenarios
  • Error in more cases of ambiguous imports
  • Switch the destructors implementation for thread locals on Windows to use Fiber Local Storage (FLS)
  • Convert some cases of the ambiguous_glob_imports lint into a hard error
  • Where-bounds of the form Type = Type and Type == Type are no longer syntactically allowed
  • Ensure Send/Sync is not implemented for std::env::Vars{,Os}
  • Fix that in some attributes, arguments were not properly rejected
  • repr(transparent) is now more strict about which fields have "trivial" layout and hence can be ignored: repr(C) types, types with private fields, and #[non_exhaustive] types are no longer considered "trivial"
  • Correctly check whether types have equal size in transmute() when some repr attributes are involved.
  • More characters are escaped when printing strings and chars
  • Implement fast path for derive(PartialOrd) when deriving Ord This can break crates in practice where a type's PartialOrd and Ord impls were inconsistent with each other.
  • Add temporary scope to assert_eq and assert_ne
  • Closed a hole in the pattern matching structural equality check, preventing cases where a match of a constant would be allowed, despite disagreeing with a manually written PartialEq implementation, when a derive(PartialEq) implementation for that type also exists.
  • On Emscripten the WASM exception handling ABI is now unconditionally used The -Zemscripten-wasm-eh=false flag to switch back to JS exceptions has been removed.
  • The UNSAFE_CODE lint is now consistently emitted for all unsafe attributes
  • Solaris: remove File::lock implementation, it has the wrong semantics (return "unsupported" instead)
  • Windows-gnu targets now specify baseline tools versions
  • rustfmt now discovers module files that are defined in cfg_select! This may cause more code to be formatted which was previously ignored.

Installer type: wix

x643012F02838E7368BB115A06482E4253361E7AEB4BE41ED8A8EE56A94E72AA805
arm64DC598206094EC048573F2C68594D7C81F17BCB0A7BE082BD1306B4215ECC8876

Details

Homepage
https://www.rust-lang.org/
License
Apache-2.0 AND MIT
Publisher
The Rust Project Developers
Support
https://users.rust-lang.org/
Privacy Policy
https://rustfoundation.org/policy/privacy-policy/
Copyright
Copyright (c) The Rust Project Contributors
Moniker
rust-gnu-llvm

Tags

cargoclippygnu-toolchainllvmrustcrustdocrustup

Older versions (8)

1.97.1
x6451D6131E3BB76D3CB5E6F572933371F96074C4F865A715713959B3FB17E5D86A
arm64E409D09ED0F4C8581C1E5523203509DD0575A0C180082F4D17B2415FEB81E5CB
1.97.0
x64F013B501D8CC8B51EAA115DF9000C0F9FF303B84CBE06EA260978F63D12209FD
arm64032B14451CA0332A4BDCF72A36A3BD07EF68891DDD298A5F363630ED4F64CE16
1.96.1
x64D0CF82C67372FBEBC60AA46FEF2DFAFF6AF162BFA5F914D147F0BE4EBEAA21AE
arm646EE0DB2588ABA991B3B87AE0F224A13488A19DBCFA3273958FE85A55940A3870
1.96.0
x64F51DFD3B4DD183933321B7E0239EC316FD39435015D5CAF3A377273E9060CD10
arm64A6763781BABB2F97378DBCEE991F9150E6FB12853A278B9F553038D606BE76F1
1.95.0
x6443CFB45709F81A1A5A4DCE201B735AB269CA2FA7946A7DCCD6C215F01E1549F1
arm6483D345A1D51F5D684AAD509DA18CEDEC54B8C56D24FCD61D9AA9973B339C836D
1.94.1
x6471E700DAA3F9747AEF50DDEA65A1101A87569BD41560DC6396C37DA0FE6DE4B9
arm6448DB84B60547F04F4E57EAABCC6942F2D1AEF136664D3A7506EB79B3C4B13FE4
1.94.0
x643F0BB5E93847E0AEE20926C229C90C15AB6AEA0D13AEF5E4018DEFD82DF3587B
arm64A3ACFE3836789FE088101256E3CBDC9CAFF141BE0D9B7A73637DF7E5CAA49EF5
1.93.1
x6417A5835A034F45C43066708ECFDAED83A8E692625A9BAC6B7B4ACAD54F68AC87
arm641A2E1CDE908B3E50C805F553261C20A51F4B11EA76C8919E4BF8F968241AF0EC