Skip to content

Releases: microsoft/windows-rs

0.62.0

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

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

0.61.0

07 Jan 15:40
5888c8c
Compare
Choose a tag to compare

Major crate updates:

  • windows 0.59.0
  • windows-core 0.59.0
    • windows-implement 0.59.0
    • windows-interface 0.59.0
  • windows-targets 0.53.0
    • windows_i686_msvc 0.53.0
    • windows_x86_64_msvc 0.53.0
    • windows_aarch64_msvc 0.53.0
    • windows_i686_gnu 0.53.0
    • windows_x86_64_gnu 0.53.0
    • windows_i686_gnullvm 0.53.0
    • windows_x86_64_gnullvm 0.53.0
    • windows_aarch64_gnullvm 0.53.0
  • windows-bindgen 0.59.0
  • windows-registry 0.4.0
  • windows-result 0.3.0
  • windows-strings 0.3.0
  • cppwinrt 0.2.0

Minor crate updates:

  • windows-version 0.1.2

Excluded:

  • windows-sys 0.59.0

Things to keep in mind:

  • The tag/release names no longer map directly to the crate versions, so to find samples for a particular release requires looking at the releases page and finding the release that most recently updated a particular crate.

  • The windows-bindgen crate includes the major code generation overhaul that brings many improvements - be sure to check out the PR description for more information. The resulting code gen depends on the new version of windows-core and its dependencies, unless you include the --sys option. #3359

  • The cppwinrt crate constitutes a major update due to streamlining the error handling. #3415

  • The windows-registry, windows-strings, and windows-result crates are also major version updates since they include small breaking changes.

  • The windows-targets crate finally receives a major version update, the first in over a year. This is due to #3359 and #3342 potentially introducing breaking changes. Although unlikely, these updates introduced sufficient changes that make it hard to ensure that the windows-targets libs don't break existing code. As we're updating windows-targets anyway, I took the liberty to bump the MSRV to 1.60 - to match the latest version of windows-sys - and remove the old but unused doc macro feature. Both remained for compatibility with very old dependents of the windows-targets crate.

  • The windows-version crate receives a minor update to update its dependency on the windows-targets crate.

  • Beyond these specifics, this update is the culmination of around 6 months worth of work on the windows-rs project. The biggest improvements comes from the new code generation engine, but many other improvements are now also available for production. This includes support for many new lints, warnings, and suggestions provided by the Rust toolchain; much smaller code gen thanks to deriving many more traits; more efficient code gen; major improvements to WinRT type system and implementation support; more robust and consistent error handling; stock collection and async support; improved support for class hierarchies; and much more!

In addition to "what's changed" below, check out what's changed for notes for 0.60.0 and 0.59.0 for additional changes that roll up to the crates published as part of this release.

What's Changed

New Contributors

Full Changelog: 0.60.0...0.61.0

0.60.0

25 Sep 11:49
519ddf7
Compare
Choose a tag to compare

This release includes an update to the windows-registry and windows-strings crates, mainly to provide various improvements to registry support for rustup.

What's Changed

New Contributors

Full Changelog: 0.59.0...0.60.0

0.59.0

30 Jul 15:24
308e08e
Compare
Choose a tag to compare

This release includes an update to the windows-sys crate only. The windows-sys crate is updated very infrequently and only when there is an explicit need to do so. The 0.59.0 release includes a rollup of API fixes, updates, and additions since the 0.52.0 release nine months ago. Notably:

Full Changelog: 0.52.0...0.59.0

0.58.0

03 Jul 19:41
db06b51
Compare
Choose a tag to compare

This release includes updates to metadata for new or fixed API definitions (#3111, #3136), various improvements and fixes to code generation, compliance with new Rust warnings, additional COM authoring support improvements (#3065), limited non-Windows support (#3135), and more.

It includes major updates to the following crates, mainly due to breaking changes in metadata for API definitions.

  • riddle 0.58.0
  • windows 0.58.0
  • windows-bindgen 0.58.0
  • windows-core 0.58.0
  • windows-implement 0.58.0
  • windows-interface 0.58.0
  • windows-metadata 0.58.0

It also includes major updates to the following utility crates.

  • windows-result 0.2.0
  • windows-registry 0.2.0

The windows-result crate now provides limited non-Windows support, and the windows-registry crate offers new lossless queries for binary and wide string values.

And it includes minor updates to the windows-targets crates, with the addition of several new APIs.

  • windows-targets 0.52.6

This release also includes the first published version of the windows-strings crate, moving the string types from the windows-core crate into a dedicated crate as a smaller dependency. It also offers an efficient HSTRING builder (#3133).

To clarify, the only crates that continue to support limited non-Windows builds are:

  • windows-bindgen and windows-metadata for code generation on non-Windows platforms.
  • windows-core and windows-result for COM support on non-Windows platforms.

What's Changed

Full Changelog: 0.57.0...0.58.0

0.57.0

07 Jun 17:42
1594788
Compare
Choose a tag to compare

This release includes updates to a number of crates.

It includes major updates to the following:

  • riddle 0.57.0
  • windows 0.57.0
  • windows-bindgen 0.57.0
  • windows-core 0.57.0
  • windows-implement 0.57.0
  • windows-interface 0.57.0
  • windows-metadata 0.57.0

It also includes minor updates to the following:

  • windows-result 0.1.2
  • windows-registry 0.1.2

This includes various improvements and fixes to code generation, compliance with new Rust warnings, COM authoring support helpers, and more.

This release also includes the first published version of the cppwinrt crate.

What's Changed

New Contributors

Full Changelog: 0.56.0...0.57.0

0.56.0

12 Apr 18:20
ae896c5
Compare
Choose a tag to compare

This release includes updates to all crates except windows-sys.

It includes major updates to the following:

  • riddle 0.56.0
  • windows 0.56.0
  • windows-bindgen 0.56.0
  • windows-core 0.56.0
  • windows-implement 0.56.0
  • windows-interface 0.56.0
  • windows-metadata 0.56.0

This includes various improvements and fixes to code generation, compliance with new Rust warnings, Arm64EC bindings, as well as ergonomic improvements. The riddle crate in particular now matches the version of windows-bindgen as they are inextricably linked.

It includes minor updates to the following:

  • windows-targets 0.52.5
  • windows-result 0.1.1
  • windows-registry 0.1.1
  • windows-version 0.1.1

The windows-targets crate adds support for arm64ec-pc-windows-msvc and i686-pc-windows-gnullvm. The other crates only update dependencies.

What's Changed

New Contributors

Full Changelog: 0.55.0...0.56.0

0.55.0

06 Mar 21:04
1f40da8
Compare
Choose a tag to compare

This update includes a few improvements to code generation. The following crates are being updated today:

  • windows-bindgen
  • windows-metadata
  • windows-core

What's Changed

New Contributors

Full Changelog: 0.54.0...0.55.0

0.54.0

27 Feb 20:49
148f4eb
Compare
Choose a tag to compare

This update includes a few improvements to error propagation and expanded VARIANT support.

What's Changed

Full Changelog: 0.53.0...0.54.0

0.53.0

22 Feb 14:05
Compare
Choose a tag to compare

As requested, this release updates the Windows family of crates. Notably:

  • The windows-sys crate won't be updated at this time.
  • The windows-version crate is unchanged.
  • There is a minor (compatible) update to the windows-targets crates.
  • This is the first release of the windows-result (#2847) crate and provides efficient Windows error handling and propagation with support for Win32, COM, WinRT, and NT APIs.
  • This is the first release of the windows-registry (#2848) crate and provides simple, safe, and efficient access to the Windows registry.
  • VARIANT and PROPVARIANT support has been added to the windows-core crate (#2786), making it a lot easier to work with Shell and OLE APIs.
  • Windows metadata has been updated providing additional APIs and fixes.
  • A new feature search tool is now available to quickly determine which features to enable for a given API. 
  • A number of new tutorials have been added.
  • A number of new samples have been added.
  • Many additional fixes and improvements listed below.

What's Changed

New Contributors

Full Changelog: 0.52.0...0.53.0