Skip to content

open-compute 0.2.3

Choose a tag to compare

@github-actions github-actions released this 01 Oct 05:04
· 269 commits to main since this release
Immutable release. Only release title and notes can be modified.
85b21ae

0.2.3 strengthens the runtime and supply-chain contract, expands AI Search ranking, corrects R2 multipart behavior, and aligns the documented network model with the platform's host-routable tenant egress. It is a focused pre-1.0 release for self-hosted operators who need current Cloudflare tooling compatibility and deterministic, verified runtime inputs.

What's new

  • Workerd-owned compatibility authority. Tenant compatibility dates and flags are validated by the formally pinned workerd build instead of an open-compute-maintained historical allowlist. The system Worker date remains pinned and reviewed independently.
  • Dedicated AI Search reranking. AI Search now supports Cohere v2 and generic /v1/rerank provider protocols, model catalogs, threshold behavior, score projection, metadata boosting, and bounded rerank pools while keeping the public query surface text-only.
  • Host-routable tenant egress. General tenant outbound uses one workerd Network capability for public, private, loopback, link-local, and metadata IP destinations, with Unix sockets denied. Operators own address restrictions through the host firewall, network namespace, container, or VM.
  • R2 multipart correctness. S3 preflight uses the required 5 MiB minimum for non-final multipart parts, and SSE-C multipart ETags are treated as provider-opaque values while size and decrypted bytes remain verified.
  • Pinned release payloads. Workerd and Caddy are now prepared from immutable, checksummed release archives and embedded into ocd; repository LFS runtime blobs are no longer the build authority.
  • Current-product Dashboard. Navigation and product gates are derived from one supported-product inventory, obsolete Browser Run, Containers, and Sandbox stub routes are removed, and large Worker, D1, and Workflow detail views are split into owned components.

Workerd

The third_party/workerd submodule moved from 5347a1d6ad984411b4f63d63c3a62d589fc94abb to a266c0305e4c002b61ff48bc49deab3dfe24b731. The formal runtime pin moved from v1.20260918.1-open-compute-i102.1c7b89be at revision 1c7b89bea323a39a8511271913820f9fcf39306d to v1.20260930.0-open-compute-r3.e3bdb07f5 at revision e3bdb07f52affc6a618f02ed2b731a581b0b2f69; workerd --version now prints workerd 2026-09-30. The submodule also contains later upstream and release-workflow maintenance commits, but production bytes remain governed only by the formal lock.

The Caddy source moved into the third_party/caddy submodule at 77abbead037338a2f289b633779ed9c2da14ff30. Its formal lock is v2.11.4-open-compute.2; the verified binary bytes and version output remain unchanged from 0.2.2, while the archive source is now an immutable checksummed GitHub Release.

Every commit in the third_party/workerd submodule range:

  • 1e91b8264cd9 [nfc] Make skill reference links portable
  • 7c183a8669e9 Document coroutine cleanup patterns
  • ae8979d54141 Transform a parked TransformStream write after one backpressure wait
  • 8370bfb588f7 Merge pull request #7412 from cloudflare/jasnell/ts-streams-transform-write-stall
  • 1ed4b65ccdf8 Python: Hot fix for stack switching gc crash (upstream pyodide#6466) (#7422)
  • c7b5cdb96ec8 Split actor retry exhaustion outcomes
  • 06f6bb3c3cda Increase actor retry backoff
  • 973c10963095 Add Analytics SQL binding types (#7396)
  • b7add5519b85 Merge pull request #7414 from cloudflare/sol/actor-retry-policy
  • 266d066e8bd1 Merge pull request #7403 from cloudflare/jolio/document-cor-ocm4st
  • 8e4d15cdbcf5 [nfc] Drop unused variables
  • c0c369160419 [nfc] Fix compiler warnings based on KJ_HEADER_WARNINGS
  • b93fa71f0b14 [build] Re-enable bazel sandboxing on macOS
  • b72c41569c3e implement RPC support for inbound UDP connect() event
  • 85928d5126f8 support UDP events in workerd capnp server
  • 18de5f25ba99 set EVENT_TYPE back to 14
  • 26edffb8c322 Error both halves of a transform pair from the Node.js interop hook
  • e7b231c6dd72 Release 2026-09-19
  • e77b962e586e Drop the interopErrorHook when appropriate, fix some nits
  • 16a7913467dd Merge pull request #7417 from cloudflare/jasnell/ts-streams-transform-error-propagation
  • 6f6423754c07 Drop what a queued stream enqueues once every consumer is collected
  • b77563644f6e Address review feedback on streams changes
  • 552e0d9fb567 Merge pull request #7421 from cloudflare/jasnell/ts-streams-queue-after-no-consumer
  • 90faec3319d8 Release 2026-09-20
  • 13fd9a8604db Release 2026-09-21
  • b2ac12b35a81 Add a bazel option to disable python prebuilt snapshot
  • e5c685407347 Merge pull request #7429 from cloudflare/gyeongjae/disable-snapshot
  • 9e334ad92b68 Let TestFixture construct an actor class
  • 3056c0d6936c STOR-5489: Claim Durable Object RPC calls before dispatch
  • 0e32199bf473 STOR-5489: Attach retry metadata to Durable Object RPC calls
  • 3ea9117c64c9 Merge pull request #7347 from cloudflare/apeacock/jsrpc-retry-claims
  • 844b10841a15 Use Promise-returning synthetic module callbacks
  • 16c681dac93f Silence unused JSG template warnings
  • 7ce4d6d42748 Keep the Fast API test on TurboFan
  • eb076b3442b1 Deflake connect-handler tests
  • 8e83bcbb51a1 Merge pull request #7446 from cloudflare/erikcorry/deflake-connect-handler
  • f7d869a9a1b9 Use 2 isolates for tests to exercise cross-isolate (#7447)
  • 18d3f94faa27 Merge pull request #7433 from cloudflare/trubini/udp_workers_rpc
  • ea2aad5b2a1c Copy body bytes out as they arrive and cancel the source when consumption fails
  • f7b94c605801 Refuse a declared length the memory limit cannot hold before reading
  • f3401e54d88b Accept SharedArrayBuffer-backed views in body consumption
  • c896040bc0a0 Pin body assembly of a chunk wider than a collection block
  • 540e88fe7c12 Merge pull request #7416 from cloudflare/harris/2026-09-17-v8-15.5-compatibility
  • e1d1d7e50198 [build] Update to LLVM 22
  • f44359f2f99a [build] Fix libc++/libunwind package names
  • d97bb1f730b4 [build] Silence clang-22 warnings in 3rd party code
  • 5adb86cba926 Merge pull request #7424 from cloudflare/jasnell/ts-streams-body-consumption-oom
  • ebac9b83d0c3 Buffer the compression stage's output in blocks released as they are pulled
  • 8d99027b9569 Deliver the compression streams' output to the readable in bounded pieces
  • 1c246981e264 Use weak self captures for refcounted continuations
  • cc10f5928182 Queue the compression streams' output in bounded pieces per write
  • ea50171cdd4b Make snapshotContainer options optional (#7453)
  • 8d4cbe664916 build: instrument Rust under --config=asan
  • db31f1d0daec build: enable UBSan in --config=asan
  • c13a060e3cbb Fix the UBSan reports from the asan CI lane
  • 92069bfbb93b build: let Rust crates live beside the C++ they belong to
  • 54de095daa62 Stop the compression drain when its enqueue tears the pair down
  • 3b946b9acc3a Remove the C++ I/O backend (--//:io_backend=cxx)
  • d1cee9e1cc2c Implement proper js rpc stream cancel propagation
  • e464148c744d Merge pull request #7425 from cloudflare/jasnell/ts-streams-decompression-delivery
  • 761847b67636 Release 2026-09-22
  • c22e7ae3b5e2 [ci] Fix automated deps update
  • 1c0ddb76a1bc Add a per-attempt observer for outgoing actor RPC calls
  • 9532cb4d93c2 STOR-5489: Observe Durable Object RPC call attempts
  • cb01bb63d94f Merge pull request #7346 from cloudflare/apeacock/jsrpc-call-observation
  • 93280aa0d7c2 STOR-5489: Measure Durable Object RPC replay memory
  • e3a857711ea7 r2-rpc.c++: Copy put bodies out of the sandbox for MPK
  • 3173ee7bba16 Merge pull request #7408 from cloudflare/apeacock/jsrpc-replay-memory-observation
  • 1b2ece40cbd1 update dependencies to latest version
  • 774bf15c40e9 Walk the queued stream's cursors by index and skip the pinned cursor's deref
  • 52ea4cfc840c Merge pull request #7303 from cloudflare/harris/2026-09-10-portable-skill-references
  • 0ed2e1ef961d Address cursor update review feedback
  • 6c77ca762533 Merge pull request #7298 from cloudflare/jasnell/js-rpc-streams-cancelation
  • b4ee5bbed38d Merge pull request #7426 from cloudflare/jasnell/ts-streams-cursor-walk
  • 5c7074765495 [build] Apply formatters to custom clang-tidy checks
  • fcc475a13c21 Settle the head read first when respond() leaves a remainder
  • 0b5ed149cbc3 Linting: import LLVM coroutine-hostile-raii check
  • ae37de62cdb8 Linting: reformat LLVM upstream coroutine-hostile-raii check
  • 2aa070fe163d Linting: improve coroutine-hostile-raii test to check declaration nodes too
  • 880f3cbf7a48 Linting(coroutine-hostile-raii): add support for co_yield AllowedAwaitables
  • 3a7c0c2da4b0 Merge pull request #7431 from cloudflare/jolio/linting-impr-mjvxsi
  • 2ff63bad390c Accept a null source in MessageEventInit
  • 7d9d512c96e5 Preserve VFS exceptions during SQLite open
  • 48e0c97b0364 Pin where closed settles relative to the below-min tail read
  • 24e18bcdda4f Correct readable-byte ledger #19: the unfilled BYOB read settles on both sides
  • 8a969e7ec0cc Merge pull request #7465 from cloudflare/jasnell/ts-streams-respond-settle-order
  • d977442d7189 Return an empty view from read(view) on a cancelled byte stream
  • fcb57db83a17 Match upstream testharness semantics in WPT assert_object_equals
  • bd3e6e0e27ac Enumerate a primitive expected value in WPT assert_object_equals
  • 119c71572526 Merge pull request #7467 from cloudflare/jasnell/ts-streams-closed-after-tail
  • dab74a440225 Merge pull request #7468 from cloudflare/jasnell/ts-streams-read-view-cancelled
  • 2c5cd0a6d403 Deliver whole elements from native BYOB reads with multi-byte views
  • 2d6fc5717647 [tsan] increase tsan history
  • 91e4d4e2bf83 Merge pull request #7469 from cloudflare/jasnell/ts-streams-native-byob-elements
  • 3e937ba26f07 Allow tee() of a native body with an abandoned read in flight
  • 4bce6737323a Release 2026-09-23
  • 86d612ef7d90 Merge pull request #7471 from cloudflare/jasnell/ts-streams-native-tee-in-flight
  • 50c66ec0abf6 Use fresh isolate groups when available.
  • e34b9662c7cd Pull local system images before create
  • 3f4f4eddc923 Merge pull request #7461 from ghostwriternr/fix/local-system-image-pull
  • 9a6bd998223b Merge pull request #7445 from cloudflare/erikcorry/multi-group
  • d81212bae67a STOR-5489: Account for RPC serializer capacity
  • 9ae136fa0b9c STOR-5489: Format serializer capacity changes
  • 9be8b3683548 Merge pull request #7151 from cloudflare/jolio/preserve-vfs-r2y25y
  • 40507849dc4b fix: avoid initializing the UDP connect tracer twice
  • db6465f24cdd Merge pull request #7450 from Phanatic/aig-web-search
  • d93eab6d391f Merge pull request #7487 from cloudflare/trubini/fix_udp_connect_tracer
  • 3b647746ae45 Merge pull request #7481 from cloudflare/maizatskyi/2026-09-22-tsan-history
  • 071cd12005c8 capnproto update
  • c3f0074f4331 Merge pull request #7470 from danielmlr/fix/message-event-init-null-source
  • 62935d76771b [o11y] Add undefined to tailStream return types
  • cb62c8989054 Merge pull request #7484 from cloudflare/apeacock/jsrpc-retry-buffer-capacity
  • b57a78af8b44 Merge pull request #7472 from cloudflare/maizatskyi/2026-09-22-update-capnproto
  • c889d1dd2322 Merge pull request #7434 from cloudflare/jolio/use-weak-sel-6oxbqz
  • a3d517dc0e1b Error a tee branch or detached byte stream on a fractional fill at close
  • 71b390c76ed3 Place readableStreamErrorBranch ahead of the tee dispatch comment
  • 9ae1f7fb12ca Additional refinement on the ts streams tee error handling
  • 9022f4dc4548 Forward web search RPC params
  • 13489ec2b215 Format web search mock
  • 65e5eb999202 Use a class-based AI RPC mock
  • d5856b89723f One additional node streams test
  • 3447953857c6 Merge pull request #7492 from cloudflare/websearch-forward-account-id
  • dafe64028652 Merge pull request #7473 from cloudflare/jasnell/ts-streams-branch-error-callback
  • acec568cd396 Transfer byte-stream buffers to fixed length
  • fcf94867d5f3 Skip building an unobservable XThreadWaitList rejection
  • 78d4a26acbe6 Merge pull request #7474 from cloudflare/jasnell/ts-streams-resizable-buffers
  • d02b8e4e643a Add Durable Object I/O task eviction compat flag
  • 718f53105ec9 Add actor wait-until task lifetime tracking
  • 3dbc959b4d47 Pin async iterator interleavings that follow WebIDL
  • cb14d558d712 Merge pull request #7475 from cloudflare/jasnell/ts-streams-async-iterator-order
  • 1b9b6ea02336 Increase the SQLite row limit to 8 MiB
  • 733da15eda1c Document and pin slowest-branch tee backpressure
  • 6ade48f76daa Release 2026-09-24
  • 085a080322db Take queued bytes whole on auto-allocate default reads
  • 28a0e03930fd kj-rs-io: "loopback:" addresses, used by workerd test
  • 578972cf1c3a kj-rs-io: expose the file watcher and error text to Rust callers
  • fdc4611e6d85 Move the schema-file classes out of workerd.c++
  • 3b71d19db312 Rename workerd.c++ to cli-main.c++
  • e03943a61167 Make workerd's entry point Rust
  • 91437b139233 Update the docs and comments that name the CLI's files
  • 556b36c0f69f Collect coverage from tests that run the Rust workerd binary
  • 115580d5af0d Merge pull request #7476 from cloudflare/jasnell/ts-streams-tee-slowest-backpressure
  • 920e9871ecf2 bump reviewer to opus 5.5
  • 47d665f79cc8 Merge pull request #7477 from cloudflare/jasnell/ts-streams-auto-allocate-queued-reads
  • 8942c412c63c Merge pull request #7493 from cloudflare/jhoward/increase-sqlite-row-limit
  • 90c842c43ccf Keep a byobRequest held across tee() working
  • b1c639d1fd2b Merge pull request #7478 from cloudflare/jasnell/ts-streams-held-byob-request-across-tee
  • 1ff0fd78e400 Queue the chunk before filling reads with released bytes
  • 6b39c3395974 Merge pull request #7479 from cloudflare/jasnell/ts-streams-released-bytes-with-chunk
  • 48ef4984b370 Merge pull request #7301 from cloudflare/rinkle/RM-30088-workerd-io-task-eviction
  • dd58d5b952a0 add some deserialization diagnostics (#7486)
  • 38cdda943586 Only run internal build for necessary paths
  • f6e4947250f0 STOR-5489: Cover actor retry ambiguity
  • d0615a138dc0 STOR-5489: Handle committed actor retry failures
  • 20e7df49ed74 STOR-5489: Retry Durable Object RPC calls
  • bd8b075cb810 STOR-5489: Retry Durable Object RPC property reads
  • 98e502f88a4b Merge pull request #7463 from cloudflare/ketan/interal-build-update
  • fdfeb04318a0 Observe the pipe's AbortSignal through an abort algorithm
  • 7b7aa5d402a7 Pin that a pipe waits for an erroring destination's in-flight write
  • c61cc1a75ba0 Merge pull request #7430 from cloudflare/apeacock/jsrpc-call-retries
  • 46d157f449b6 [build] Increase link parallelism again
  • 1a059cdc6aec Close a native stream at the handoff of its data
  • 354a44cfdda9 Claim DO retry tokens after actor construction
  • 31ff41bf0feb [build] Update boringssl
  • 2854260cc733 Merge pull request #7501 from cloudflare/jasnell/ts-streams-pipe-dest-erroring-pin
  • 8f21ea80381b Merge pull request #7500 from cloudflare/jasnell/ts-streams-pipe-abort-algorithm
  • 84338b989877 Merge pull request #7497 from cloudflare/apeacock/actor-claim-after-construction
  • 1f6faa79bc3d - Introduces a new STW event spanUpdate to mirror spanOpen and spanClose. Currently only supports updating name and status but could be expanded to other properties if there is ever a need.
  • 911aada4e6c9 Merge pull request #7348 from cloudflare/jmorrell/add-span-status
  • c412de2a64e6 STOR-5615: Cap actor retry backoff and pin redirect semantics
  • bf35727557ae STOR-5615: Add configurable Durable Object retry counts
  • fbe504f36c34 STOR-5615: Cancel actor retries that outlast the retry timeout
  • 5b48ae2376d4 STOR-5615: Add configurable Durable Object retry timeouts
  • badef8b8dcf2 STOR-5615: Preserve retry policy on loopback namespaces
  • 7f87ae389ef4 STOR-5615: Apply retry policy to JSRPC calls
  • 275f7b2a47e9 Adopt kj::StickyFlag to simplify basic promise and fulfiller use.
  • bd1108c043da Update comments on teed branches and simplify native detach
  • 5d1832a7fc5c Release the pipe source when validation fails after locking (#7498)
  • 0838181ef67c Release 2026-09-25
  • bf5bcb4d83ab Merge pull request #7502 from cloudflare/jasnell/ts-streams-husk-state
  • b70547388c61 Lock a closed or errored native stream on tee()
  • 037e10ecfbf7 workflows: expose configured workflows on ctx.exports
  • acb3f35f9a43 workflows: document ctx.exports Workflows implementation
  • 46a94e8da4ec workflows: don't depend on argument evaluation order for namespace key
  • 6affb1537951 workflows: use Miniflare's key prefix for Workflow namespaces
  • 6508ecb7d251 workflows: keep isWorkflow with the other Durable bools
  • 0c8dbcfb6211 workflows: hold Workflow storage Workers by kj::Own
  • baf490a0b43b Merge pull request #7504 from cloudflare/jasnell/ts-streams-native-tee-lock
  • 0a3c5639d2b6 Validate a writable chunk's size only when it is enqueued
  • b1724c33d90e Merge pull request #7507 from cloudflare/jasnell/ts-streams-writable-late-size
  • 757419a73abd Sqlite: support adding specific error context to internal exceptions
  • 8cb7f9abfb58 Merge pull request #7383 from cloudflare/apeacock/STOR-5615-do-retry-policy-config
  • 6dec1565df77 STOR-5615: Align JSRPC retries with fetch around the output gate
  • f4ebbae65627 Merge pull request #7361 from cloudflare/workflows-ctx-exports-workerd
  • b9fb2374aef1 Merge pull request #7404 from cloudflare/jolio/adopt-kj-asy-23sm7r
  • dbc56cfb0e4e Merge pull request #7514 from cloudflare/jolio/sqlite-suppo-ufummb
  • 115e0b0e5809 Settle a TransformStream cancel from the writable's state
  • 5719a46af4be fix: handle exceptions thrown in TCP connect() handler
  • ae9db71bdab6 Refine promise resolution ticks to match standard/node
  • e1070b16d2e6 update capnp-cpp and use kj::StaticArrayPtr for static tables
  • 7a7ad836d784 Merge pull request #7522 from cloudflare/maizatskyi/2026-09-25-update-capnproto
  • 7019d97e049c Potential use after move: fix argument evaluation order
  • ff5defb046d0 Use after move: double moved traceContext.
  • f9d2ffabc14f Linting: reject more use-after-moves
  • e9f574d985f5 Use after move: use RemotePromise::releaseParts()
  • 53410c4cba65 Linting: narrow use-after-move macro exemptions
  • 599842e0e838 Linting: allow derived fields after base move
  • d21f84826734 [nfc] Import LLVM use-after-move analysis unchanged
  • 83da17e47f0a [nfc] Apply formatting to LLVM use-after-move analysis
  • 918def97132a [fix] Model KJ case loops as single-iteration control flow
  • 167d0486a472 Linting: cover coroutine moves in KJ cases
  • 336121a9d720 Linting: add UnwrappedArgs::apply()
  • 20228240e1ad Linting: consume unwrapped JSG arguments with apply()
  • 1c21cdb558aa Linting: move Sync-KV list prefix field directly
  • 58fc8abf092d Linting: extract worker config before capturing def
  • 50e5bf3f93ce Linting: treat KJ owning pointers as null after move
  • adc042fdfcf0 Linting: suppress last-recipient move in TailStreamWriter
  • 13aea4b62ebb Linting: suppress intentional moved-from test assertions
  • a745140dc854 Add jsg support for shared-ownership module sources
  • 15c5d5e3a423 Merge pull request #7509 from cloudflare/jasnell/ts-streams-transform-cancel-outcome
  • a5e123b6a5c6 Merge pull request #7513 from cloudflare/apeacock/STOR-5615-jsrpc-retry-policy
  • d76924cf2f3d Merge pull request #7523 from cloudflare/maizatskyi/2026-09-25-module-source-ownership-base
  • 1495a62b5d39 Release the transformer once a TransformStream finishes
  • 4d84c2c2a5f8 Merge pull request #7451 from cloudflare/jolio/linting-reje-yw7unu
  • 7b31a25ad25e Merge pull request #7510 from cloudflare/jasnell/ts-streams-transformer-retention
  • 41de4aeaa730 Add a consumption hook and batched byte enqueue for internal sources
  • 8976cb3e0862 Settle identity-stream writes once read; span reads; tee at the slowest
  • 7b86b5b67103 fix(types): describe Workers AI model reasoning controls
  • 70d3d28f7476 fix(types): add Qwen and Nemotron reasoning efforts
  • ec6b5780e40a fix(types): publish Nemotron native reasoning controls
  • 5398f442c2f6 fix(types): regenerate Workers AI reasoning types from production metadata
  • 856051dd0eb8 fix(types): match generated Gemma 4 class name and keep the original as an alias
  • 0238570afcc0 fix(types): make Workers AI reasoning types suggestions instead of restrictions
  • 3a0d1f59d183 fix(types): suggest no reasoning efforts for Kimi K2.7 Code
  • d4e722dcbffb fix(types): inline per-model Workers AI reasoning types
  • ac7298be9ac0 docs(types): point Workers AI reasoning types at their source of truth
  • 30ed8b445770 chore(types): regenerate snapshots with bazel
  • ebd585e5246a types: exact per-model Workers AI reasoning types
  • bf52ccf7e79d Merge pull request #7515 from cloudflare/jasnell/ts-streams-identity-write-settlement
  • 68d99dd1e200 Read detached and out-of-bounds DataView chunks as empty
  • e00e11ad3fc7 Merge pull request #7516 from cloudflare/jasnell/ts-streams-detached-dataview
  • da46ad950c54 Release 2026-09-26
  • 1481f440b0dc kj-rs: drop a KjOwn through kj::Own's own destructor
  • 1a709e54e6ad Make Bonk reviews reliable and context-aware
  • 8c23e9b39031 Make Bonk reviews precise
  • 1d3665aa7c08 Release 2026-09-27
  • 25ef062e9160 memory-cache: hoist SharedMemoryCache::Limits to MemoryCacheLimits
  • cb318b9d59e7 memory-cache: remove the MEMORY_CACHE_V2 autogate and the C++ implementation
  • a80233266ff8 memory-cache: make CacheValue a plain byte view
  • 8e7c42e0b0d3 memory-cache: drop the clock parameter from MemoryCacheProvider
  • 10a99ae1c576 memory-cache: fold MemoryCacheNamespace into MemoryCacheProvider
  • e4d0afe0ef09 memory-cache: expose test stats on MemoryCacheUse
  • 948fa207ff77 memory-cache: merge memory-cache-v2.c++ into memory-cache.c++
  • 7b7eb53a3ed5 Release 2026-09-28
  • 5d450132f6e3 Defer in-memory alarm task cancellation
  • 8c17a40c38f3 streams: keep tee branch source alive across async ops
  • 4d091cde6c74 Hold refs to TailStreamTarget in queued callbacks
  • 43c5dcf88099 jsg: look up wrappables through their cppgc shim
  • bf05b7e6c997 jsg: tighten wrapper identity checks when unwrapping
  • 500a6f4b3cba Move wrapper handle to shim
  • e5803288aef5 Honour the requested atomic cppgc sweeping
  • af4d571e9593 STOR-5615: Reserve actor call replay memory through LimitEnforcer
  • 3236e38b6637 STOR-5615: Count full replay memory for JSRPC calls
  • 8ede87f0d7f9 Add Artifacts repository read types
  • b37c987145e2 Merge pull request #7558 from cloudflare/apeacock/STOR-5615-replay-memory-budget
  • f30fcf93a0ee Remove the nodejs-url-rust autogate
  • d7a909deda84 Remove the nodejs-exceptions-rust autogate
  • e4de275bd32b Remove the container-tunnel-reuse autogate
  • 845398e48ea1 Remove the socket-rpc-transfer autogate
  • d099c3f21576 Remove the jsrpc-tracing autogate
  • 72ee7bf34464 Remove the durable-object-retries-fetch autogate
  • bf5bfc16a1f3 Remove the durable-object-retries-fetch-retry-requests autogate
  • 6cc4a3298dea Drop fully rolled-out autogates from the registry
  • 0f4b0f323feb Run Bonk from ask-bonk main
  • 7d20e0abd254 Refactor console method decoration for snapshotting (#6874)
  • a83bf8d8fd63 Add ML-KEM and ML-DSA WebCrypto support
  • 5d7700aad53a Merge pull request #6872 from thibmeu/cf/mlkem-mldsa-helpers
  • b5bf0663a840 update dependencies to latest version
  • 74f625b4e8ea Enable DO I/O task eviction protection on October 1
  • 71b349a8e87f Merge pull request #7563 from cloudflare/rinkle/RM-30088-enable-io-task-eviction-compat-date
  • 82b85cf9f6de Release 2026-09-29
  • bc75cc988c6c STOR-5615: Add the @retryable Durable Object decorator
  • 946ff26b028f STOR-5615: Pass @retryable to the retry-token claim
  • 8843f5935d1a Merge pull request #7521 from cloudflare/apeacock/STOR-5615-retryable-decorator
  • b869af0328a9 [build] Update to V8 15.5.35.7
  • 6c3ce9cbf927 Enable debug for v8's heap.cc
  • b886ea34a5b0 Merge pull request #7568 from cloudflare/harris/2026-09-28-update-v8-15.5
  • acaf55e29c2f [nfc] Clarify V8 compatibility audit requirements
  • 9d1290c15f1d Merge pull request #7571 from cloudflare/harris/2026-09-29-clarify-v8-compat-audits
  • 1cc4c585f1cd Centralize TraceContext construction
  • ab1b3926727b Merge pull request #7519 from leostera/lostera/artifacts-bindings
  • 1132cf4b1bd7 Update compat date for durable_object_io_tasks_prevent_eviction
  • 7530e49c41d8 Merge pull request #7564 from cloudflare/mar/tracing-prefactors
  • 9079625bd84a Merge pull request #7577 from cloudflare/rinkle/RM-30088-update-compact-date
  • 2d7bada2099c Add compatibility catalog introspection
  • be28acacdcf6 Merge upstream workerd main
  • 2cfc606c979d Restore host extension CLI support
  • 2bc1fe1ac15a Format worker loader tests
  • 87750f2bd04d Release 2026-09-30
  • 50226a61adde Revert "Update compat date for durable_object_io_tasks_prevent_eviction"
  • af468ba5fd95 Keep the Tokio I/O shim in the Rust binary
  • 3dd26f66e920 Merge remote-tracking branch 'upstream/main' into codex/r3-compatibility-catalog
  • cb26acc62e64 Merge pull request #7580 from cloudflare/rinkle/RM-30088-revert-compat-date-update
  • 15ef3a0ab4dd Merge remote-tracking branch 'upstream/main' into codex/r3-compatibility-catalog
  • 5771f22f348d Keep native KJ I/O out of standalone limits
  • e3bdb07f52af Fail formal builds on native KJ I/O edges
  • d99bc6b777e3 Fix spurious unhandled rejections from Durable Object fetch retries (#7584)
  • 6c3222ee561b Merge remote-tracking branch 'upstream/main' into codex/r3-compatibility-catalog
  • 5da4c7feaacf Publish formal binaries from one manual workflow
  • a266c0305e4c Remove inherited daily Semgrep schedule

SDK

  • Package: @open-compute/sdk@0.2.3; install with npm install @open-compute/sdk@0.2.3 and verify the published version at npm.
  • Pins: official cloudflare@7.2.0, Cloudflare OpenAPI revision 780de88d0324b007c907a1782259b1a0e5e87c7d, and Wrangler 4.143.0 compatibility fixtures.
  • Surface: generated clients continue to delegate every supported operation to the official SDK; the upstream refresh includes the current Worker, Version, Queue, R2, D1, AI Search, Vectorize, Workflow, and observability contracts qualified by this release.
  • Pairing: only an ocd and SDK with the same stable X.Y.Z are qualified together.

Fixed

  • Runtime-source and other platform-owned internal listeners authenticate the generation before reading request bodies; loopback reachability is not treated as authorization.
  • R2 provider qualification now exercises a standards-compliant multipart part size and accepts provider-defined SSE-C multipart ETags without weakening content verification.
  • AI provider qualification preserves useful sanitized diagnostics and receives the formally pinned Caddy input used by production builds.
  • Instance lifecycle control calls use aligned bounded timeouts, and orphan-recovery fixtures wait on deterministic process evidence.
  • Wrangler upstream classification, generated capability metadata, and documentation now agree on 4.143.0.
  • Release dry-run coverage runs in its owned local Docker harness, and qualification avoids duplicate work while preserving required checks.
  • Product documentation and architecture diagrams now describe multi-instance ownership, current egress semantics, supported products, and the formal runtime supply chain consistently.

Before you upgrade

  • No new platform SQLite migration is introduced by 0.2.3. Existing published migration bytes remain unchanged.
  • The tenant egress contract is intentionally broader than 0.2.2 documentation described. If your deployment requires public-only or destination-restricted outbound access, enforce that policy with the host firewall, network namespace, container, or VM before admitting tenant traffic.
  • Source builds must explicitly prepare workerd and Caddy from packages/runtime/workerd.lock.json and packages/runtime/caddy.lock.json before bun run build. Startup remains offline and never downloads or searches PATH for a runtime.
  • Compatibility dates and flags are accepted only when the pinned workerd build accepts them. Remove any operator-side assumption that open-compute exposes a smaller fixed historical allowlist.

Install or upgrade

An existing receipt-managed installation can upgrade directly after taking a backup:

ocd upgrade 0.2.3

For a new user-owned installation, download and review the installer, then pin this release:

curl -fsSL -o install.sh https://raw.githubusercontent.com/elliothux/open-compute/v0.2.3/scripts/install.sh
less install.sh
OPEN_COMPUTE_RELEASE_TAG=v0.2.3 sh install.sh
ocd setup --yes

Verify with ocd --version, ocd config check, ocd instances, ocd doctor, and ocd capabilities --json before admitting traffic.

Downloads

Host Asset
macOS on Apple silicon ocd-v0.2.3-darwin-arm64
Linux on ARM64 ocd-v0.2.3-linux-arm64
Linux on x86-64 ocd-v0.2.3-linux-x64

The release also contains release.json and SHA256SUMS. Every executable embeds the formally pinned workerd and Caddy payloads. Windows and Intel macOS remain source-build-only targets.

Security

There are no published security advisories specific to 0.2.3. Platform-owned internal listeners authenticate independently of source address. Tenant general outbound can reach host-routable IP destinations, including private, loopback, link-local, and metadata addresses; the operator must apply any required destination policy outside open-compute. Unix and abstract Unix sockets remain denied, and private Service Bindings continue to use pinned destinations, caller policy, and injected credentials.

Known limitations

  • open-compute does not provide per-Worker or per-instance CIDR or port isolation; use host networking controls when destination filtering is required.
  • AI Search public queries remain text-only. Image, file, and multimodal queries fail closed.
  • The single-machine deployment profile does not implement Cloudflare's managed multi-region control plane or workers.dev service.
  • Public Gateway qualification still requires routable TCP 443 and delegated UDP/TCP DNS on the deployment host.
  • The macOS document parser has no enforceable hard memory ceiling; concurrency, input/output, CPU, and timeout bounds remain active.
  • Code signing and macOS notarization are not included.

Verification

The frozen release source is qualified by the repository build, source-identity contract, formatting, Clippy, no-default-features, Rust 1.98 checks, metadata, dependency boundaries, at least 90% Rust line coverage, and one complete workspace Gate against the formally pinned workerd. The tag workflow independently runs coverage, the macOS workspace Gate, the controlled Linux egress fixture, and three native package jobs. It publishes the paired npm SDK and exposes the GitHub Release only after all required jobs succeed and the five downloaded release assets match their manifest and checksums.

Full changelog

Thanks

Thanks to @tossp for reporting the R2 multipart preflight incompatibility (#130) and the dedicated /v1/rerank protocol gap (#131), both fixed in this release.