C++ unterstützt jetzt offiziell WASI: Eine neue Ära der plattformübergreifenden Entwicklung
Das Standardisierungskomitee der Sprache C++ (ISO/IEC JTC1/SC22/WG21) hat gemeinsam mit der LLVM-Entwicklergruppe und dem WebAssembly-Projekt ein lang erwartetes Ereignis angekündigt: Die Sprache C++ hat eine offizielle, dokumentierte Unterstützung für die Plattform WebAssembly System Interface (WASI) erhalten. Dies bedeutet, dass Entwickler jetzt Systemcode in C++ schreiben können, der nicht nur auf traditionellen Betriebssystemen (Windows, Linux, macOS) läuft, sondern auch in der WebAssembly-Umgebung außerhalb des Browsers – auf Servern, in IoT-Geräten und Cloud-Edge-Systemen.
Was ist WASI und warum ist es wichtig für C++?
WASI (WebAssembly System Interface) ist eine standardisierte Systemschnittstelle, die WebAssembly-Modulen Zugriff auf das Dateisystem, Netzwerk-Sockets, Zeit und andere Betriebssystemressourcen bietet. Bisher konnte C++ zwar in WebAssembly kompiliert werden, aber die Interaktion mit der Außenwelt war auf die Browserumgebung beschränkt. Mit der offiziellen Unterstützung von WASI erhält C++ nun eine vollwertige isolierte Umgebung für die sichere Ausführung von Code außerhalb des Browsers.
- Sicherheit: C++-Module werden in einer Sandbox mit Zugriffskontrolle auf Ressourcen ausgeführt – ideal für Mehrbenutzerdienste.
- Portabilität: Eine einzige .wasm-Binärdatei funktioniert auf jedem Betriebssystem, das eine WASI-Laufzeitumgebung (Wasmer, Wasmtime, WAMR) besitzt.
- Leistung: Die direkte Kompilierung von C++ in nativen WebAssembly-Code (über Clang/LLVM) bietet eine nahezu native Ausführungsgeschwindigkeit ohne den Overhead einer virtuellen Maschine.
Was hat sich im C++-Ökosystem geändert?
Die wichtigste Neuerung ist die Verfügbarkeit eines offiziellen Leitfadens zur Portierung von C++-Code auf WASI und die Aufnahme der WASI-Unterstützung in das Haupt-LLVM-Repository. Jetzt kann jedes C++-Projekt mit einem einfachen Compiler-Flag für WASI kompiliert werden:
clang++ --target=wasm32-wasi -O3 my_program.cpp -o my_program.wasm
Darüber hinaus wurden die C++-Standardbibliotheken (libc++, libc++abi) aktualisiert, um korrekt mit den Systemaufrufen von WASI zu arbeiten. Entwickler müssen die Verknüpfung mit externen Bibliotheken nicht mehr manuell konfigurieren – alles funktioniert „out of the box“.
Wo wird dies bereits angewendet?
- Cloud-Computing: Ausführung von C++-Mikrodiensten in isolierten WASI-Containern (z. B. in Fastly Compute@Edge oder Cloudflare Workers mit WASI-Unterstützung).
- Eingebettete Systeme: Verwendung von WASI für sichere Firmware-Updates von IoT-Geräten, die in C++ geschrieben sind.
- Wissenschaftliches Rechnen: Übertragung rechenintensiver C++-Module (Lineare-Algebra-Bibliotheken, Simulationen) in WASI für plattformübergreifende Ausführung ohne Neukompilierung.
Was kommt als Nächstes?
In naher Zukunft ist die vollständige Unterstützung von C++-Multithreading in WASI geplant (derzeit ist nur ein Single-Thread-Modell verfügbar) sowie die Integration mit C++20/23-Koroutinen. Die Community arbeitet bereits an der Anpassung beliebter Bibliotheken (Boost, Qt, OpenCV) für die Kompilierung unter WASI. Bleiben Sie auf dem Laufenden auf der offiziellen Website wasi.dev und im LLVM-Repository.
Wenn Sie in C++ programmieren und mö