All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased - ReleaseDate
0.8.0 - 2026-02-06
- PR#170 removed the
native-tlsandrustls-tlsfeature flags,rustlsis now used as the TLS implementation unconditionally.
- PR#170 changed it so that
rustls-platform-verifieris used for certificate validation. Previouslywebpki-rootswas used, but this meant hostile corporate networks that middle man HTTPS traffic would cause failures.
0.7.0 - 2026-01-08
- PR#169 updated crates.
- PR#161 fixed the casing for
--winsysrootsplatting.
0.6.7 - 2025-08-15
- PR#160 resolved #126 by ignoring MSI installers that don't reference any cabinet files. Why do such utterly fucking useless installers exist? Because fuck me I guess.
- PR#159 fixed an issue where enabling native TLS was not actually doing anything. No one actually reported this not working which makes me think no one is using this feature. :)
0.6.6 - 2025-06-19
- PR#143 is a second attempt to resolve #141 by switching to a new
3.0.0-rc1version of ureq that might not have the same issue, as well as adding support for retries for EOF I/O errors seen by users which can be configured via--http-retryorXWIN_HTTP_RETRY.
- PR#148 resolved #81 by adding
--include-debug-runtimeto download the debug runtime binaries that are not provided by wine. Thanks @superewald!
0.6.5 - 2024-08-21
0.6.4 - 2024-08-21
- PR#136 fixed an issue introduced in PR#131 where symlink disabling when a case-insensitive file system was detected was...not being respected. At all.
0.6.3 - 2024-08-09
- PR#134 added back onecoreuap headers that were moved from the main SDK header package in recent versions of the SDK. Thanks @tomager!
0.6.2 - 2024-07-02
- PR#131 resolved #130 by adding detection of case-insensitive file systems, which then disables symlink creation since it is not needed, and breaks.
0.6.1 - 2024-06-30
- PR#129 fixed #128 by adding the additional
onecoreuapMSI package that contains headers that were previously (before SDK 10.0.26100) part of other MSI packages. Thanks @bigfoodK!
0.6.0 - 2024-06-03
- PR#123 (a rework of #119) adds the ability to splat in the format understood by clang-cl
/winsysrootoption.
0.5.2 - 2024-05-06
- PR#117 updated a few crates, notably
zip.
0.5.1 - 2024-04-02
- PR#116 (a rework of #115) improves the speed of the
x86_64-unknown-linux-muslbinary by usingmimalloc.
0.5.0 - 2023-11-13
- PR#110 changed how
Ctxis built. It was getting too complicated to support niche use cases, some of which didn't belong in a library (like reading environment variables), so this functionality has been completely removed. Instead, one must pass in aureq::Agentthat is fully configured how the user wants it. - PR#110 changed the environment variable read to the
xwinbinary instead of the library, as well as its namehttps_proxy->HTTPS_PROXY, and added it to an an option on the command line.
0.4.1 - 2023-11-09
- PR#108 resolved #107 by fixing the Window symlink code added in PR#105 and only using it in the two cases it was needed.
0.4.0 - 2023-11-07
- PR#101 resolved #28, #84, and #85 by adding a
minimizecommand that straces a cargo build to write amapfile that can be used by asplatcommand to only splat the headers and libraries actually needed to build, drastically reducing the splat output (eg. 1.3GiB -> 101MiB). Thismapfile also allows the creation of symlinks on a per-file basis, allowing users to create their own symlinks if needed. - PR#104 resolved #103 by allowing custom certificates to be specified via the
SSL_CERT_FILE,CURL_CA_BUNDLE, orREQUESTS_CA_BUNDLEenvironment variables.xwinmust be compiled with thenative-tlsfeature for this to function. Thanks @Owen-CH-Leung! - PR#105 supplanted #100, allowing creation of symlinks on a Windows host. Thanks @sykhro!
0.3.1 - 2023-09-12
- PR#99 changed the default VS manifest version from 16 -> 17. You can preserve the old behavior by passing
--manifest-version 16on the cmd line.
- PR#99 resolved #92 by only failing if matching relative paths didn't have the same contents. This currently only applies to one file,
appnotify.h, which is present in the SDK headers and Store headers.
0.3.0 - 2023-09-12
- PR#93 added the ability to specify a download timeout for each individual download, and changed the default from infinite to 60 seconds, so that xwin will error if the remote HTTP server is slow/unresponsive. Thanks @dragonmux!
0.2.15 - 2023-09-11
- PR#93 added the ability to specify a download timeout for each individual download, and changed the default from infinite to 60 seconds, so that xwin will error if the remote HTTP server is slow/unresponsive. Thanks @dragonmux!
0.2.14 - 2023-06-20
0.2.13 - 2023-06-15
- PR#88 updated dependencies.
- PR#87 added binaries for
aarch64-unknown-linux-musl
0.2.12 - 2023-03-31
- PR#77 resolved #76 by correctly handling the retrieval of the latest SDK version, regardless of whether it is for the Windows 10 or 11 SDK.
0.2.11 - 2023-03-06
- PR#74 resolved #70 by creating symlinks for SDK headers that are included by the CRT and ATL headers.
- PR#74 fixed an issue where debug symbols were splatted to disk even when not requested.
0.2.10 - 2022-11-30
- PR#67 fixed an issue where incorrect packages could be selected due to using string ordering on strings that could both be version strings and regular non-version strings. Thanks @mite-user!
0.2.9 - 2022-10-14
0.2.8 - 2022-09-07
- PR#59 added support for installing the Active Template Library (ATL). Thanks @pascalkuthe!
0.2.7 - 2022-08-29
- No changes in xwin itself, but now prebuilt binaries for
apple-darwinare supplied.
0.2.6 - 2022-08-26
- Updated dependencies, notably
indicatifandinsta.
0.2.5 - 2022-06-21
- PR#52 updated dependencies, including openssl-src to fix various issues raised by Github security advisories.
0.2.4 - 2022-05-23
- PR#50 added the ability to specify an HTTPS proxy via the
https_proxyenvironment variable. Thanks @j-raccoon!
0.2.3 - 2022-05-16
0.2.2 - 2022-05-16
- PR#45 replaced
reqwestwithureqwhich significantly reduced dependencies. It also maderustlsan optional (but default) TLS implementation in addition to supporting native TLS for arcane platforms that are not supported byring. Thanks @messense! - PR#46 updated MSI to 0.5. Thanks @messense!
- PR#47 added symlinks to support the usage of the
/vctoolsdirand/winsdkdiroptions inclang-cl, which allow for a more concise compiler invocation. I would point you to official docs for this but apparently there are none. Thanks @Qyriad!
0.2.1 - 2022-05-04
0.2.0 - 2022-03-01
- PR#37 changed from structopt to clap v3 for arguments parsing. Thanks @messense!
- PR#38 fixed up the clap arguments to include metadata to be closer to the original structopt output with eg.
xwin -V, however this exposed a problem that clap couldn't handle the old--version <MANIFEST_VERSION>flag since it clashed with-V, --version, so the flag has been renamed to--manifest-version. This is unfortunately a breaking change for the CLI.
0.1.10 - 2022-02-28
- PR#34 changed some code so that it is possible to compile and run for
x86_64-pc-windows-msvc, though this target is not explicitly support. Thanks @messense! - PR#36 updated indicatif to
0.17.0-rc.6and pinned it to fix #35.
0.1.9 - 2022-02-28
- PR#32 fixed the
--disable-symlinksflag to actually not emit symlinks, which is needed if the target filesystem is case-insensitive.
0.1.8 - 2022-02-28
- PR#30 updated the indicatif pre-release as a workaround for
cargo install's broken behavior. Thanks @messense!
0.1.7 - 2022-02-24
- PR#27 added a fixup for
Iphlpapi.lib => iphlpapi.lib. Thanks @jelmansouri!
0.1.6 - 2022-02-07
- PR#22 added a fix for zeromq using a mixed case include. Thanks @Jasper-Bekkers!
- PR#23 updated dependencies, which included bumping
thread_localto fix a security advisory.
0.1.5 - 2021-11-25
- PR#19 resolved #18 by removing a source of non-determinism in the output. It also made it so that some
Storeheaders are no longer splatted to disk when targeting theDesktopvariant alone.
0.1.4 - 2021-11-22
- PR#17 resolved #6 by adding the
--manifestoption so that users can specify an exact manifest to use rather than downloading the mutable one from the Microsoft CDN.
0.1.3 - 2021-11-17
- PR#15 resolved #14 by removing the unnecessary use of
tokio::main. Thanks @mite-user! - PR#13 resolved #12 by using the actual output directory rather than a hardcoded default. Thanks @mite-user!
0.1.2 - 2021-11-11
- PR#11 added a workaround symlink for
Kernel32.libto fix the prevalenttimecrate in older versions. Thanks @twistedfall!
0.1.1 - 2021-08-24
- PR#9 resolved #8 by adding support for additional symlinks for each
.libinSCREAMINGcase, since some crates link them that way.
0.1.0 - 2021-08-22
- Initial implementation if downloading, unpacking, and splatting of the CRT and Windows SDK. This first pass focused on targeting x86_64 Desktop, so targeting the Windows Store or other architectures is not guaranteed to work.