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 laeuft direkt im Browser-Tab.

Dieser Beitrag zeigt die technische Architektur hinter VaultTools.

Warum Rust

Rust war fuer dieses Ziel die pragmatischste Wahl:

  • Speichersicherheit ohne Garbage-Collector
  • Sehr gute Wasm-Toolchain (wasm32-unknown-unknown, wasm-bindgen, wasm-pack)
  • Reife Crates fuer 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 laedt der Browser kein PDF-Processing.

Build-Pipeline

Die Wasm-Builds laufen ueber ein Skript, das je Kategorie wasm-pack build --target web --release ausfuehrt und Artefakte nach site/public/wasm/ kopiert.

So koennen 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 uebergeben (Uint8Array)
  3. Ergebnisbytes zurueck erhalten
  4. Blob erzeugen
  5. Download lokal ausloesen

Keine Upload-Requests fuer 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 Versionsabhaengigkeiten (zum Beispiel lopdf)
  • Sync-Wasm blockiert den Main Thread, daher UI-Feedback mit doppeltem requestAnimationFrame
  • Font-Subsetting reduziert Binary-Groessen fuer Text-Watermarking deutlich
  • Spezialfaelle wie HEIC koennen hybride JS-und-Wasm-Loesungen erfordern

Performance

Lokale Verarbeitung spart Upload- und Download-Latenz. Bei typischen Dateien ist der Netzwerkanteil bei Server-Tools groesser als die eigentliche Rechenzeit.

Mit Browser-Cache werden wiederholte Aufrufe zusaetzlich schneller.

Fazit

Rust plus WebAssembly erlaubt leistungsfaehige Datei-Tools mit klarer Datenschutz-Eigenschaft durch Architektur:

  • Verarbeitung lokal
  • keine Datei-Uploads
  • verifizierbar im Network-Tab

Genau dieser Ansatz ist die Basis fuer alle VaultTools-Datei-Workflows.