PRODSouveräne europäische BaaS-PlattformÖffnen Sie das Dashboard →

Ingenieurwesen · 8 Min. Lesezeit

Rust/WASM Edge Functions vs. Cloudflare und Vercel Edge

Affane Daylami · Fondateur · 22. Juni 2026

Zurück zum Blog

Cloudflare Workers und Vercel Edge Functions führen Ihren Code in V8-Isolaten aus, einem einfachen JavaScript-Kontext, nicht in einem Container oder einer virtuellen Maschine. Aurabase bietet einen zweiten Pfad, der in seinem Code verifiziert ist: einen Wasm-Modus, der in WebAssembly kompiliertes Rust direkt nativ im Aura-Functionsservice über die Wasmtime-Laufzeit ausführt.

Dieser englische Text wurde automatisch aus dem französischen Original generiert und wurde noch nicht überprüft.
Diese Seite wurde automatisch übersetzt. Maßgeblich ist die englische Version.

Der Standardmodus von Aurabase bleibt jedoch Deno (auch V8 Isolates), wie in Aurabases Rust-Kerndokumentiert. „Edge Functions in Rust“ deckt je nach Plattform drei verschiedene Realitäten ab: ein Community-SDK auf der Cloudflare-Seite, keine offizielle Route auf der Vercel-Seite, ein nativer Ausführungsmodus mit eigener CLI auf der Aurabase-Seite. Dieser Vergleich beschreibt die drei Architekturen im Detail, ohne zu vermischen, was überprüft wird und was ein Plattformziel bleibt.

Das Wesentliche

  • Aurabase bietet zwei Edge Functions-Laufzeiten: deno (V8-Isolate, dedizierter Dienst, Standardmodus) und wasm (Rust kompiliert, nativ über Wasmtime ausgeführt).
  • Cloudflare Workers läuft auf V8-Isolaten und kann zusätzlich WebAssembly ausführen, insbesondere über das Community-SDK workers-rs. Es handelt sich nicht um eine dedizierte native Rust-Laufzeit wie der wasm-Modus von Aurabase.
  • Vercel Edge Functions basiert auf der Edge Runtime, einer Teilmenge der Node.js-API auf Isolaten V8: kein offizielles SDK oder CLI, um die Funktion selbst in Rust zu schreiben.
  • Der wasm-Modus von Aurabase isoliert jede Ausführung mit einem Wasmtime-Fuel-CPU-Budget, einem dedizierten Speicherlimit und einem Timeout pro Epoche, macht jedoch derzeit keinen ausgehenden Netzwerkzugriff auf das Gastmodul verfügbar.
  • Drei verschiedene Architekturen für das gleiche Ziel: schnell starten und jede Ausführung isolieren, ohne die Kosten eines kompletten Containers.
#
Kontext

V8-Isolate und WASM-Module: zwei Sandbox-Mechaniken

Ein V8-Isolat ist ein leichter JavaScript-Ausführungskontext innerhalb derselben V8-Engine: keine neuen Systemprozesse, kein neuer Kernel zum Starten. Dies ist der Mechanismus, den Cloudflare erstmals für Worker veröffentlicht hat und den Vercel für seine Edge Runtime wiederverwendet. Das Ziel ist auf beiden Seiten dasselbe: die Kosten für einen Container oder eine VM für jede Anfrage zu vermeiden.

Ein WebAssembly-Modul erfüllt denselben Bedarf durch einen anderen Mechanismus. Der WASM-Bytecode läuft in einem begrenzten linearen Speicher, der durch die Spezifikation selbst definiert wird. Das Gastmodul kann keine Adressen außerhalb dieses Bereichs ansprechen, unabhängig von der Quellsprache (Rust, C, Go…), die die Binärdatei erstellt hat. Es ist dieses Modell, das Wasmtime im wasm-Modus von Aurabase anwendet, wie unten beschrieben. Informationen zu Startmessungen zwischen den beiden Mechaniken finden Sie in unserer Datei zu WebAssembly-Kaltstart-Benchmarks.

#
WASM-Laufzeit

Welcher Aurabase-WSM-Modus wird in der Produktion ausgeführt?

Jede Aurabase-Funktion trägt ein runtime-Feld, das einen Wert von "wasm" oder "deno"hat. Die Aufruf-Engine wählt den Ausführungspfad entsprechend aus:

runtime/dispatch.rsrust
// Versand nach Laufzeit: WASM (wasmtime) oder Deno (V8 isoliert über Edge-Runtime)
let resp = if func.runtime == "wasm" {
    state.runtime.invoke(&wasm_bytes, &func.code_hash, req).await?
} else {
    // Proxy für Aura-Edge-Runtime – V8-Isolate (supabase/edge-runtime, MIT)
    proxy_to_edge_runtime(&state.config.edge_runtime_url, …).await?
};

Die Sandbox basiert auf drei kombinierten Wasmtime-Mechanismen. Ein CPU-Budget, das als „Kraftstoff“ gezählt wird: Jeder WASM-Befehl verbraucht es. Ein in Epochenschritten angewendetes Timeout: Ein dedizierter Thread erhöht die Wasmtime-Uhr nach der konfigurierten Verzögerung, wodurch die aktuelle Ausführung unterbrochen wird. Ein über StoreLimitsfestgelegtes Speicherlimit. Die drei Terminals werden konfiguriert, wenn die Engine instanziiert wird:

runtime/wasm.rsrust
let mut cfg = Config::new();
cfg.consume_fuel(true);
cfg.epoch_interruption(true);

// Speicher begrenzt durch StoreLimits, anfänglicher Kraftstoff = max_fuel,
// timeout = Epocheninkrement nach timeout_secs (dedizierter Thread)

Das kompilierte Modul wird von code_hashzwischengespeichert: Die gleiche bereitgestellte Binärdatei wird nicht bei jedem Aufruf neu kompiliert. Jeder Aufruf instanziiert dennoch ein neues Store und eine neue Instanz. Es gibt keine Statuslecks von einem Anruf zum nächsten. Die dem Gastmodul ausgesetzte Oberfläche bleibt bewusst minimal, insgesamt fünf Hostfunktionen: aura.log, aura.get_input, aura.set_output, aura.get_env und ein Stub env.abort für AssemblyScript-Kompatibilität. Derzeit stellen keine Hostfunktionen ausgehende Netzwerkaufrufe zur Verfügung.

Verifiziert vs. Produktziel

Der wasm-Modus eignet sich nun für reine Berechnungen: Validierung, Datentransformation, Scoring, Analyse. Eine Funktion, die eine Drittanbieter-API (Zahlung, E-Mail, externer Dienst) aufrufen muss, muss weiterhin den deno-Modus durchlaufen. Dies ist der Standardmodus für Aurabase und der empfohlene Modus für die Migration von vorhandenem Deno-Code.

Auf der Bereitstellungsseite kompiliert die CLI Ihre Kiste lokal, bevor sie Folgendes sendet: aura functions new erstellt ein Gerüst für eine Kiste cdylib, aura functions deploy kompiliert sie und sendet sie dann.

terminalbash
# Gerüst: erstellt aurabase/functions/<name>/ (Cargo.toml crate-type = cdylib)
aura functions new my-fn

# cargo build --target wasm32-unknown-unknown --release, dann hochladen
# POST /v1/functions/:project_id { Laufzeit: „wasm“, Code: <wasm in base64> }
aura functions deploy my-fn
#
Wolkenflare

Cloudflare Workers: isoliert V8, zusätzlich mit WebAssembly

Cloudflare-Worker führen JavaScript und TypeScript nativ in V8-Isolaten aus, die über das globale Netzwerk von Cloudflare verteilt sind. WebAssembly ist seit Beginn der Plattform ein erstklassiger Bürger: Ein .wasm-Modul kann wie jedes andere Modul direkt in einen Worker importiert werden.

Um einen Worker vollständig in Rust zu schreiben, wird am häufigsten das Community-SDK workers-rsverwendet, das den Code zu wasm32-unknown-unknown kompiliert und in der Workers-Laufzeit ausführt. Der Unterschied zum wasm-Modus von Aurabase ist die verfügbare Oberfläche. Ein über dieses SDK in Rust geschriebener Worker läuft in der vollständigen Workers-Umgebung und kann daher fetch oder andere Plattformbindungen aufrufen. Der wasm-Modus von Aurabase beginnt mit einer bewusst reduzierten Hostoberfläche (vorheriger Abschnitt).

#
Vercel

Vercel Edge-Funktionen: eine Node.js-Teilmenge, kein offizieller Rust-Pfad

Die Edge Runtime von Vercel führt auch Code in V8-Isolaten aus, mit einer Teilmenge der Standard-Web-APIs (fetch, Request/Response, crypto.subtle…) anstelle der vollständigen Node.js-Umgebung. Native Node-Module und beliebige Kompilierungs-Toolchains haben dort keinen Platz.

Das WebAssembly-Objekt ist Teil dieser Teilmenge: Nichts hindert Sie daran, eine .wasm-Binärdatei zu laden und sie manuell aus einer JavaScript- oder TypeScript-Funktion zu instanziieren. Aber unseres Wissens veröffentlicht Vercel kein offizielles SDK oder CLI, um eine Edge-Funktion direkt in Rust zu schreiben, im Gegensatz zu workers-rs auf der Cloudflare-Seite oder aura functions deploy auf der Aurabase-Seite. Der Weg bleibt möglich, aber vollständig manuell und ohne spezielle Tools.

#
Sicherheit

Sandbox: WASM-Linearspeicher versus V8-Isolation

Ein V8-Isolat trennt den von einem dedizierten Heap ausgeführten Code und seinen eigenen Kontext innerhalb desselben Engine-Prozesses. Es handelt sich um einen bewährten Mechanismus mit einer Größenordnung von Millionen von Anfragen pro Sekunde bei Cloudflare und Vercel, der jedoch weiterhin ein Software-Isolationsmechanismus innerhalb einer einzelnen JavaScript-Engine bleibt.

Das WASM-Modell isoliert anders: Jede Instanz erhält ihren eigenen linearen Speicher, einen zusammenhängenden Puffer, außerhalb dessen durch die Konstruktion des Binärformats selbst kein Zugriff möglich ist, unabhängig von der Engine, die ihn ausführt. In der Aurabase-Laufzeit validiert jede Hostfunktion, die einen vom Gastmodul bereitgestellten Zeiger (aura.log, aura.get_env…) manipuliert, die Grenzen vor jedem Speicherzugriff explizit erneut. Dies ist eine zusätzliche Tiefenverteidigung gegen ein bösartiges oder fehlerhaftes Modul.

#
Übersicht

Die drei Architekturen nebeneinander

Aurabase (wasm)Cloudflare-MitarbeiterVercel Edge-Funktionen
AusführungsmodellNatives WASM-Modul, WasmtimeIsolieren Sie V8 + WASM als optionales ModulIsolieren Sie V8, Node.js-Teilmenge
Rost im VordergrundJa, dedizierter Modus + CLIÜber Community SDK (workers-rs)Nein, keine offizielle Route
Netzwerkzugriff beim Verlassen des ModulsNein, im Code eingecheckt (keine Netzwerk-Host-Funktion)Ja, über die vollständige Workers-UmgebungJa, Standard-Abruf-API
CPU-BudgetKraftstoffverbrauchszeit, konfigurierbarCPU-Zeitlimit pro Anfrage (Cloudflare-Dokument)Dauerbegrenzung pro Vorladung (Dok. Vercel)
Dedizierte Rust-BereitstellungAura-Funktionen bereitstellen (lokale Frachterstellung)Wrangler + Arbeiter-RSKein offizielles gleichwertiges Tool

Aurabase-Laufzeitspezifikationen. Beschriebene Cloudflare- und Vercel-Spalten aus der dokumentierten öffentlichen Architektur jeder Plattform (isoliert V8, WebAssembly als Build-Ziel).

#
Entscheidung

Welche Laufzeit Sie entsprechend Ihrer Funktion auswählen sollten

Reine Berechnung, ohne Netzwerkaufrufe: Schemavalidierung, Datentransformation, Bewertung, einfache Bildgenerierung. Der wasm-Modus von Aurabase ist direkt geeignet, mit einer strikten Speicher-Sandbox, einem expliziten CPU-Budget und ohne Abhängigkeit von einem externen Dienst.

Funktion, die eine Drittanbieter-API aufruft (Zahlung, E-Mail, ausgehender Webhook). Der deno-Modus von Aurabase ist auch heute noch die Standardauswahl, genauso wie ein klassischer Cloudflare Worker oder eine Vercel Edge Function nativ auf fetch angewiesen ist.

Das Team hat bereits in das Cloudflare-Ökosystem (KV, Langlebige Objekte, R2) investiert. Es macht Sinn, bei den Arbeitern zu bleiben; Mit workers-rs können Sie Rust schrittweise einführen, ohne die Plattform zu wechseln.

Benötigen Sie eine native Rust-Laufzeit, die durchgängig verwaltet wird, mit einer dedizierten CLI und derselben Sprache wie der Rest des Backends. Dies ist der Blickwinkel, den in unserem Wasmtime vs. Wasmer-Vergleichauf die Wahl der WebAssembly-Engine selbst dokumentiert.

#
Häufig gestellte Fragen

FAQs

Können Sie Aurabase-Edge-Funktionen in Rust schreiben?+
Ja, über den WASM-Modus. Die CLI verfügt über neue Gerüstfunktionen in einer Rust-Kiste (cdylib vom Typ Crate). Der Befehl „Aura Functions Deploy“ kompiliert es lokal mit „cargo build --target wasm32-unknown-unknown --release“ und sendet die Binärdatei dann an den Aura-Functions-Dienst, der sie nativ mit der Wasmtime-Laufzeitumgebung ausführt. Dies ist nicht der Standardmodus: Standardmäßig wird eine Aurabase Edge-Funktion in JavaScript/TypeScript (Deno-Laufzeit, V8-Isolate) ausgeführt.
Ermöglicht Cloudflare Workers wirklich das Schreiben von Funktionen in Rust?+
Ja, aber indirekt: Cloudflare Workers führt JavaScript/TypeScript nativ in V8-Isolaten aus. Mit dem Workers-RS-Community-SDK können Sie einen gesamten Worker in Rust zu WebAssembly kompilieren, dies ist jedoch nicht der am besten dokumentierte Weg. WASM ergänzt dort einen Worker, anstatt das JS-Modell vollständig zu ersetzen.
Unterstützt Vercel Edge Functions WebAssembly oder Rust nativ?+
Die Vercel Edge Runtime stellt Standard-Web-APIs bereit, einschließlich des WebAssembly-Objekts, sodass ein .wasm-Modul manuell aus einer JavaScript-/TypeScript-Funktion geladen und instanziiert werden kann. Aber unseres Wissens veröffentlicht Vercel kein offizielles SDK oder CLI, um eine Edge-Funktion direkt in Rust zu schreiben, im Gegensatz zu Workers-RS auf der Cloudflare-Seite oder Aura-Funktionen, die auf der Aurabase-Seite bereitgestellt werden.
Kann der Aurabase-Wasm-Modus eine Drittanbieter-API (Zahlung, E-Mail usw.) aufrufen?+
Nicht heute: Die Hostfunktionen, die dem WASM-Gastmodul zur Verfügung gestellt werden, sind das Protokoll, das Lesen der Eingabeanforderung und das Schreiben der Ausgabeantwort sowie das Lesen der Umgebungsvariablen. Für eine Funktion, die eine externe API (Netzwerkabruf) aufrufen muss, ist die Deno-Laufzeitumgebung (Standard) der empfohlene Pfad.

BEREIT ZUM EINSATZ?

Ihr Backend in fünf Minuten.

Keine Kreditkarte erforderlich · 500 MB kostenlos · 50.000 MAU