Zum Hauptinhalt Zur Navigation

Security: Microsoft baut Windows-API in Rust

Sprachanbindungen für das klassische Win32-API will Microsoft künftig automatisch erstellen. Das dient der Nutzung in Rust und C#.
/ Sebastian Grüner
20 Kommentare News folgen (öffnet im neuen Fenster)
Microsoft will die Windows-API auch für andere Sprachen zugänglich machen. (Bild: Les Chatfield, Flickr.com)
Microsoft will die Windows-API auch für andere Sprachen zugänglich machen. Bild: Les Chatfield, Flickr.com / CC-BY 2.0

Die grundlegende Windows-API, die auch auch als Win32 bezeichnet wird, lässt sich standardmäßig nur in C und C++ nutzen. Um aber auch in anderen Sprachen wie C# und Rust plattformnah für Windows programmieren zu können, müssen entsprechende Sprachanbindungen und Wrapper erstellt werden. In Community-Projekten wie PInvoke(öffnet im neuen Fenster) für .NET und Winapi-rs(öffnet im neuen Fenster) für Rust geschieht das zwar bereits, Microsoft will dies nun aber vollständig automatisieren(öffnet im neuen Fenster) und stellt dazu auch eine eigene Rust-API bereit.

Das größte Problem der bisherigen Vorgehensweise durch die genannten Projekte ist, dass diese manuell gepflegt werden müssen. Das führt wegen Änderungen an den APIs vor allem langfristig zu vielen Schwierigkeiten und einem sehr hohen Aufwand. Darüber hinaus sind derartige Arbeiten auf einzelne Sprachen beschränkt. Mit einem neuen Projekt will Microsoft nun grundsätzlich eine Lösung für diesen Problembereich finden.

Anbindung aus Metadaten generieren

Umgesetzt werden soll das automatische Erstellen der Anbindungen über ein Metadaten-Projekt(öffnet im neuen Fenster) . Damit soll die gesamte Win32-API beschrieben werden, was dann wiederum in anderen Sprachen genutzt werden soll. Die Automatisierung soll dabei vor allem für die Korrektheit sorgen sowie den Pflegeaufwand möglichst gering halten. Da die Win32-API sehr groß und vergleichsweise alt sei, werde das Metadaten-Projekt zur Beschreibung der API schrittweise umgesetzt und ist bei der nun erfolgten ersten Veröffentlichung noch nicht vollständig, heißt es.

Zusammen mit dem Hauptentwickler von PInvoke, Andrew Arnott, hat Microsoft das Projekt CSWin32(öffnet im neuen Fenster) entwickelt, das die Metadaten nutzt, um entsprechende API-Wrapper zu erstellen. CSWin32 ist auch als Nuget-Paket verfügbar. Analog dazu hat Microsoft mit Windows-rs(öffnet im neuen Fenster) ein komplett neues Rust-Projekt erstellt, das auf ähnliche Art und Weise aus den Metadaten erzeugt wird. Das schlicht Windows genannte Rust-Crate(öffnet im neuen Fenster) soll die Nutzung jeder einzelnen Win32-API ermöglichen - so, als wäre es "nur ein weiteres Rust-Modul" .

Es ist davon auszugehen, dass Microsoft vor allem die Umsetzung für Rust mittelfristig auch selbst nutzen möchte. So wird das Projekt vor allem von Microsoft-Angestellten getragen und der Hersteller untersucht schon länger, ob und inwiefern Rust in Windows genutzt werden könnte, um das System abzusichern.


Relevante Themen