Repository navigation
open-compute 0.2.3
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/rerankprovider 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
Networkcapability 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 portable7c183a8669e9Document coroutine cleanup patternsae8979d54141Transform a parked TransformStream write after one backpressure wait8370bfb588f7Merge pull request #7412 from cloudflare/jasnell/ts-streams-transform-write-stall1ed4b65ccdf8Python: Hot fix for stack switching gc crash (upstream pyodide#6466) (#7422)c7b5cdb96ec8Split actor retry exhaustion outcomes06f6bb3c3cdaIncrease actor retry backoff973c10963095Add Analytics SQL binding types (#7396)b7add5519b85Merge pull request #7414 from cloudflare/sol/actor-retry-policy266d066e8bd1Merge pull request #7403 from cloudflare/jolio/document-cor-ocm4st8e4d15cdbcf5[nfc] Drop unused variablesc0c369160419[nfc] Fix compiler warnings based on KJ_HEADER_WARNINGSb93fa71f0b14[build] Re-enable bazel sandboxing on macOSb72c41569c3eimplement RPC support for inbound UDP connect() event85928d5126f8support UDP events in workerd capnp server18de5f25ba99set EVENT_TYPE back to 1426edffb8c322Error both halves of a transform pair from the Node.js interop hooke7b231c6dd72Release 2026-09-19e77b962e586eDrop the interopErrorHook when appropriate, fix some nits16a7913467ddMerge pull request #7417 from cloudflare/jasnell/ts-streams-transform-error-propagation6f6423754c07Drop what a queued stream enqueues once every consumer is collectedb77563644f6eAddress review feedback on streams changes552e0d9fb567Merge pull request #7421 from cloudflare/jasnell/ts-streams-queue-after-no-consumer90faec3319d8Release 2026-09-2013fd9a8604dbRelease 2026-09-21b2ac12b35a81Add a bazel option to disable python prebuilt snapshote5c685407347Merge pull request #7429 from cloudflare/gyeongjae/disable-snapshot9e334ad92b68Let TestFixture construct an actor class3056c0d6936cSTOR-5489: Claim Durable Object RPC calls before dispatch0e32199bf473STOR-5489: Attach retry metadata to Durable Object RPC calls3ea9117c64c9Merge pull request #7347 from cloudflare/apeacock/jsrpc-retry-claims844b10841a15Use Promise-returning synthetic module callbacks16c681dac93fSilence unused JSG template warnings7ce4d6d42748Keep the Fast API test on TurboFaneb076b3442b1Deflake connect-handler tests8e83bcbb51a1Merge pull request #7446 from cloudflare/erikcorry/deflake-connect-handlerf7d869a9a1b9Use 2 isolates for tests to exercise cross-isolate (#7447)18d3f94faa27Merge pull request #7433 from cloudflare/trubini/udp_workers_rpcea2aad5b2a1cCopy body bytes out as they arrive and cancel the source when consumption failsf7b94c605801Refuse a declared length the memory limit cannot hold before readingf3401e54d88bAccept SharedArrayBuffer-backed views in body consumptionc896040bc0a0Pin body assembly of a chunk wider than a collection block540e88fe7c12Merge pull request #7416 from cloudflare/harris/2026-09-17-v8-15.5-compatibilitye1d1d7e50198[build] Update to LLVM 22f44359f2f99a[build] Fix libc++/libunwind package namesd97bb1f730b4[build] Silence clang-22 warnings in 3rd party code5adb86cba926Merge pull request #7424 from cloudflare/jasnell/ts-streams-body-consumption-oomebac9b83d0c3Buffer the compression stage's output in blocks released as they are pulled8d99027b9569Deliver the compression streams' output to the readable in bounded pieces1c246981e264Use weak self captures for refcounted continuationscc10f5928182Queue the compression streams' output in bounded pieces per writeea50171cdd4bMake snapshotContainer options optional (#7453)8d4cbe664916build: instrument Rust under --config=asandb31f1d0daecbuild: enable UBSan in --config=asanc13a060e3cbbFix the UBSan reports from the asan CI lane92069bfbb93bbuild: let Rust crates live beside the C++ they belong to54de095daa62Stop the compression drain when its enqueue tears the pair down3b946b9acc3aRemove the C++ I/O backend (--//:io_backend=cxx)d1cee9e1cc2cImplement proper js rpc stream cancel propagatione464148c744dMerge pull request #7425 from cloudflare/jasnell/ts-streams-decompression-delivery761847b67636Release 2026-09-22c22e7ae3b5e2[ci] Fix automated deps update1c0ddb76a1bcAdd a per-attempt observer for outgoing actor RPC calls9532cb4d93c2STOR-5489: Observe Durable Object RPC call attemptscb01bb63d94fMerge pull request #7346 from cloudflare/apeacock/jsrpc-call-observation93280aa0d7c2STOR-5489: Measure Durable Object RPC replay memorye3a857711ea7r2-rpc.c++: Copy put bodies out of the sandbox for MPK3173ee7bba16Merge pull request #7408 from cloudflare/apeacock/jsrpc-replay-memory-observation1b2ece40cbd1update dependencies to latest version774bf15c40e9Walk the queued stream's cursors by index and skip the pinned cursor's deref52ea4cfc840cMerge pull request #7303 from cloudflare/harris/2026-09-10-portable-skill-references0ed2e1ef961dAddress cursor update review feedback6c77ca762533Merge pull request #7298 from cloudflare/jasnell/js-rpc-streams-cancelationb4ee5bbed38dMerge pull request #7426 from cloudflare/jasnell/ts-streams-cursor-walk5c7074765495[build] Apply formatters to custom clang-tidy checksfcc475a13c21Settle the head read first when respond() leaves a remainder0b5ed149cbc3Linting: import LLVM coroutine-hostile-raii checkae37de62cdb8Linting: reformat LLVM upstream coroutine-hostile-raii check2aa070fe163dLinting: improve coroutine-hostile-raii test to check declaration nodes too880f3cbf7a48Linting(coroutine-hostile-raii): add support for co_yield AllowedAwaitables3a7c0c2da4b0Merge pull request #7431 from cloudflare/jolio/linting-impr-mjvxsi2ff63bad390cAccept a null source in MessageEventInit7d9d512c96e5Preserve VFS exceptions during SQLite open48e0c97b0364Pin where closed settles relative to the below-min tail read24e18bcdda4fCorrect readable-byte ledger #19: the unfilled BYOB read settles on both sides8a969e7ec0ccMerge pull request #7465 from cloudflare/jasnell/ts-streams-respond-settle-orderd977442d7189Return an empty view from read(view) on a cancelled byte streamfcb57db83a17Match upstream testharness semantics in WPT assert_object_equalsbd3e6e0e27acEnumerate a primitive expected value in WPT assert_object_equals119c71572526Merge pull request #7467 from cloudflare/jasnell/ts-streams-closed-after-taildab74a440225Merge pull request #7468 from cloudflare/jasnell/ts-streams-read-view-cancelled2c5cd0a6d403Deliver whole elements from native BYOB reads with multi-byte views2d6fc5717647[tsan] increase tsan history91e4d4e2bf83Merge pull request #7469 from cloudflare/jasnell/ts-streams-native-byob-elements3e937ba26f07Allow tee() of a native body with an abandoned read in flight4bce6737323aRelease 2026-09-2386d612ef7d90Merge pull request #7471 from cloudflare/jasnell/ts-streams-native-tee-in-flight50c66ec0abf6Use fresh isolate groups when available.e34b9662c7cdPull local system images before create3f4f4eddc923Merge pull request #7461 from ghostwriternr/fix/local-system-image-pull9a6bd998223bMerge pull request #7445 from cloudflare/erikcorry/multi-groupd81212bae67aSTOR-5489: Account for RPC serializer capacity9ae136fa0b9cSTOR-5489: Format serializer capacity changes9be8b3683548Merge pull request #7151 from cloudflare/jolio/preserve-vfs-r2y25y40507849dc4bfix: avoid initializing the UDP connect tracer twicedb6465f24cddMerge pull request #7450 from Phanatic/aig-web-searchd93eab6d391fMerge pull request #7487 from cloudflare/trubini/fix_udp_connect_tracer3b647746ae45Merge pull request #7481 from cloudflare/maizatskyi/2026-09-22-tsan-history071cd12005c8capnproto updatec3f0074f4331Merge pull request #7470 from danielmlr/fix/message-event-init-null-source62935d76771b[o11y] Addundefinedto tailStream return typescb62c8989054Merge pull request #7484 from cloudflare/apeacock/jsrpc-retry-buffer-capacityb57a78af8b44Merge pull request #7472 from cloudflare/maizatskyi/2026-09-22-update-capnprotoc889d1dd2322Merge pull request #7434 from cloudflare/jolio/use-weak-sel-6oxbqza3d517dc0e1bError a tee branch or detached byte stream on a fractional fill at close71b390c76ed3Place readableStreamErrorBranch ahead of the tee dispatch comment9ae1f7fb12caAdditional refinement on the ts streams tee error handling9022f4dc4548Forward web search RPC params13489ec2b215Format web search mock65e5eb999202Use a class-based AI RPC mockd5856b89723fOne additional node streams test3447953857c6Merge pull request #7492 from cloudflare/websearch-forward-account-iddafe64028652Merge pull request #7473 from cloudflare/jasnell/ts-streams-branch-error-callbackacec568cd396Transfer byte-stream buffers to fixed lengthfcf94867d5f3Skip building an unobservable XThreadWaitList rejection78d4a26acbe6Merge pull request #7474 from cloudflare/jasnell/ts-streams-resizable-buffersd02b8e4e643aAdd Durable Object I/O task eviction compat flag718f53105ec9Add actor wait-until task lifetime tracking3dbc959b4d47Pin async iterator interleavings that follow WebIDLcb14d558d712Merge pull request #7475 from cloudflare/jasnell/ts-streams-async-iterator-order1b9b6ea02336Increase the SQLite row limit to 8 MiB733da15eda1cDocument and pin slowest-branch tee backpressure6ade48f76daaRelease 2026-09-24085a080322dbTake queued bytes whole on auto-allocate default reads28a0e03930fdkj-rs-io: "loopback:" addresses, used byworkerd test578972cf1c3akj-rs-io: expose the file watcher and error text to Rust callersfdc4611e6d85Move the schema-file classes out of workerd.c++3b71d19db312Rename workerd.c++ to cli-main.c++e03943a61167Make workerd's entry point Rust91437b139233Update the docs and comments that name the CLI's files556b36c0f69fCollect coverage from tests that run the Rust workerd binary115580d5af0dMerge pull request #7476 from cloudflare/jasnell/ts-streams-tee-slowest-backpressure920e9871ecf2bump reviewer to opus 5.547d665f79cc8Merge pull request #7477 from cloudflare/jasnell/ts-streams-auto-allocate-queued-reads8942c412c63cMerge pull request #7493 from cloudflare/jhoward/increase-sqlite-row-limit90c842c43ccfKeep a byobRequest held across tee() workingb1c639d1fd2bMerge pull request #7478 from cloudflare/jasnell/ts-streams-held-byob-request-across-tee1ff0fd78e400Queue the chunk before filling reads with released bytes6b39c3395974Merge pull request #7479 from cloudflare/jasnell/ts-streams-released-bytes-with-chunk48ef4984b370Merge pull request #7301 from cloudflare/rinkle/RM-30088-workerd-io-task-evictiondd58d5b952a0add some deserialization diagnostics (#7486)38cdda943586Only run internal build for necessary pathsf6e4947250f0STOR-5489: Cover actor retry ambiguityd0615a138dc0STOR-5489: Handle committed actor retry failures20e7df49ed74STOR-5489: Retry Durable Object RPC callsbd8b075cb810STOR-5489: Retry Durable Object RPC property reads98e502f88a4bMerge pull request #7463 from cloudflare/ketan/interal-build-updatefdfeb04318a0Observe the pipe's AbortSignal through an abort algorithm7b7aa5d402a7Pin that a pipe waits for an erroring destination's in-flight writec61cc1a75ba0Merge pull request #7430 from cloudflare/apeacock/jsrpc-call-retries46d157f449b6[build] Increase link parallelism again1a059cdc6aecClose a native stream at the handoff of its data354a44cfdda9Claim DO retry tokens after actor construction31ff41bf0feb[build] Update boringssl2854260cc733Merge pull request #7501 from cloudflare/jasnell/ts-streams-pipe-dest-erroring-pin8f21ea80381bMerge pull request #7500 from cloudflare/jasnell/ts-streams-pipe-abort-algorithm84338b989877Merge pull request #7497 from cloudflare/apeacock/actor-claim-after-construction1f6faa79bc3d- Introduces a new STW eventspanUpdateto mirrorspanOpenandspanClose. Currently only supports updatingnameandstatusbut could be expanded to other properties if there is ever a need.911aada4e6c9Merge pull request #7348 from cloudflare/jmorrell/add-span-statusc412de2a64e6STOR-5615: Cap actor retry backoff and pin redirect semanticsbf35727557aeSTOR-5615: Add configurable Durable Object retry countsfbe504f36c34STOR-5615: Cancel actor retries that outlast the retry timeout5b48ae2376d4STOR-5615: Add configurable Durable Object retry timeoutsbadef8b8dcf2STOR-5615: Preserve retry policy on loopback namespaces7f87ae389ef4STOR-5615: Apply retry policy to JSRPC calls275f7b2a47e9Adopt kj::StickyFlag to simplify basic promise and fulfiller use.bd1108c043daUpdate comments on teed branches and simplify native detach5d1832a7fc5cRelease the pipe source when validation fails after locking (#7498)0838181ef67cRelease 2026-09-25bf5bcb4d83abMerge pull request #7502 from cloudflare/jasnell/ts-streams-husk-stateb70547388c61Lock a closed or errored native stream on tee()037e10ecfbf7workflows: expose configured workflows on ctx.exportsacb3f35f9a43workflows: document ctx.exports Workflows implementation46a94e8da4ecworkflows: don't depend on argument evaluation order for namespace key6affb1537951workflows: use Miniflare's key prefix for Workflow namespaces6508ecb7d251workflows: keep isWorkflow with the other Durable bools0c8dbcfb6211workflows: hold Workflow storage Workers by kj::Ownbaf490a0b43bMerge pull request #7504 from cloudflare/jasnell/ts-streams-native-tee-lock0a3c5639d2b6Validate a writable chunk's size only when it is enqueuedb1724c33d90eMerge pull request #7507 from cloudflare/jasnell/ts-streams-writable-late-size757419a73abdSqlite: support adding specific error context to internal exceptions8cb7f9abfb58Merge pull request #7383 from cloudflare/apeacock/STOR-5615-do-retry-policy-config6dec1565df77STOR-5615: Align JSRPC retries with fetch around the output gatef4ebbae65627Merge pull request #7361 from cloudflare/workflows-ctx-exports-workerdb9fb2374aef1Merge pull request #7404 from cloudflare/jolio/adopt-kj-asy-23sm7rdbc56cfb0e4eMerge pull request #7514 from cloudflare/jolio/sqlite-suppo-ufummb115e0b0e5809Settle a TransformStream cancel from the writable's state5719a46af4befix: handle exceptions thrown in TCP connect() handlerae9db71bdab6Refine promise resolution ticks to match standard/nodee1070b16d2e6update capnp-cpp and use kj::StaticArrayPtr for static tables7a7ad836d784Merge pull request #7522 from cloudflare/maizatskyi/2026-09-25-update-capnproto7019d97e049cPotential use after move: fix argument evaluation orderff5defb046d0Use after move: double moved traceContext.f9d2ffabc14fLinting: reject more use-after-movese9f574d985f5Use after move: use RemotePromise::releaseParts()53410c4cba65Linting: narrow use-after-move macro exemptions599842e0e838Linting: allow derived fields after base moved21f84826734[nfc] Import LLVM use-after-move analysis unchanged83da17e47f0a[nfc] Apply formatting to LLVM use-after-move analysis918def97132a[fix] Model KJ case loops as single-iteration control flow167d0486a472Linting: cover coroutine moves in KJ cases336121a9d720Linting: add UnwrappedArgs::apply()20228240e1adLinting: consume unwrapped JSG arguments with apply()1c21cdb558aaLinting: move Sync-KV list prefix field directly58fc8abf092dLinting: extract worker config before capturing def50e5bf3f93ceLinting: treat KJ owning pointers as null after moveadc042fdfcf0Linting: suppress last-recipient move in TailStreamWriter13aea4b62ebbLinting: suppress intentional moved-from test assertionsa745140dc854Add jsg support for shared-ownership module sources15c5d5e3a423Merge pull request #7509 from cloudflare/jasnell/ts-streams-transform-cancel-outcomea5e123b6a5c6Merge pull request #7513 from cloudflare/apeacock/STOR-5615-jsrpc-retry-policyd76924cf2f3dMerge pull request #7523 from cloudflare/maizatskyi/2026-09-25-module-source-ownership-base1495a62b5d39Release the transformer once a TransformStream finishes4d84c2c2a5f8Merge pull request #7451 from cloudflare/jolio/linting-reje-yw7unu7b31a25ad25eMerge pull request #7510 from cloudflare/jasnell/ts-streams-transformer-retention41de4aeaa730Add a consumption hook and batched byte enqueue for internal sources8976cb3e0862Settle identity-stream writes once read; span reads; tee at the slowest7b86b5b67103fix(types): describe Workers AI model reasoning controls70d3d28f7476fix(types): add Qwen and Nemotron reasoning effortsec6b5780e40afix(types): publish Nemotron native reasoning controls5398f442c2f6fix(types): regenerate Workers AI reasoning types from production metadata856051dd0eb8fix(types): match generated Gemma 4 class name and keep the original as an alias0238570afcc0fix(types): make Workers AI reasoning types suggestions instead of restrictions3a0d1f59d183fix(types): suggest no reasoning efforts for Kimi K2.7 Coded4e722dcbffbfix(types): inline per-model Workers AI reasoning typesac7298be9ac0docs(types): point Workers AI reasoning types at their source of truth30ed8b445770chore(types): regenerate snapshots with bazelebd585e5246atypes: exact per-model Workers AI reasoning typesbf52ccf7e79dMerge pull request #7515 from cloudflare/jasnell/ts-streams-identity-write-settlement68d99dd1e200Read detached and out-of-bounds DataView chunks as emptye00e11ad3fc7Merge pull request #7516 from cloudflare/jasnell/ts-streams-detached-dataviewda46ad950c54Release 2026-09-261481f440b0dckj-rs: drop a KjOwn through kj::Own's own destructor1a709e54e6adMake Bonk reviews reliable and context-aware8c23e9b39031Make Bonk reviews precise1d3665aa7c08Release 2026-09-2725ef062e9160memory-cache: hoist SharedMemoryCache::Limits to MemoryCacheLimitscb318b9d59e7memory-cache: remove the MEMORY_CACHE_V2 autogate and the C++ implementationa80233266ff8memory-cache: make CacheValue a plain byte view8e7c42e0b0d3memory-cache: drop the clock parameter from MemoryCacheProvider10a99ae1c576memory-cache: fold MemoryCacheNamespace into MemoryCacheProvidere4d0afe0ef09memory-cache: expose test stats on MemoryCacheUse948fa207ff77memory-cache: merge memory-cache-v2.c++ into memory-cache.c++7b7eb53a3ed5Release 2026-09-285d450132f6e3Defer in-memory alarm task cancellation8c17a40c38f3streams: keep tee branch source alive across async ops4d091cde6c74Hold refs to TailStreamTarget in queued callbacks43c5dcf88099jsg: look up wrappables through their cppgc shimbf05b7e6c997jsg: tighten wrapper identity checks when unwrapping500a6f4b3cbaMove wrapper handle to shime5803288aef5Honour the requested atomic cppgc sweepingaf4d571e9593STOR-5615: Reserve actor call replay memory through LimitEnforcer3236e38b6637STOR-5615: Count full replay memory for JSRPC calls8ede87f0d7f9Add Artifacts repository read typesb37c987145e2Merge pull request #7558 from cloudflare/apeacock/STOR-5615-replay-memory-budgetf30fcf93a0eeRemove the nodejs-url-rust autogated7a909deda84Remove the nodejs-exceptions-rust autogatee4de275bd32bRemove the container-tunnel-reuse autogate845398e48ea1Remove the socket-rpc-transfer autogated099c3f21576Remove the jsrpc-tracing autogate72ee7bf34464Remove the durable-object-retries-fetch autogatebf5bfc16a1f3Remove the durable-object-retries-fetch-retry-requests autogate6cc4a3298deaDrop fully rolled-out autogates from the registry0f4b0f323febRun Bonk from ask-bonk main7d20e0abd254Refactor console method decoration for snapshotting (#6874)a83bf8d8fd63Add ML-KEM and ML-DSA WebCrypto support5d7700aad53aMerge pull request #6872 from thibmeu/cf/mlkem-mldsa-helpersb5bf0663a840update dependencies to latest version74f625b4e8eaEnable DO I/O task eviction protection on October 171b349a8e87fMerge pull request #7563 from cloudflare/rinkle/RM-30088-enable-io-task-eviction-compat-date82b85cf9f6deRelease 2026-09-29bc75cc988c6cSTOR-5615: Add the@retryableDurable Object decorator946ff26b028fSTOR-5615: Pass@retryableto the retry-token claim8843f5935d1aMerge pull request #7521 from cloudflare/apeacock/STOR-5615-retryable-decoratorb869af0328a9[build] Update to V8 15.5.35.76c3ce9cbf927Enable debug for v8's heap.ccb886ea34a5b0Merge pull request #7568 from cloudflare/harris/2026-09-28-update-v8-15.5acaf55e29c2f[nfc] Clarify V8 compatibility audit requirements9d1290c15f1dMerge pull request #7571 from cloudflare/harris/2026-09-29-clarify-v8-compat-audits1cc4c585f1cdCentralize TraceContext constructionab1b3926727bMerge pull request #7519 from leostera/lostera/artifacts-bindings1132cf4b1bd7Update compat date fordurable_object_io_tasks_prevent_eviction7530e49c41d8Merge pull request #7564 from cloudflare/mar/tracing-prefactors9079625bd84aMerge pull request #7577 from cloudflare/rinkle/RM-30088-update-compact-date2d7bada2099cAdd compatibility catalog introspectionbe28acacdcf6Merge upstream workerd main2cfc606c979dRestore host extension CLI support2bc1fe1ac15aFormat worker loader tests87750f2bd04dRelease 2026-09-3050226a61addeRevert "Update compat date fordurable_object_io_tasks_prevent_eviction"af468ba5fd95Keep the Tokio I/O shim in the Rust binary3dd26f66e920Merge remote-tracking branch 'upstream/main' into codex/r3-compatibility-catalogcb26acc62e64Merge pull request #7580 from cloudflare/rinkle/RM-30088-revert-compat-date-update15ef3a0ab4ddMerge remote-tracking branch 'upstream/main' into codex/r3-compatibility-catalog5771f22f348dKeep native KJ I/O out of standalone limitse3bdb07f52afFail formal builds on native KJ I/O edgesd99bc6b777e3Fix spurious unhandled rejections from Durable Object fetch retries (#7584)6c3222ee561bMerge remote-tracking branch 'upstream/main' into codex/r3-compatibility-catalog5da4c7feaacfPublish formal binaries from one manual workflowa266c0305e4cRemove inherited daily Semgrep schedule
SDK
- Package:
@open-compute/sdk@0.2.3; install withnpm install @open-compute/sdk@0.2.3and verify the published version at npm. - Pins: official
cloudflare@7.2.0, Cloudflare OpenAPI revision780de88d0324b007c907a1782259b1a0e5e87c7d, and Wrangler4.143.0compatibility 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
ocdand SDK with the same stableX.Y.Zare 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.jsonandpackages/runtime/caddy.lock.jsonbeforebun run build. Startup remains offline and never downloads or searchesPATHfor 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.3For 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 --yesVerify 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.devservice. - 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.
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.