windows-d (Windows SDK projection) is ready

Alexander roland.taverner at gmail.com
Tue Jun 2 20:26:46 UTC 2026


Finally, I did it.

The original repository, 
[rumbu13/windows-d](https://github.com/rumbu13/windows-d), 
appears to be abandoned. The owner has not accepted even small 
PRs for at least three years. My fork is available here: 
[RolandTaverner/windows-d](https://github.com/RolandTaverner/windows-d).

### So what's new (besides it's work now)

1. Updated to the latest version of [Microsoft Win32 
Metadata](https://github.com/microsoft/win32metadata).
2. Added `version()` directives based on 
`SupportedArchitectureAttribute` values (`X86_64`, `AArch64`, 
`X86`) where available.
3. Added online documentation references from 
`DocumentationAttribute`.
4. Added `deprecated()` directives generated from 
`ObsoleteAttribute`.
5. Completely reworked the CLI metadata access code. The 
implementation is now heavily checked at compile time, making it 
much harder to accidentally mix up string indexes, GUID indexes 
and expecially coded indexes. Future contributors (if any) should 
have much less PITA working with the code.

### What's still broken

1. Inline documentation generation. I haven't touched it yet.
2. WinRT support. I have no idea what's going on there, it 
references interfaces that don't seem to exist.
3. About a dozen x86-only functions in 
`windows.win32.system.diagnostics.debug`, because the 
architecture attributes in the metadata are missing.

### The PROBLEM: `SupportedOSPlatformAttribute`

`SupportedOSPlatformAttribute` describes the minimum required 
Windows version, with values such as: `windows10.0.10240`, 
`windows5.0` (yeah, this), `windows5.1.2600` and so on.
Because of this, it cannot be mapped to D's `version()` system. 
It's not even old good WINVER. The only solution I can see is 
generating code for a specific Windows version when necessary 
(not implemented yet).



More information about the Digitalmars-d mailing list