Releases: halildurmus/win32
package:winmd v7.1.0
7.1.0 - 2026-03-06
🚀 Features
- Add retry logic for Windows Metadata downloads, retrying up to 5 attempts on
failure
⚡ Performance
- Optimize the metadata reader for improved throughput
🧹 Refactor
- Replace the global
winmdLogger(now deprecated) with a constructor-injected
Loggerfor better testability and flexibility - Improve console output formatting
🎨 Styling
- Apply Dart dot shorthand syntax across the codebase
package:ffi_leak_tracker v0.1.1
0.1.1 - 2026-03-06
🎨 Styling
- Improve output of
PrintEmitter - Improve
toString()outputs forAllocationandLeakExceptionclasses
package:winmd v7.0.2
package:win32_runner v0.2.5
package:win32_registry v3.0.2
package:win32_gamepad v1.0.11
package:win32_clipboard v2.0.2
package:filepicker_windows v3.0.1
package:win32 v6.0.0
6.0.0 - 2026-02-22
🔄 Breaking Changes
This release introduces a major redesign of the Win32 Dart API with a strong
focus on type safety, deterministic resource management, and
idiomatic Dart usage. Most changes are mechanical but widespread.
Key breaking changes include:
-
Exception-based error handling
- APIs returning
HRESULTnow throwWindowsExceptionon failure - Logical return values are returned directly instead of via out-parameters
- APIs returning
-
New error model for APIs that call
SetLastError()- Such APIs now return
Win32Result<T>which captures both the logical return
value and the associated last-error code atomically on the native side,
ensuring the error state is preserved
- Such APIs now return
-
Strongly typed Win32 handles
- Opaque handles (e.g.,
HKEY,HWND,HICON) are now extension types
instead of plainintorPointervalues
- Opaque handles (e.g.,
-
Win32
BOOLmapped to Dartbool- Applies uniformly to return values, parameters, and struct fields
-
Enums are now extension types
- Replaces raw
intconstants with strongly typed extension types
- Replaces raw
-
Explicit COM lifetime management
- Automatic cleanup via
Finalizerhas been removed - COM objects must be released explicitly or managed with
Arena
- Automatic cleanup via
-
COM and
HRESULTAPI simplificationsQueryInterface-style methods now return interfaces directly- Manual
HRESULTchecks and pointer plumbing are eliminated
-
Major string API cleanup
- Renamed and simplified string conversion helpers
- Removed
TEXT(),BSTRclass, and legacy helpers
-
GUID API redesign
- Removed
Guidclass and string-based helpers GUIDstruct is now the single, explicit representation
- Removed
-
winsock2library removed- All Winsock APIs are now exported directly from
win32.dart
- All Winsock APIs are now exported directly from
-
Dispatcher API redesign
- Strongly typed results
- No manual
VARIANTorDISPPARAMSconstruction - Explicit ownership and cleanup
See the Migration Guide
with examples and mechanical migration steps.
🚀 Features
-
Scope-based lifetime management
- New extensions for
Arenato manage native memory and COM lifetimes
- New extensions for
-
Much stronger type safety across the API surface
- Typed handles, enums, booleans, GUIDs, and COM interfaces
-
More idiomatic Dart APIs
- Fewer pointers, fewer out-parameters, clearer ownership rules
-
Reliable error handling
- Atomic capture of
GetLastError()values on native side, exposed via
Win32Result<T>
- Atomic capture of
-
Cleaner, more consistent conversion APIs
- Unified naming and semantics for strings, binary data, and
FILETIMEvalues
- Unified naming and semantics for strings, binary data, and
-
Native memory leak detection via
package:ffi_leak_tracker- Tracks allocations with call stacks and timestamps; see the
Leak Tracking guide for
details
- Tracks allocations with call stacks and timestamps; see the
package:ffi_leak_tracker v0.1.0
0.1.0 - 2026-02-22
- Initial version.