Rust 1.100 Drops 32-bit Windows Hosts. Can You Still Build x86 Apps?
Customers still need x86 binaries, and your build machine already runs 64-bit Windows. Will your project's toolchain pin keep picking the compiler that's going away?

- Rust 1.100 will stop shipping host tools for the two i686 Windows targets.
- The target standard libraries remain available for cross-compilation.
- Move the compiler to a supported host while preserving the i686 target and its native dependencies.
You can keep shipping 32-bit Windows applications
The October 2 announcement changes where the Rust compiler runs. Starting with 1.100, the project will stop distributing host tools for i686 Windows. Supported hosts, including 64-bit Windows, can still produce 32-bit Windows applications.
The host runs the compiler; the target runs the resulting program. They do not have to match.
| Target | Support from Rust 1.100 | What remains |
|---|---|---|
i686-pc-windows-msvc | Tier 1 without host tools | Distributed standard library and CI testing |
i686-pc-windows-gnu | Tier 2 without host tools | Distributed standard library |
Other 32-bit platforms are outside this change. A team supporting customers on x86 Windows needs to examine its build host before removing any application target.
Inspect the toolchain inside the project
A 64-bit operating system does not tell you which compiler a project selects. Request verbose version information from the project directory:
rustc -vV The host: entry distinguishes, for example, i686-pc-windows-msvc from x86_64-pc-windows-msvc. The command combines rustc’s version and verbose flags. It does not describe a separate application target selected for a build.
rustup selection rules include command-line overrides, RUSTUP_TOOLCHAIN, directory overrides and rust-toolchain.toml. Installing an x64 compiler does not override those project settings; check them separately.
Add the x86 target to an x64 MSVC toolchain
On x64 Windows, this example makes both the compiler host and application target explicit:
rustup toolchain install stable-x86_64-pc-windows-msvc
rustup target add --toolchain stable-x86_64-pc-windows-msvc i686-pc-windows-msvc
cargo +stable-x86_64-pc-windows-msvc build --release --target i686-pc-windows-msvc The first command installs the host toolchain. The second adds the target standard library. The third selects that toolchain and requests an i686 release build.
The rustup book makes an important distinction: adding a target installs its standard library, not every linker or native build dependency. The MSVC target documentation requires the appropriate Visual Studio components for cross-compilation between Windows architectures. Include the x86 tooling and libraries your project needs.
This is a Windows-host example. The same platform document does not treat cross-compiling from a non-Windows host to MSVC as a supported route.
Preserve the application target when changing the host
Cargo defaults to the host architecture unless a target is specified through its options or configuration. Removing --target i686-pc-windows-msvc during a host migration can therefore change the output you intended to ship. Check build.target as well.
The Windows installation guide also distinguishes MSVC from GNU according to the C/C++ libraries being linked. A GNU-based application needs its matching target, libraries and linker configuration; replacing the suffix is not a complete migration.
For CI, verify the selected host toolchain, build for the retained i686 target, then run the project’s relevant native-dependency and application tests. The transition can preserve 32-bit distribution while moving compilation to a supported environment.