VaultTools mit Rust und WebAssembly im Browser
Videozusammenfassung ansehen
45+ Tools, kein Datei-Backend. Die Verarbeitung läuft direkt im Browser-Tab.
Dieser Beitrag zeigt die technische Architektur hinter VaultTools.
Warum Rust
Rust war für dieses Ziel die pragmatischste Wahl:
- Speichersicherheit ohne Garbage-Collector
- Sehr gute Wasm-Toolchain (
wasm32-unknown-unknown,wasm-bindgen,wasm-pack) - Reife Crates für Bilder, PDF, Text und Datenformate
- Gute Performance bei kompakten Binaries
Architektur in 5 Crates
Statt eines monolithischen Moduls nutzen wir 5 getrennte Wasm-Crates:
image-toolspdf-toolstext-toolsdev-toolsfile-tools
Vorteil: Tool-spezifisches Laden. Beim JSON-Formatter lädt der Browser kein PDF-Processing.
Build-Pipeline
Die Wasm-Builds laufen über ein Skript, das je Kategorie wasm-pack build --target web --release ausführt und Artefakte nach site/public/wasm/ kopiert.
So können Astro-Seiten die Module als statische Assets laden.
Wasm-Laden in Astro
Tool-Seiten initialisieren Wasm dynamisch im Browser:
const wasm = await import('/wasm/pdf-tools/pdf_tools.js');
await wasm.default();
Danach sind Rust-Funktionen aus JavaScript direkt nutzbar.
Datei-Pipeline im Browser
Der Datenfluss ist bei Datei-Tools konsistent:
- Datei lokal einlesen (
ArrayBuffer) - Bytes an Wasm-Funktion übergeben (
Uint8Array) - Ergebnisbytes zurück erhalten
Bloberzeugen- Download lokal auslösen
Keine Upload-Requests für die Nutzdaten.
Harte Probleme in der Praxis
Einige konkrete Baustellen:
- Multi-File-Operationen brauchen Builder-Patterns an der JS-Wasm-Grenze
- PDF-Verarbeitung hat enge Versionsabhängigkeiten (zum Beispiel
lopdf) - Sync-Wasm blockiert den Main Thread, daher UI-Feedback mit doppeltem
requestAnimationFrame - Font-Subsetting reduziert Binary-Größen für Text-Watermarking deutlich
- Spezialfälle wie HEIC können hybride JS-und-Wasm-Lösungen erfordern
Performance
Lokale Verarbeitung spart Upload- und Download-Latenz. Bei typischen Dateien ist der Netzwerkanteil bei Server-Tools größer als die eigentliche Rechenzeit.
Mit Browser-Cache werden wiederholte Aufrufe zusätzlich schneller.
Fazit
Rust plus WebAssembly erlaubt leistungsfähige Datei-Tools mit klarer Datenschutz-Eigenschaft durch Architektur:
- Verarbeitung lokal
- keine Datei-Uploads
- verifizierbar im Network-Tab
Genau dieser Ansatz ist die Basis für alle VaultTools-Datei-Workflows.