Dev News Daily ENDE

Cloudflare testet natives Rust und Tokio auf Workers per Emscripten

Cloudflare hat die erste öffentliche, experimentelle Vorschau für das Emscripten-Compilerziel wasm32-unknown-emscripten veröffentlicht, in wasm-bindgen, der quelloffenen Werkzeugkette hinter Rust-WebAssembly-Anwendungen auf der V8-basierten Workers-Laufzeit, und in Cloudflares Rust Workers. Ziel ist laut Unternehmen, mehr nativen Rust-Code auszuführen, auch Anwendungen auf der asynchronen Laufzeit Tokio, ohne sie für das bisher genutzte browserartige Ziel umzuschreiben.

Die Arbeit begann vor über einem Jahr bei Google, wo ein Team wasm-bindgen den Build steuern und den JavaScript-Klebecode erzeugen lassen wollte, während der Linker von Emscripten C++-Abhängigkeiten einband. Cloudflare-Ingenieure, die wasm-bindgen pflegen, prüften und erweiterten das. Weil Workers Web-Platform-APIs und Node.js-Kompatibilität bietet, kann Emscripten dort mit seinen Node.js-Kompilierflags laufen und Timer, Dateisystemzugriffe und Sockets auf den vorhandenen Node.js-APIs virtualisieren.

Als Beispiel nennt Cloudflare Pumpkin, einen in Rust geschriebenen Minecraft-Server, der in einem Durable Object mit TCP-Eingang und echten TCP-Sockets über Tokio lief. Patches und Beispielanwendungen stehen zum Ausprobieren bereit, die Funktion ist noch nicht freigegeben.

Cloudflare testet natives Rust und Tokio auf Workers per Emscripten
Cloudflare testet natives Rust und Tokio auf Workers per Emscripten — Dev News Daily

Was das bedeutet

Die Grenze für Rust auf Workers war bisher die Kompatibilität von Bibliotheken: Crates, die Threads, Sockets oder ein Dateisystem voraussetzen, ließen sich nicht für das schlichte WebAssembly-Ziel übersetzen. Ein Emscripten-Ziel verlagert diese Last von der Anwendung in eine Virtualisierungsschicht. Es ist eine Vorschau, zu prüfen sind also Kaltstartgröße und Verhalten unter Last, nicht ob eine Demo läuft.