Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This release includes the following brand new crates:
The windows-collections crate defines the Windows collection types like
IIterable<T>
,IVector<T>
,IMap<K, V>
, and so on (Introducing the dedicatedwindows-collections
crate #3483). It also includes all of the stock implementations for creating such collections (Stock collection support forIIterable
#2346, Stock collection support forIVectorView
#2350, Stock collection support forIMapView
#2353). This allows these collections to be used without requiring a dependency on the largerwindows
crate. This crate also provides an optimized implementation of the standardIterator
trait for the WindowsIIterator<T>
interface (OptimizeIterator
forIIterator<T>
#3476).The windows-future crate defines the Windows async types like
IAsyncAction
,IAsyncOperation<T>
, and so on (Introducing the dedicatedwindows-future
crate #3490). It also includes all of the stock implementations for creating such async types (Add asyncready
support #3221, Add asyncspawn
support #3235). This allows these async types to be used without requiring a dependency on the largerwindows
crate.The windows-link crate provides linker support for Windows (Introducing the
windows-link
crate #3450). This is the evolution of the olderwindows-targets
crate but is substantially simpler and more versatile thanks to advances in the Rust compiler since thewindows-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 ofwindows-sys
, now depend on the newwindows-link
crate instead of the olderwindows-targets
crate. This greatly simplifies compilation and also greatly reduces the size of dependencies as thewindows-link
crate is tiny. Thewindows-bindgen
crate defaults towindows-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 thewindows-targets
crate if you cannot change your MSRV to Rust 1.71 or later as that was the first version to stabilizeraw-dylib
for all Windows targets. This then lets you continue to usewindows-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 (Introducing the dedicated
windows-numerics
crate #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 largerwindows
crate.In addition to these new crates, this release includes major updates to the following existing crates:
The windows-bindgen crate provides a number of improvements including new diagnostics (Add optional warnings for
windows-bindgen
to improve diagnostics #3498), streamlined and more capable reference support (Simpler default reference support inwindows-bindgen
#3497, Improvewindows-bindgen
reference usability and default reference support #3492), hardened method overloading (Harden method overload support #3477), far fewertransmute
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 (Generalize support for access rights in
windows-registry
#3482), open options (AddOpenOptions
towindows-registry
#3461), and other minor improvements.The windows crate now delegates to the
windows-numerics
,windows-future
, andwindows-collections
crates for those types, as well as a number of critical fixes and improvements to features andcfg
guards (Fixcfg
generation #3431), and many other small improvements.In addition, this release also includes minor updates to the following existing crates:
The windows-result now includes the
BOOL
type (MakeBOOL
a core type #3441) as a core type. This allows this ubiquitous type to be used without requiring a dependency on the largerwindows
crate.The windows-strings crate now depends on the new
windows-link
crate instead of the olderwindows-targets
crate.The windows-version crate now depends on the new
windows-link
crate instead of the olderwindows-targets
crate.The cppwinrt crate includes minor improvements to improve build reliability.