Build provenance: This package is built and distributed by Astral as part of
astral-dev-toolchain. It packagescargo-xwinfrom tagv0.23.1at commitcb1c19572bd64c801f45c6fc96e234ccb0d5acc5.
cargo-xwin
formerly cargo-xwinbuild
🚀 Help me to become a full-time open-source developer by sponsoring me on GitHub
Cross compile Cargo project to Windows msvc target with ease using xwin or windows-msvc-sysroot.
By using this software you are consented to accept the license at https://go.microsoft.com/fwlink/?LinkId=2086102
Prerequisite
- Install clang (On macOS run
brew install llvmand you're good to go). - For assembly dependencies, install
llvm-toolscomponent viarustup component add llvm-toolsor install llvm.
A full LLVM installation is recommended to avoid possible issues.
Installation
cargo install --locked cargo-xwin
You can also install it using pip:
pip install cargo-xwin
We also provide a Docker image which has wine pre-installed in addition to cargo-xwin and Rust, for example to build for x86_64 Windows:
docker run --rm -it -v $(pwd):/io -w /io messense/cargo-xwin \
cargo xwin build --release --target x86_64-pc-windows-msvc
Usage
- Install Rust Windows msvc target via rustup, for example,
rustup target add x86_64-pc-windows-msvc - Run
cargo xwin build, for example,cargo xwin build --target x86_64-pc-windows-msvc
Pre-caching for offline builds
You can pre-download and cache the MSVC CRT and Windows SDK for offline builds:
# Cache Microsoft CRT and Windows SDK (for clang-cl backend)
cargo xwin cache xwin
# Cache windows-msvc-sysroot (for clang backend)
cargo xwin cache windows-msvc-sysroot
This is useful for Docker images or CI/CD pipelines where you want to cache dependencies ahead of time.
Run tests with wine
With wine installed, you can run tests with the cargo xwin test command,
for example, cargo xwin test --target x86_64-pc-windows-msvc
Running Windows executables in WSL (without wine)
If you want to run Windows executables directly in WSL (without using wine), you can set the runner environment variable as follows:
CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_RUNNER="/usr/bin/env" cargo xwin run --target x86_64-pc-windows-msvc
Customization
The Microsoft CRT and Windows SDK can be customized using the following environment variables or CLI options.
| Environment Variable | CLI option | Description |
|---|---|---|
XWIN_CROSS_COMPILER |
--cross-compiler |
The cross compiler to use, defaults to clang-cl, possible values: clang-cl, clang |
XWIN_ARCH |
--xwin-arch |
The architectures to include, defaults to x86_64,aarch64, possible values: x86, x86_64, aarch, aarch64 |
XWIN_VARIANT |
--xwin-variant |
The variants to include, defaults to desktop, possible values: desktop, onecore, spectre |
XWIN_VERSION |
--xwin-version |
The version to retrieve, defaults to 17, can either be a major version of 15, 16, or 17, or a <major>.<minor> version |
XWIN_SDK_VERSION |
--xwin-sdk-version |
The SDK version to retrieve, defaults to the latest version |
XWIN_CRT_VERSION |
--xwin-crt-version |
The CRT version to retrieve, defaults to the latest version |
XWIN_INCLUDE_ATL |
--xwin-include-atl |
Whether to include the Active Template Library (ATL) in the installation |
XWIN_CACHE_DIR |
--xwin-cache-dir |
xwin cache directory to put CRT and SDK files |
XWIN_INCLUDE_DEBUG_LIBS |
--xwin-include-debug-libs |
Whether or not to include debug libs in installation (default false). |
XWIN_INCLUDE_DEBUG_SYMBOLS |
--xwin-include-debug-symbols |
Whether or not to include debug symbols (PDBs) in installation (default false). |
XWIN_HTTP_RETRIES |
--xwin-http-retries |
Number of times to retry HTTP requests when downloading (default 3). |
CMake Support
Some Rust crates use the cmake crate to build C/C++ dependencies, cargo-xwin will generate a CMake toolchain file automatically to make cross compilation work out of the box.
ninja is required to enable CMake support.
License
This work is released under the MIT license. A copy of the license is provided in the LICENSE file.
Release files for astral-dev-toolchain-cargo-xwin 0.23.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-win_arm64.whl | Python 3 | none | Windows ARM64 | Details |
| astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 23.3 MB
Release files / astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-win_arm64.whl
| Download URL | astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-win_arm64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | Python 3 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
c0b9efb61adf1d6ab3a378d9c6f465bfca0db5e580f578cc9031458f7a0a9bdc
|
|
BLAKE2b-256 checksum How to use checksums |
ed07ca27ae442bcb45708c1e0a2a04b398d3e5197339e624586b8c59cfb8674d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency logRelease files / astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-win_amd64.whl
| Download URL | astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-win_amd64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2348a19f72c5af4ce4524aeea7887d1830f01dc6f29ecb4b176e640011e54edc
|
|
BLAKE2b-256 checksum How to use checksums |
d73de54ae1ac89bac7d9b695324a1a9db3345966642c93f9597f8d77bbc0d271
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency logRelease files / astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
929ec40a6e96e7b41f2a1289dabd723b4199dec3f586470d1a5e2fbc7fd647fb
|
|
BLAKE2b-256 checksum How to use checksums |
8b63b33bb8277cca6c8b1a10ab7abbc2586b7577df1aad661ddc6a89e0ee3093
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency logRelease files / astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
5fc2bedd6a0c574334f228b91dd4cc53c8977e24c5f44c0a69a546d7b54439fa
|
|
BLAKE2b-256 checksum How to use checksums |
d1347c8fe647375c8b2c3423dc6cd7c2138067bcfd16f566b88eeb6eb3051899
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency logRelease files / astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-macosx_11_0_arm64.whl
| Download URL | astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b63285f5285e980148408ac2239e9fd979f713f21a38b55082943e2e88f0ec2c
|
|
BLAKE2b-256 checksum How to use checksums |
a9c4bd32b03e88560c433a298aae240392ef20d97e6b33c0cbb16bfa36acdb8d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency logRelease files / astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-macosx_10_12_x86_64.whl
| Download URL | astral_dev_toolchain_cargo_xwin-0.23.1-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
085882b94f347f12785bfffe5b7c992d4988512f275e13fe51fb988b6570874a
|
|
BLAKE2b-256 checksum How to use checksums |
1d63abc4c2ff4e017591cab5839449be690731c4e7f0a748b3c44c85c8d05c7a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency log