Rust Workers worden veel beter bestand tegen fouten
Cloudflare Workers met Rust krijgen een belangrijke update. Een panic of abort hoefde vroeger niet netjes te stoppen, en kon een hele instantie in de war brengen. Dat maakt Rust workers nu een stuk betrouwbaarder.
Waarom is dit belangrijk?
Als je een site,app of API runt op Rust Workers,wil je dat één fout niet meteen meer stuk maakt. Vroeger kon een panic in één verzoek namelijk doorwerken naar andere verzoeken. In het slechtste geval raakte de hele Worker “besmet” en ging ook nieuw verkeer fout.

Dat is vooral lastig voor mensen met state in geheugen. Denk aan apps die tijdelijk gegevens vasthouden, zoals Durable Objects.Dan wil je niet dat één fout alles weggooit. 🦫
Wat is er nu anders?
Cloudflare heeft twee dingen verbeterd:
- panics kunnen nu worden opgevangen met
panic=unwind - aborts krijgen een nieuwe herstelstap, zodat de fout niet blijft hangen
Kort gezegd: een fout in Rust hoeft niet meer meteen de hele runtimemachine kapot te maken.De code kan nu beter netjes stoppen, opruimen en daarna weer normaal verder werken.
De verbeteringen zijn ook teruggegeven aan het wasm-bindgen-project, waar rust Workers veel op leunen. Daar draait veel van de koppeling tussen Rust en JavaScript om. Cloudflare heeft dus niet alleen iets “dichtgezet” voor zichzelf, maar ook aan de bron meegebouwd.
Dit merkt een gewone gebruiker ervan
Voor de meeste site-eigenaren is het voordeel simpel: minder kans dat één fout uitgroeit tot meerdere fouten. Dat betekent:
- meer kans dat andere verzoeken gewoon doorgaan
- minder kans dat een Worker tijdelijk “vast” raakt
- minder kans op rare, lastige herstarts
- beter gedrag als je code per ongeluk paniekt
Er zit ook een belangrijk verschil tussen twee soorten herstel.
panics kunnen nu netjes uitlopen
Bij panic=unwind kunnen opruimtaken nog draaien. Dat is handig,want dan worden destructors uitgevoerd. Zo blijft de staat van het programma beter klopt.
Rust-fouten worden aan de JavaScript-kant ook als PanicError doorgegeven. Bij async functies wordt de promise dan afgewezen met zo’n fout. Dat is duidelijker dan een stille, vreemde crash.
Aborts blijven hard,maar worden beter afgehandeld
Een abort is nog steeds een harde fout. Daar kun je niet netjes uit “unwinden”. maar de runtime kan nu wel beter zien dat zo’n fout gebeurd is, en daarna voorkomen dat kapotte state blijft doorsudderen.
Dat is vooral een laatste verdedigingslinie. Het doel is niet dat aborts fijn zijn. Het doel is dat ze niet nog meer schade doen.
Voor wie is dit handig?
Dit is vooral nuttig als je één van deze dingen doet:
- Rust Workers gebruikt voor een API of backend
- state in geheugen bewaart
- Durable Objects gebruikt
- Rust als Wasm-bibliotheek in JavaScript inzet
- betrouwbaarheid belangrijk vindt en niet wilt dat één fout alles raakt
Voor een simpele stateless Worker is het voordeel vooral rustiger gedrag bij fouten. Voor apps met geheugenstate is het nog belangrijker, omdat daar een fout eerder echte schade kan geven.
Wat heb jij eraan in de praktijk?
Hier is het eenvoudigste overzicht:
| Situatie | Wat vroeger kon gebeuren | Wat nu beter is |
|---|---|---|
| Panic in één request | Ook andere requests kunnen last krijgen | De fout blijft beter binnen dat ene pad |
| Abort in Wasm | Kapotte state kon blijven hangen | De runtime kan dit beter herkennen en opvangen |
| Geheugenstate in een Worker | Reinit kon data weggooien | Panics kunnen vaker netjes worden afgehandeld |
| Rust via wasm-bindgen | Beperkte herstelregels | Betere recovery en duidelijke foutgrenzen |
De kern is: minder kans op domino-effecten.
Waar moet je op letten?
Niet alles wordt ineens magisch foutvrij. Aborts bestaan nog steeds. Ook is de omschakeling naar de nieuwe manier nog iets waar tooling en ecosystemen aan moeten wennen.
Er zijn een paar dingen om te onthouden:
panic=unwindis nieuw voor Rust Workers als optionele stap- als je nu op de oude manier bouwt, blijft er nog steeds een oudere herstelroute bestaan
- moderne WebAssembly Exception Handling is niet overal even oud of even breed uitgerold
- Cloudflare werkt nog aan verdere stappen om dit later zoveel mogelijk vanzelf te laten lopen
Voor jou als gebruiker betekent dat: upgraden helpt, maar je moet nog steeds gewoon netjes code schrijven en fouten afvangen waar dat kan.
Handige tip
Gebruik je Rust Workers? Dan is het slim om de nieuwe --panic-unwind vlag te bekijken. Cloudflare zegt dat deze beschikbaar is vanaf Rust Workers versie 0.8.0. Daarmee worden panics beter hersteld en krijgt abort recovery de nieuwe classificatie en herstelhaak.
De officiële uitleg staat hier:
- Cloudflare blog: https://blog.cloudflare.com/making-rust-workers-reliable
- wasm-bindgen guide over panics: https://rustwasm.github.io/docs/wasm-bindgen/
Kijk ook even naar je eigen foutafhandeling. Een betere runtime helpt veel,maar goede checks in je code blijven belangrijk.
Als je hierover door wilt lezen, pak dan ook even Cloudflare wordt sneller op meer netwerken Cloudflare zegt dat het nu op mee.
Bevers gedachte
Dit is zo’n update die op het eerste gezicht erg technisch lijkt,maar die in de praktijk gewoon fijn is. Je merkt hem vooral als het misgaat. En juist dan wil je geen chaos die doorrolt naar alles eromheen.
De mooie winst zit dus niet in extra poespas,maar in rust. Minder kapotte staten, minder rare kettingreacties, meer kans dat je site gewoon door blijft gaan. Dat is precies het soort update waar je pas blij mee bent als je het nodig hebt.
