Making Win32 APIs More Accessible to More Languages
영문링크: Making Win32 APIs More Accessible to More Languages - Windows Developer Blog
마이크로소프트 공식 win32metadata 링크: GitHub - microsoft/win32metadata: Tooling to generate metadata for Win32 APIs in the Windows SDK.
배경
다양한 언어에서 Win32 API를 호출하려는 시도가 많았습니다. 대표적으로C#의 P/Invoke 가 있습니다.
기존방식의 문제점
C#의 P/Invoke나 Rust의 winapi-rs는 범용적이며 지속가능한 API를 만들려면 손이 많이 가며 다른언어로 포팅하려면 또 같은 노력을 다시 들어야하는 문제점이 있습니다.
해결책
이런 문제점을 해결하기위해 마이크로소프트는, win32 API를 메타데이터로 노출하여 다른언어에서 win32-api 호출하는것을 자동으로 생성할 수 있도록 제공하게 되었습니다.
아래는 마이크로소프트 및 커뮤니티 주도 프로젝트입니다.
- C# - GitHub - microsoft/CsWin32: A source generator to add a user-defined set of Win32 P/Invoke methods and supporting types to a C# project. (Microsoft)
- C++ - GitHub - microsoft/cppwin32: A modern C++ projection for the Win32 SDK (Microsoft)
- Rust - GitHub - microsoft/windows-rs: Rust for Windows (Microsoft)
- D - GitHub - rumbu13/windows-d (Community)
- Dart - GitHub - dart-windows/win32: Build Win32 apps with Dart! (Community)
- Zig - https://github.com/marlersoft/zigwin32 (Community)
첨언
혹시 Go 구현체 관심이 있으신분들은 댓글 부탁드리겠습니다