denoland/celldPublic

self-hosted, distributed Durable Objects

v0.5.0

Upgrading from v0.4.1 requires stopping the whole fleet first.

Highlights:

- Support for Containers and the Cloudflare Sandbox SDK.
- Support for worker_loaders in wrangler.json. Loaded Workers can receive
  service bindings and use a custom outbound fetch handler.
- Service bindings now support fetch() on named entrypoints across Workers.
- RPC support for default service bindings and nested properties.
  AbortSignal can pass through RPC calls on the same node.
- Choose how long to keep completed Workflow runs, or delete them manually.
- Support for .dev.vars in celld dev, with automatic reloads.
- Support for WASM files in prebuilt deployments.
- Lower memory use per cell and faster KV prefix listings.
- Fixes for nested transactions, facet rollback, and unfinished SQL writes.
- More reliable alarm delivery and background work after a response.
- Database recovery fixes, with lower memory use during recovery and
  compaction.
- Internal host functions are no longer exposed to application code.
- Configure telemetry with CELLD_OTEL: 1 for the bucket, or an OTLP
  collector URL.

Issues fixed:

- #177: Pass service bindings to loaded Workers.
- #192: Isolate host state between loaded Workers.
- #193: Recover cells after their owner freezes.
- #194, #195, #196, #197: Fix Base64 and argument handling.
- #198, #199: Fix database compaction and restore failures.
- #200: Resume async work when another request wakes it.
- #201: Recognize minified imports for Node.js builtins.
- #203: Fix duplicate WebSocket Close frames.

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Co-authored-by: Nathan Whitaker <nathan@deno.com>
Co-authored-by: Yusuke Tanaka <yusuktan@maguro.dev>
Co-authored-by: Andrew Joslin <andrew@joinboja.com>
AJYTNWBIRDRyan Dahl and 4 others authored
12d5b63Patch
Parent10cb130
122 files changed+13714-16359
StackedSplit
.gitignore+3 −0
Cargo.lock+2 −1
README.md+9 −0
crates/celld/Cargo.toml+1 −1
crates/celld/actor.rs+187 −91
crates/celld/actor/local_request.rs+119 −0
crates/celld/asyncrt.rs+63 −6
crates/celld/bucket.rs+5 −1
crates/celld/container.rs+1588 −0
crates/celld/control_plane.rs+12 −75
crates/celld/deploy.rs+489 −30
crates/celld/dev.rs+36 −1
crates/celld/docker.rs+267 −0
crates/celld/env_vars.rs+196 −47
crates/celld/fleet.rs+67 −60
crates/celld/generation.rs+8 −8
crates/celld/js.rs+1956 −520
crates/celld/js/atob_btoa.js+53 −28
crates/celld/js/bootstrap.rs+341 −201
crates/celld/js/byte_streams.js+2 −2
crates/celld/js/cache.js+2 −2
crates/celld/js/compression_streams.js+2 −2
crates/celld/js/container.rs+325 −0
crates/celld/js/crypto.js+2 −14
crates/celld/js/event_source.js+1 −1
crates/celld/js/harness.js+1564 −552
crates/celld/js/headers.js+12 −12
crates/celld/js/html_rewriter.js+1 −1
crates/celld/js/identity_transform_stream.js+5 −5
crates/celld/js/message_channel.js+1 −1
crates/celld/js/modules.rs+348 −165
crates/celld/js/node_assert.js+3 −3
crates/celld/js/node_async_hooks.js+5 −5
crates/celld/js/node_buffer.js+5 −5
crates/celld/js/node_crypto.js+12 −16
crates/celld/js/node_diagnostics_channel.js+1 −1
crates/celld/js/node_events.js+2 −2
crates/celld/js/node_os.js+2 −2
crates/celld/js/node_path.js+2 −2
crates/celld/js/node_stream.js+5 −5
crates/celld/js/node_test.js+2 −2
crates/celld/js/node_timers.js+1 −1
crates/celld/js/node_util.js+11 −11
crates/celld/js/r2_ops.rs+33 −2
crates/celld/js/set_immediate.js+1 −1
crates/celld/js/sockets.js+3 −3
crates/celld/js/storage_ops.rs+163 −20
crates/celld/js/streams.js+7 −7
crates/celld/js/tcp.rs+29 −8
crates/celld/js/text_encoding.js+6 −6
crates/celld/js/url.js+5 −5
crates/celld/js/url_pattern.js+2 −2
crates/celld/js/url_search_params.js+5 −5
crates/celld/js/v8_strings.rs+14 −2
crates/celld/js/websocket.rs+28 −10
crates/celld/js/writable_stream.js+9 −9
crates/celld/lib.rs+44 −2
crates/celld/ltx_repl.rs+328 −174
crates/celld/main.rs+316 −413
crates/celld/main/cli.rs+1 −31
crates/celld/main/peer_tunnel.rs+43 −15
crates/celld/main/websocket.rs+14 −19
crates/celld/node_log.rs+538 −325
crates/celld/node_log/recovery_progress.rs+7 −0
crates/celld/ownership_store.rs+94 −4
crates/celld/pool.rs+71 −102
crates/celld/protocol.rs+16 −0
crates/celld/queue_batching.rs+43 −0
crates/celld/replication.rs+46 −0
crates/celld/runtime.rs+471 −312
crates/celld/storage.rs+454 −46
crates/celld/storage/wake_record.rs+105 −0
crates/celld/telemetry.rs+34 −43
crates/celld/wake.rs+459 −222
crates/celld/wake_format.rs+194 −0
crates/celld/ws_client.rs+5 −2
crates/logic/lib.rs+437 −77
crates/logic/output_gate.rs+2 −4
crates/logic/pressure.rs+16 −2
crates/logic/rebalance.rs+9 −4
crates/logic/schedule.rs+92 −0
crates/logic/types.rs+72 −14
crates/logic/wake.rs+213 −427
crates/ltx/Cargo.toml+1 −0
crates/ltx/src/client/bundle.rs+64 −3
crates/ltx/src/client/file.rs+58 −0
crates/ltx/src/client/mod.rs+36 −3
crates/ltx/src/client/object_store.rs+85 −19
crates/ltx/src/compactor.rs+29 −1
crates/ltx/src/db.rs+78 −0
crates/ltx/src/host.rs+16 −0
crates/ltx/src/replica_compactor.rs+238 −24
docs/README.md+136 −49
docs/cloudflare-compat.md+285 −307
docs/guarantees.md+127 −13
docs/security.md+6 −0
docs/telemetry.md+27 −13
docs/wasm.md+23 −0
examples/README.md+5 −0
examples/container/Dockerfile+6 −0
examples/container/README.md+36 −0
examples/container/index.js+39 −0
examples/container/package.json+8 −0
examples/container/server.py+32 −0
examples/container/wrangler.jsonc+17 −0
examples/facets/README.md+21 −0
examples/facets/index.js+45 −0
examples/facets/wrangler.jsonc+10 −0
examples/opencode/README.md+1 −1
examples/opencode/package-lock.json+0 −8679
examples/opencode/package.json+0 −3
examples/pi/.gitignore+0 −1
examples/pi/README.md+17 −16
examples/pi/index.js+10 −12
examples/pi/package-lock.json+0 −3011
examples/pi/package.json+0 −3
examples/pi/wrangler.jsonc+2 −1
examples/sandbox/Dockerfile+5 −0
examples/sandbox/README.md+32 −0
examples/sandbox/index.js+46 −0
examples/sandbox/package.json+8 −0
examples/sandbox/wrangler.jsonc+18 −0