Mozilla hat am 18. April 2018 wasm-pack als Werkzeug für Rust und WebAssembly vorgestellt. Das Programm bündelt mehrere Schritte, die aus einer Rust-Bibliothek ein für JavaScript und npm vorbereitetes WebAssembly-Paket machen.
wasm-pack ruft wasm-bindgen auf, erzeugt die JavaScript-Anbindung an das WebAssembly-Modul und ergänzt eine package.json mit den benötigten npm-Abhängigkeiten. Entwickler können das Ergebnis anschließend neben anderen JavaScript-Paketen in Browserprojekten oder Node.js verwenden.
Rust-Code als npm-Paket für WebAssembly
Der erste Arbeitsablauf kompilierte ein Rust-Projekt mit dem Ziel wasm32-unknown-unknown. Danach erzeugte wasm-bindgen die JavaScript-Schnittstelle. wasm-pack bündelte die Dateien und bereitete die Veröffentlichung im npm-Registry vor. Die Toolchain sollte dabei ohne eine separate JavaScript-Buildumgebung für die Rust-Seite auskommen, benötigte für die Veröffentlichung aber weiterhin npm.
Rust hatte zuvor bereits experimentellen WebAssembly-Support erhalten. wasm-pack ergänzte diese Compilerbasis um einen reproduzierbaren Packaging-Schritt. Das offizielle Projekt auf GitHub dokumentiert die Befehle für Build, Test, Pack und Publish.
Für Spiele- und interaktive Medienprojekte eröffnete der Ansatz eine zusätzliche Möglichkeit, rechenintensive Bibliotheken aus Rust in browserbasierte Werkzeuge einzubinden. Die damalige Veröffentlichung war noch ein frühes Werkzeug, zeigte aber bereits die geplante Verbindung von Rust, WebAssembly, JavaScript und npm.

