Skip to content

Releases: microsoft/windows-rs

71

06 Oct 19:21
2670070
Compare
Choose a tag to compare

This is a relatively small release to publish the workaround for a Cargo bug that affects vendoring. #3774

All of the published crates get a minor update for the workaround (#3785) while the windows-bindgen crate gets a major update as it also includes a new warning for when rustfmt fails (#3778) and this is a breaking change.

What's Changed

New Contributors

Full Changelog: 70...71

70

25 Sep 18:13
aafae1f
Compare
Choose a tag to compare
70

This release provides a few notable additions and features:

  • An option to disable the default agility for COM implementations (#3770).
  • Improved code generation dependency targeting (#3763).
  • Ability to query OS revision number (#3752).
  • Updated readme guidance on version ranges (#3754).

Major version updates to existing crates

The windows-bindgen crate (0.64.0) provides improved dependency targeting support via the new --specific-deps option (#3763).

Minor version updates to existing crates

The windows-implement crate (0.60.1) adds the ability to disable the default agility for COM implementations (#3770).

The windows-version crate (0.1.6) adds the ability to query OS revision number (#3752).

The windows crate (0.62.1) crate has been updated to depend on the latest version of the windows-implement crate and update the readme with version range guidance.

The windows-collections crate (0.3.1) crate has been updated to depend on the latest version of the windows-implement crate.

The windows-core crate (0.62.1) crate has been updated to depend on the latest version of the windows-implement crate.

The windows-future crate (0.3.1) crate has been updated to depend on the latest version of the windows-implement crate.

The windows-sys crate (0.61.1) crate has an updated readme with version range guidance.

The windows-targets crate (0.53.4) crate has an updated readme indicating that windows-link should be preferred.

What's Changed

New Contributors

Full Changelog: 69...70

69

04 Sep 20:27
4113a57
Compare
Choose a tag to compare
69

This release is focused on upgrading the ecosystem to standardize on the windows-link crate for universal raw-dylib support on Windows. This avoids all kinds of build complexity and undesirable complexity in dealing with the linker directly via import libs.

To date, the only major Windows crate that still uses the older windows-targets crate for linking is the windows-sys crate. This release updates windows-sys to depend on windows-link and thus raw-dylib unconditionally. This is required for some internal OS and Azure scenarios. It should also meaningfully reduce build time in general since the large windows-targets import lib crates no longer need to be downloaded at all.

I am also using this release as an opportunity to update all of the remaining crates to use the latest version of windows-link which itself receives a major update to finally stop overwriting the ABI (#3689), fixing a cross-target compatibility issue.

With this update, Rust for Windows no longer offers any crates that depend on the windows-targets crate. Although very stable, it will remain supported by this repo for the foreseeable future should there ever be a reason to service it. I do not however plan to provide any non-essential updates to the windows-targets crate. You should instead use the windows-link crate.

Major version updates to existing crates

The windows-bindgen crate (0.63.0) includes updated Windows metadata (#3729) and targets the latest version of the core Windows crates.

The windows-link crate (0.2.0) no longer overwrites the ABI (#3689) avoiding cross-arch incompatibility but is unfortunately a subtle breaking change.

The windows-sys crate (0.61.0) is updated to target the latest windows-link crate and thus raw-dylib (#3724).

The windows crate (0.62.0) is updated to target the latest windows-core crate and provides an API refresh for Windows metadata (#3729).

The windows-core crate (0.62.0) provides a number of improvements for compatibility and target support.

The windows-collections crate (0.3.0) is updated to target the latest windows-core crate.

The windows-future crate (0.3.0) is updated to target the latest windows-core crate and provides new join and when functions for simplifying async continuation (#3708).

The windows-numerics crate (0.3.0) is updated to target the latest windows-core crate.

The windows-registry crate (0.6.0) is updated to target the latest windows-link crate.

The windows-result crate (0.4.0) is updated to target the latest windows-link crate.

The windows-services crate (0.26.0) is updated to target the latest windows-link crate.

The windows-strings crate (0.5.0) is updated to target the latest windows-link crate.

The windows-threading crate (0.2.0) is updated to target the latest windows-link crate and sports a new pool scope for lifetime management (#3696).

Minor version updates to existing crates

The cppwinrt crate (0.3.3) is updated to target the new version of the windows-link crate.

The windows-version crate (0.1.5) is updated to target the new version of the windows-link crate.

What's Changed

Full Changelog: 68...69

68

28 Jul 18:16
6486ea4
Compare
Choose a tag to compare
68

This releases focuses on two distinct crates that have been updated and are in need of a release. While many other improvements and fixes have occurred this month - see what's changed below - no other pressing updates are required and those changes will accrue to a future release.

Major version updates to existing crates

The windows-services crate (0.25.0) introduces a range of powerful updates for supporting different hosting, testing, fallback, and extended commands (#3662).

Minor version updates to existing crates

The windows-targets crate (0.53.3) now forwards the link macro for raw-dylib support to the newer windows-link crate rather than implementing it directly (#3670).

What's Changed

New Contributors

Full Changelog: 67...68

67

23 Jun 18:58
6d5ac02
Compare
Choose a tag to compare
67

As requested here, this minor update to the windows-registry crate adds support for volatile registry keys (#3632).

What's Changed

Full Changelog: 66...67

66

11 Jun 19:37
e41ab43
Compare
Choose a tag to compare
66

This release is primarily to publish #3622, the fix for rust-lang/rust#142330, and make it available to dependent crates and afford them a path forward.

Major version updates to existing crates

The window-sys crate (0.60.1) receives its first update in 11 months to address this issue and update its dependency on the windows-targets crate. This is a major update since metadata changes have caused breaking changes in the generated code.

The windows-bindgen crate (0.62.1) receives an update to correctly generate the link macros using the appropriate calling convention as per #3622. This is a major update since generated code may change.

The cppwinrt crate (0.3.1) is updated to provide access to the recently published version of the cppwinrt compiler. This is a major update since the compiler and base library has some breaking changes.

Minor version updates to existing crates

The windows crate (0.61.2) has been updated to address the calling convention future incomparability warnings. This is a minor update since this is the only change since the last release and is itself not considered a breaking change.

The windows-link crate (0.1.2) and the windows-targets crate (0.53.1) have been updated to address the calling convention future incomparability warnings. This is a minor update since this is the only change since the last release and is itself not considered a breaking change.

What's Changed

Full Changelog: 65...66

65

19 May 16:14
d09b468
Compare
Choose a tag to compare
65

This is a quick workaround for what appears to be a cargo vendor issue that fails to include some files that are otherwise included by cargo package (#3607).

There are no new crates or major updates in this release.

Minor version updates to existing crates

What's Changed

Full Changelog: 64...65

64

15 May 19:46
2c9d81b
Compare
Choose a tag to compare
64

New crates in this release

  • The windows-services crate provides a simple and safe way to implement Windows services in Rust (#3599).
  • The windows-threading crate provides simple, safe, and efficient access to the Windows threading support (#3595).

Major version updates to existing crates

  • The windows-metadata crate is a low-level metadata library for ECMA-335, providing both a reader and writer for the ECMA-335 metadata format (#3560) used by .NET, WinRT, and more recently the Win32 metadata. It is technically a brand new implementation but reuses the older crate name from my first attempt at a metadata parser in Rust. The emphasis is on low-level. While it is easy to use, the metadata format is intended for tools to use internally. This implementation is very fast and scalable.

Minor version updates to existing crates

What's Changed

New Contributors

Full Changelog: 63...64

63

18 Mar 13:35
70cb833
Compare
Choose a tag to compare
63

Note: I've switched to numeric release and tag numbers (e.g. 63 instead of 0.63.0) to avoid confusing releases with crate versions, which are independent of the release name and git tag.

Major updates to existing crates

windows - this update adds marshaling support for COM implementations inside the windows crate (#3531), remapping of more numeric types to the windows-numerics crate (#3524), detection of nested structs with differing layout or packing requirements (#3522), and other minor fixes.

windows-bindgen - this update adds marshaling support for COM implementations generated by windows-bindgen such as delegates (#3531), detection of nested structs with differing layout or packing requirements (#3522), deriving Default in more cases (#3520), and other minor fixes.

windows-core - this update adds the core marshaling implementation used by the windows-bindgen crate and all other Windows code including COM implementations, delegates, and weak references (#3531). The windows-core crate also includes minor improvements to COM authoring support.

windows-implement - this update adds plumbing to hook the windows-core crate's marshaling support into all COM implementations (#3531).

windows-numerics - this update adds scale and skew functions to Matrix3x2.

windows-strings - this update introduces a small breaking change to the h! macro for creating HSTRING literals in compliance with Edition 2024 (#3530) and Miri test coverage (#3535).

windows-collections - updates dependencies with minor improvements to documentation.

windows-future - updates dependencies with minor improvements to documentation and adds COM marshaling support to async delegates (#3531).

Minor updates to existing crates

cppwinrt - updates dependencies with no visible changes.

windows-interface - updates dependencies with minor improvements to documentation.

windows-link - updates linker correctness on Linux.

windows-registry - updates dependencies with no visible changes.

windows-result - updates dependencies with no visible changes.

windows-version - updates dependencies with no visible changes.

What's Changed

New Contributors

Full Changelog: 0.62.0...63

62

21 Feb 16:25
50e85cb
Compare
Choose a tag to compare
62

New crates in this release

  • The windows-collections crate defines the Windows collection types like IIterable<T>, IVector<T>, IMap<K, V>, and so on (#3483). It also includes all of the stock implementations for creating such collections (#2346, #2350, #2353). This allows these collections to be used without requiring a dependency on the larger windows crate. This crate also provides an optimized implementation of the standard Iterator trait for the Windows IIterator<T> interface (#3476).

  • The windows-future crate defines the Windows async types like IAsyncAction, IAsyncOperation<T>, and so on (#3490). It also includes all of the stock implementations for creating such async types (#3221, #3235). This allows these async types to be used without requiring a dependency on the larger windows crate.

  • The windows-link crate provides linker support for Windows (#3450). This is the evolution of the older windows-targets crate but is substantially simpler and more versatile thanks to advances in the Rust compiler since the windows-targets crate was unveiled. Notably, it does not depend on or insert any import libs and can be used with custom libraries, not only those provided by the Windows operating system. All of the crates, with the exception of windows-sys, now depend on the new windows-link crate instead of the older windows-targets crate. This greatly simplifies compilation and also greatly reduces the size of dependencies as the windows-link crate is tiny. The windows-bindgen crate defaults to windows-link but also adds the --link option to override this as needed. You may for example want to use --link windows_targets if you need to stick with the windows-targets crate if you cannot change your MSRV to Rust 1.71 or later as that was the first version to stabilize raw-dylib for all Windows targets. This then lets you continue to use windows-bindgen until you are ready to move to a newer version of Rust.

  • The windows-numerics crate defines the Windows numeric types to support graphics-oriented math APIs and calculations (#3488). It also also includes all of the stock implementations for overloaded operators and other transformations. This allows these numeric types to be used without requiring a dependency on the larger windows crate.

Major updates to existing crates

  • The windows-bindgen crate provides a number of improvements including new diagnostics (#3498), streamlined and more capable reference support (#3497, #3492), hardened method overloading (#3477), far fewer transmute calls, as well as many other critical fixes and improvements.

  • The windows-core crate is largely unchanged but required some breaking changes to support windows-bindgen type system improvements.

  • The windows-registry crate continues to improve with generalized support for access rights (#3482), open options (#3461), and other minor improvements.

  • The windows crate now delegates to the windows-numerics, windows-future, and windows-collections crates for those types, as well as a number of critical fixes and improvements to features and cfg guards (#3431), and many other small improvements.

Minor updates to existing crates

  • The windows-result now includes the BOOL type (#3441) as a core type. This allows this ubiquitous type to be used without requiring a dependency on the larger windows crate.

  • The windows-strings crate now depends on the new windows-link crate instead of the older windows-targets crate.

  • The windows-version crate now depends on the new windows-link crate instead of the older windows-targets crate.

  • The cppwinrt crate includes minor improvements to improve build reliability.

What's Changed

New Contributors

Full Changelog: 0.61.0...0.62.0