Popular: Data updated October 27, 2026

Categories

Internet1,356
Communication321
Audio & video898
Graphics & design539
Office & productivity1,124
Developer tools3,134
AI tools529
Security & privacy385
System tools3,114
Games523
Education & science239
Network & IT284

Rust (GNU) 1.98.0 download

A language empowering everyone to build reliable and efficient software.

This is an older version. The current version is 1.99.1. Rust (GNU) 1.99.1 · Released:
1.98.0 is part of the 1.98 line, which reached its end of life on October 1, 2026. It no longer receives security fixes. endoflife.date

Installer files 1.98.0

ArchitectureTypeScopeFile sizeDownloadSHA256
64-bit MSI — — static.rust-lang.org VirusTotal
32-bit MSI — — static.rust-lang.org VirusTotal

Link and SHA256 come from the Windows Package Manager community manifest. Compare the hash of the downloaded file before running it.

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
- [T]::subslice_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
- [T]::strip_circumfix
- str::strip_circumfix
- Atomic<T>::from_mut
- Atomic<T>::get_mut_slice
- Atomic<T>::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.

https://github.com/rust-lang/rust/releases/tag/1.98.0

Most popular in Languages & SDKs

See all
  1. Go Programming LanguageAn open source programming language that makes it simple to build secure, scalable systems.
  2. LLVMA collection of modular and reusable compiler and toolchain technologies.
  3. DenoA modern runtime for JavaScript and TypeScript
  4. CMakeCMake is a cross-platform, open-source build system generator.
  5. YarnYarn is a package manager that doubles down as project manager. Whether you work on one-shot projects or large monorepos, as a hobbyist or an enterprise user, we've got you covered.
  6. CcacheCcache is a compiler cache. It speeds up recompilation by caching previous compilations and detecting when the same compilation is being done again.
  7. sbtA build tool for Scala, Java, and more
  8. BOINCOpen-source software for volunteer computing and grid computing.
  9. Dart SDKA set of tools and libraries for the Dart programming language.
  10. NVM for WindowsA node.js version management utility for Windows. Ironically written in Go.

More from The Rust Project Developers

See all
  • rust-analyzerrust-analyzer is a language server that provides IDE functionality for writing Rust programs. You can use it with any editor that supports the Language Server Protocol (VS Code, Vim, Emacs, Zed, etc).
  • Rust (MSVC)A language empowering everyone to build reliable and efficient software.
  • Rust (GNU LLVM)A language empowering everyone to build reliable and efficient software.

Tags

Share