API Win32 stały się bardziej dostępne dla C# i Rust. Trwają też prace nad Modern C++

API Win32 stały się bardziej dostępne dla C# i Rust. Trwają też prace nad Modern C++

 Krzysztof Sulikowski
Krzysztof Sulikowski
13:47
22.01.2021
809 wyświetleń

Interfejsy programistyczne (API) Win32 dostarczają potężną funkcjonalność, która pozwala osiągać jak najwięcej w aplikacjach Windows. API te są dostępne dla deweloperów C i C++, podczas gdy dla innych języków typu C# i Rust wymagają wrapperów lub bindingów. Nie są to niestety rozwiązania idealne, a głównym wyzwaniem jest konieczność ręcznego utrzymywania tych projektów. Microsoft — jako autor Windows SDK — chce umożliwić szerokie i zrównoważone pokrycie API dla popularnych języków. Efektem tego jest projekt win32metadata.

Celem projektu win32metadata jest dostarczenie pełnego opisu powierzchni API Win32 w metadanych, tak aby można go było projektować na dowolny język w sposób zautomatyzowany, zwiększając poprawność i minimalizując koszty utrzymania. Efektem tego projektu jest plik metadanych Windows zgodny z ECMA-335 (winmd), opublikowany na Nuget.org i zawierający metadane opisujące całą powierzchnię API Win32.

API Win32 istnieją od dawna, dlatego dokładne opisanie wszystkich z nich będzie wymagało paru iteracji. Będziemy rozwijać to narzędzie otwarcie i z mile widzianymi kontrybucjami społeczności, aby zapewnić dokładne odwzorowanie powierzchni Win32 API, która przyniesie korzyści wszystkim językom.

— Windows SDK Team, Microsoft

Aby wspomniane metadane umożliwiały wywoływanie API Win32 w wybranych przez deweloperów językach, potrzebne jest zbudowanie projekcji językowych. Pierwszą z nich jest C#/Win32 zbudowana wraz z Andrew Arnottem, właścicielem projektu PInvoke dla .NET. Tworzy ona wrappery P/Invoke wymagane do wywoływania API. Rozwijana jest także projekcja języka Rust, która naśladuje tradycje ustanowione przez C++/WinRT i polegające na tworzeniu projekcji językowych dla Windows z użyciem standardowych języków oraz kompilatorów. Jest to naturalna i idiomatyczna metoda wywoływania API Windows dla deweloperów Rust.

Oprócz C# i Rust trwają również prace nad projekcją Modern C++. Także te prace są otwarte na wkład społeczności GitHub. Microsoft dodaje, że wszystkie te projekty znajdują się we wczesnych fazach poglądowych i są aktywnie rozwijane pod mocnym wpływem feedbacku, dlatego dalsze zmiany mogą być znaczące.


Spodobał Ci się ten artykuł? Podziel się z innymi!

Źródło: https://blogs.windows.com/windowsdeveloper/2021/01/21/making-win32-apis-more-accessible-to-more-languages/

Polecamy również w kategorii Open Source