Immutable
release. Only release title and notes can be modified.
Upgrading from v0.5.1 with fleet durability requires stopping the whole fleet first. A fleet with bucket durability can use a rolling update.
- Each Durable Object facet has its own SQLite file and replication stream. A facet write no longer copies the facet database into the root or joins a root transaction. A facet can start from a class in
ctx.exports. Facets from v0.5.1 migrate on first open. crypto.subtlesupports Ed25519 (also asNODE-ED25519) and X25519, withrawimport and export. (#221)- Per-cell memory: the SQL statement cache is capped at 128 KiB of compiled statements instead of 1 MiB of SQL text, which could hold tens of MB. A cell shares one object store client instead of three, and operation timers no longer leak one map entry per operation.
- Stricter workerd parity:
WorkerCoderequirescompatibilityDate, a wasm module inmodulesmust be{ wasm: bytes },export const X = "..."in a main module fails the Worker's start, and thetransactionSync()callback receives no argument. ctx.exportsholdsdefaultand each entrypoint, andfetch()on its stubs sends an HTTP request.- R2 keeps empty key segments, so
a/b,/a/b,a//b, anda/b/are four objects. An object v0.5.1 wrote asphotos/stays atphotos. - Invalid UTF-8 in SQLite
TEXTdecodes as U+FFFD instead of failing. Headersaccepts values above U+00FF and decodes response values as UTF-8.- A WebSocket close is
wasClean: truewhenever the peer sent a close frame. run_worker_firstaccepts the root route/.- Recovery waits for range evidence from a follower's log tail.
Issues fixed:
- #226: Nest
transactionSync()calls through the root storage handle. - #227: Resolve relative imports in Dynamic Worker subdirectories.
- #228: Fire a re-armed alarm on time despite the handler's pending timers.
- #229: Deliver WebSocket frames while
webSocketMessage()runs. - #232: R2
list()returns non-ASCII and%keys asput()received them.