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++

Autor: Krzysztof Sulikowski

Opublikowano: 1/22/2021, 1:47 PM

Liczba odsłon: 1937

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.

Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży
Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży

Wydarzenia