Die Sprache des Webs heißt JavaScript – und wird ergänzt durch HTML und CSS. Mithilfe von Web Assembly lassen sich aber auch in performanteren Sprachen geschriebene Anwendungen im Browser deployen. Grund genug für das World Wide Web Consortium, das Format jetzt zum Standard zu erklären.
Was ist das W3C?
Hinter der Abkürzung W3C steckt das „World Wide Web Consortium“ – ein Ausschuss, der sich für standardisierte Technologien für Nutzung und Entwicklung des Internets einsetzt. Das Gremium wurde 1994 am MIT in Cambridge gegründet. Die Zielsetzung: Einheitliche technologische Spezifikationen und Richtlinien für die Entwicklung von Technologien im WWW zu schaffen, um so „die Grundidee des Internets“ zu wahren.
Was steckt dahinter?
Im Kern ist Web Assembly eine virtuelle Instruction-Set-Architektur, die hochperformante Anwendungen im Web und einer Reihe anderer Umgebungen ermöglicht. Web Assembly erweitert die Bandbreite dessen, was im Web deployed werden kann. Hochperformante Web-Applikationen gewinnen im Hinblick auf die zunehmende Verbreitung von AI und Machine Learning immer mehr an Bedeutung, so der W3C-Projektleiter Philippe Le Hégaret im zugehörigen Blogpost.
Web Assembly ist ein binäres Befehlsformat für eine stack-basierte VM. Es dient als portables Target für die Kompilation so performanter Sprachen wie Rust, C oder C++. Der neu ernannte Standard ermöglicht es, in Rust, C oder C++ geschriebene Applikationen in modernen Prozessoren und Web-Browsern zu deployen.
Anders gesagt: Web Assembly bietet einen Weg, um quasi-Maschinencode im Browser laufen zu lassen. Damit könnt ihr Applikationen bauen, die sehr viel perfomanter sind, als es mit JavaScript möglich ist. Die Adblocker-Funktionalität des Brave-Browsers etwa wurde mit Web Assembly in Rust implementiert und ist damit – laut Brave-Blog – ganze 69 Mal schneller als vorher. Große in-Browser-Apps wie zum Beispiel Figma oder Spiele können mithilfe von Web Assembly im Browser lauffähig gemacht werden.
Mehr Performanz bei optimierten Ladezeiten
Web Assembly ist quasi Virtual Machine und Ausführungsumgebung in einem. So können geladene Pages als nativ kompilierter Code ausgeführt werden. Damit einher gehen eine fast-native Performanz, optimierte Ladezeiten und, dass WASM – kurz für Web Assembly – ein Kompilierungs-Target für bereits existenten Code stellt.
Obwohl JavaScript nur über eine relativ geringe Anzahl nativer Typen verfügt, läuft vieles, was in JS mit Performanz zusammenhängt, über die Nutzung konsistenter Typisierung, was das Ganze ab einem gewissen Punkt einfach in seine Schranken weist. Web Assemblys Bytecode ist auf Kompaktheit und Streaming optimiert, sodass eine Page ausgeführt werden kann, während der Rest des Codes noch geladen wird. Zugriffe auf Netzwerke und API erfolgen über zugehörige JavaScript-Bibliotheken. Das Security-Modell in Web Assembly ist identisch zu dem von JavaScript.
Das soll die Zukunft bringen
Der W3C-Blog kündigt zudem einige interessante Features für zukünftige Versionen an, an denen bereits geschrieben wird. In Arbeit sind Threads, Fixed Width SIMD, Referenztypen, Tailcalls und eine ECMAScript-Modulintegration, die es erlaubt, Web-Assembly-Ausführungsdateien als ES6-Module zu laden.
Längerfristig sind ein Garbage-Collection-Modul, Debugging-Interfaces oder ein System-Interface für das Format – genannt WASI, das eine Sammlung von Modulen für Low-Level-Systemfunktionalitäten wie Datei- und Netzwerkzugriff darstellt – geplant.
Also im Umfeld von deploy & target liest sich performanz sehr sehr schräg …