Tools / Blog / VaultTools mit Rust und WebAssembly im Browser

VaultTools mit Rust und WebAssembly im Browser

· Antoine H.

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-tools
  • pdf-tools
  • text-tools
  • dev-tools
  • file-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:

  1. Datei lokal einlesen (ArrayBuffer)
  2. Bytes an Wasm-Funktion übergeben (Uint8Array)
  3. Ergebnisbytes zurück erhalten
  4. Blob erzeugen
  5. 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.