Wasmjit soll als Modul für den Linux-Kernel zum Einsatz kommen und als Runtime mit Emscripten generierte Webassembly-Module ausführen.
Der Kern der Runtime sei in C geschrieben (nach dem ISO-Standard C90) und daher leicht auf andere Umgebungen zu portieren. Die ausgeführten Webassembly-Module laufen in Ring 0, was den Zugriff auf System Calls über normale Funktionsaufrufe ermögliche.
Die Entwickler sehen die Vorzüge dieser Konstellation darin, dass sie Kontext-Switches zwischen User- und Kernelspace vermeidet, aber auch Mehraufwand beim Page-Table-Austausch. Webserver oder Fuse-basierte Dateisysteme, die Systemaufrufe einsetzen, würden so deutlich performanter laufen, vor allem in einem Post-Spectre/Meltdown-Szenario, der den Page Table Isolation Overhead mit einbezieht.
Einen Wermutstropfen gibt es auch: Aktuell verwende die Software “vmalloc()”, was zwar Page-Auslagerungen auf die Festplatte vermeide, aber Systeme auch anfällig für DoS-Angriffe mache. Eine Speichernutzungsbegrenzung für “/dev/wasm” soll das künftig verhindern.
Läuft auch im Userspace
Auf POSIX-Systemen lasse sich Wasmjit zudem im Userspace ausführen, um Webassembly-Module zu nutzen, ohne den kompletten Browser betreiben zu müssen. Die Software steht unter der MIT-Lizenz, und läuft aktuell auf POSIX-konformen x86_64-Systemen wie Linux, OS X und BSD.
Wer die Software in ihrem frühen Stadium einsetzen möchte, braucht neben CC und Make ein Emscripten SDK sowie, unter Linux, die passenden Kernel-Header. Mehr Infos und Anleitungen liefert eine Übersicht auf Github.

