WebAssembly (WASM): Schneller Code im Browser
Kurz: WebAssembly ist ein kompaktes Binärformat, das Browser nahezu so schnell wie Maschinencode ausführen. Sprachen wie C, C++, Rust oder Go lassen sich dorthin übersetzen, sodass sie neben JavaScript auf der Seite laufen.
Warum es das gibt
JavaScript ist für Oberflächen gemacht, für schwere Rechnungen (Bildbearbeitung, Spiele, Kompression, Emulatoren) aber zu langsam. WASM bringt dafür ein vorübersetztes, schnell ladbares Format mit.
So funktioniert es
- Quellcode (zum Beispiel Rust) wird mit einem Compiler zu einer
.wasm-Datei übersetzt. - Die Seite lädt die Datei und erzeugt ein Modul. Der Browser prüft sie und übersetzt sie in Maschinencode.
- JavaScript ruft Funktionen des Moduls auf und tauscht Zahlen oder Speicherbereiche aus.
WASM hat keinen direkten Zugriff auf Seite, Dateien oder Netzwerk. Alles, was es darf, muss JavaScript ihm ausdrücklich geben.
Sicherheit
Ein Modul läuft in einer Sandbox mit eigenem, begrenztem Speicher. Es kann nicht beliebig aus dem Browser ausbrechen. Trotzdem gilt: nur Module aus vertrauenswürdiger Quelle laden, und eine Content Security Policy (CSP) kann das Übersetzen von WASM gezielt erlauben oder verbieten.
Beispiele
Auf Emzett laufen Python im Browser (Pyodide), eine Datenbank im Browser (sql.js) und ein kleiner Linux-Emulator als WASM. Dafür muss nichts auf dem Server ausgeführt werden.
Grenzen
WASM ersetzt JavaScript nicht: Oberfläche, Ereignisse und Seitenbau bleiben dort. Der Gewinn zeigt sich bei rechenintensiven Aufgaben; für ein Formular bringt es nichts.