Web-Anwendungen: WebAssembly ist nun ein fertiger W3C-Standard
Nach HTML, CSS und JavaScript ist WebAssembly nun offiziell die vierte Sprache für das Web, die es ermöglicht, Code im Browser auszuführen.
- Alexander Neumann
- Rainald Menge-Sonnentag
Das World Wide Web Consortium (W3C) weist die WebAssembly Core Specification nun als offiziellen Webstandard aus. WebAssembly (wasm) ist ein Ansatz zur clientseitigen Browserprogrammierung über ein Binärformat, das im Vergleich zu JavaScript eine erhöhte Performance erreicht.
In der Pressemitteilung wird W3C-Projektleiter Philippe Le Hégaret zitiert: "Mit der Einführung von WebAssembly wird das Anwendungsspektrum erweitert, das sich durch den einfachen Einsatz von 'Open Web Platform'-Technologien erreichen lässt. In einer Welt, in der maschinelles Lernen und künstliche Intelligenz zunehmend häufiger vorkommen, ist es wichtig, leistungsstarke Anwendungen im Web zu ermöglichen, ohne die Sicherheit der Benutzer zu beeinträchtigen."
Vom Beginn bis zur Gegenwart
Die WebAssembly Community Group hatte WebAssembly 2015 vorgestellt und 2016 einen ersten Release Candidate veröffentlicht. Der Bytecode war von Anbeginn explizit nicht als Alternative, sondern als Ergänzung zu JavaScript ausgelegt. Er soll dort zum Einsatz kommen, wo Performance eine große Rolle spielt.
Binärformate im Browser haben keinen guten Ruf, und WebAssembly soll schon mit dem Standardisierungsprozess Fehler von Formaten wie Java und Flash vermeiden, die im Browser vor allem aufgrund zahlreicher Sicherheitslücken scheiterten, oder ActiveX, dem Microsofts proprietärer Alleingang zum Verhängnis wurde.
Das Format hat schnell die breite UnterstĂĽtzung der Browserhersteller: Apple, Google, Microsoft und Mozilla, beteiligten sich von Anbeginn in der WebAssembly Community Group. Anfang 2017 hat das Format erfolgreich die Browser-Preview-Phase abgeschlossen, woraufhin das W3C den Standardisierungsprozess gestartet hatte.
WebAssembly-Code lässt sich mit diversen Programmiersprachen erstellen, darunter C, C++, C#, Go und Rust, aber auch für exotischere Sprachen wie F# existieren Tools. Die Hersteller der Spiele-Engines, etwa Unity oder Epic mit der Unreal Engine, waren ebenfalls bereits Anfang 2017 an Bord.
Standardisierung beim W3C
Das W3C kennt fĂĽr den Standardisierungsprozess vier Stufen beziehungsweise Reifegrade (Maturity Levels). Nach dem ersten Working Draft (WD) im Februar 2018 folgte im Juli diesen Jahres die Candidate Recommendation (CR). Die AnkĂĽndigung der Proposed Recommendation (PR) im Oktober entsprach der dritten Stufe, die nun in der endgĂĽltigen W3C Recommendation (REC) gemĂĽndet ist.
Der Standard unterteilt sich in drei Bereiche: die Core Specification fĂĽr den Kern von WebAssembly, das JavaScript Interface fĂĽr das Zusammenspiel der Skriptsprache mit wasm und die Web API. Letztere legt eine Schnittstelle nach auĂźen fĂĽr einzelne Bereiche innerhalb des WebAssembly-Codes fest, die sich aus der URL des Moduls, dessen Funktionsindex und der jeweiligen Position als Offset im Modul zusammensetzt.
Doch damit nicht genug, denn die WebAssembly Working Group und die sie begleitende Community Group, in der die Erfassung der Anforderungen und die Sprachentwicklung stattfinden, arbeiten bereits an einer Reihe von Funktionen für zukünftige Versionen des Standards: So ist von der Unterstützung von Threads die Rede mit ihren Vorteilen beim Multithreading und bei atomaren Speicherzugriffen mit gemeinsamem Speicher. Des Weiteren heißt es in der Ankündigung, dass SIMD mit fester Breite geplant sind, was Vektoroperationen ermöglicht, die Schleifen parallel ausführen. Referenztypen
sollen WebAssembly-Code erlauben, direkt auf Hostobjekte zu verweisen. Endrekursionen sollen zudem den Aufruf von Funktionen ohne zusätzlichen Stapelspeicher gewähren, und schließlich arbeitet man an der Integration von ECMAScript-Modulen.
Siehe dazu auf heise Developer:
- WebAssembly: Bytecode Alliance will neue plattformĂĽbergreifende Standards setzen
- Mozilla startet Standardisierungsprozess fĂĽr WebAssembly auĂźerhalb des Webs
- WebAssembly – Webanwendungen auf der Überholspur
(ane)