Update dependency effect to v4.0.0-beta.103 - #11
Merged
Conversation
renovate
Bot
force-pushed
the
renovate/effect-4.x
branch
from
August 10, 2026 02:49
fc4208e to
3875ee2
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
4.0.0-beta.102→4.0.0-beta.103Release Notes
Effect-TS/effect (effect)
v4.0.0-beta.103Compare Source
Minor Changes
#6793
b2f95a9Thanks @tim-smart! - AddSemaphore.takeIfAvailablefor non-blocking manual permit acquisition.#6693
aeba0c8Thanks @lloydrichards! - Expose object-shaped Toolkit success schemas as MCP tool output schemas.#6807
d0f1a22Thanks @alecbuffi! - Separate wall-clock timestamps from monotonic elapsed time.Clock.Clocknow requiresmonotonicTimeNanosUnsafe()andmonotonicTimeNanosfor measuring elapsed time. CustomClockimplementations must provide both members. The live clock'scurrentTimeNanosnow re-anchors its high-resolution Unix wall-clock timestamp when it drifts fromDate.now(), whileEffect.timed, duration metric tracking, andSink.withDurationuse monotonic time so wall-clock corrections do not distort elapsed durations.Patch Changes
#6697
e56cd8fThanks @schickling-assistant! - Add a configurable filter for HTTP client request and response header span attributes.#6883
f77c120Thanks @gcanti! - Add support for converting JSON Schema documents to Draft-04, preserve literal$refvalues,$refsibling constraints,not,readOnly, andwriteOnlyin Draft-07 conversions, correct the Draft-07 meta-schema URI, and prevent OpenAPI component-key collisions during conversion.#6564
04fd44aThanks @AVtheking! - Run shared-table SQL persistence expiration cleanup in indexed, bounded background batches.#6911
b74333dThanks @fubhy! - Update existingHashRingnodes when adding a value with the same primary key.#6909
1c40b28Thanks @AlfGoto! - AddDateTime.toEpochSecondsandDateTime.fromEpochSecondsfor converting date-time values to and from Unix epoch seconds.#6693
aeba0c8Thanks @lloydrichards! - MCP tool handler defects now return a stable internal error without exposing defect details.#6874
b3901d2Thanks @fubhy! - FixEqual.equalsandHash.hashto handle invalid dates andDataViewvalues without throwing.#6869
4a0984aThanks @fubhy! - Fix SQL-backed PersistencegetManyto preserve duplicate key positions.#6868
fffd88bThanks @fubhy! - Ensure clearing an empty Redis-backed persistence store succeeds.#6903
f3f6c1eThanks @fubhy! - Preserve equals signs in inline CLI option values after the first separator.#6876
ef07642Thanks @fubhy! - FixSink.reduceWhileArrayapplying its reducer more than once per input array.#6802
f1bc827Thanks @tim-smart! - Cap incomplete RPC frames buffered by the NDJSON and MessagePack streaming decoders, and close socket transports when the limit is exceeded.#6693
aeba0c8Thanks @lloydrichards! - RPC servers now suppress responses after a client cancels an in-flight request.#6723
081f4d8Thanks @tim-smart! - add platform literal to HttpPlatform#6788
5287b24Thanks @gcanti! - Refine theConfigProviderinterface so lookup absence usesundefinedandpath transformation is provider behavior.
ConfigProvider.loadand the lookup function accepted byConfigProvider.makenow returnNode | undefined. Useundefinedwhen a pathdoes not exist and return the
Nodedirectly when it does.ConfigProvidernow exposesmapInputas a capability. The exportedConfigProvider.mapInputcombinator delegates to it, preserving transformationorder and composition through
orElsewithout requiring providerrepresentation state.
#6863
13d31cfThanks @fubhy! - Decode percent-encoded OTLP environment header values.#6781
acee269Thanks @gcanti! - Deduplicate equivalent fallback definitions when compiling JSON Schema, and reconstruct only definitions reachable from multi-document roots.Remove
SchemaMultiDocumentandfromSchemaMultiDocument; multi-document import and revival now return the ordered root schemas directly.Stop the OpenAPI generator from emitting component schemas that are not reachable from a generated root.
#6717
31170c1Thanks @IMax153! - Document thatCommandOptions.extendEnvdefaults tofalseand that providingenvwithout enabling it replaces the inherited child environment.#6657
205ebc7Thanks @tim-smart! - Use cancellable microtasks when dispatching yielded work from synchronous Effect runs.#6661
ed0ebf8Thanks @tim-smart! - Fix hydrated atoms withAtom.withReactivityto refresh after reactive mutations.#6665
a3fd084Thanks @tim-smart! - FixHttpRouter.toWebHandlercontext inference for services provided by the application layer.#6681
ee29ddfThanks @tim-smart! - Add Web Stream interoperability forChannelandSink, plus byte limiting andArrayBuffercollection forStream.#6730
6086309Thanks @tim-smart! - Support replaying initial WebSocket messages and normalizeArrayBufferframes toUint8Array.#6763
4a57af2Thanks @tim-smart! - Validate cookie names, domains, and paths before constructing or serializing cookies.#6771
660875bThanks @tim-smart! - Strip credential headers on cross-origin HTTP redirects and align redirected request methods with fetch.#6777
8e7c706Thanks @tim-smart! - Bound pending SSE decoder state with a configurable maximum event size.#6772
5f63adbThanks @tim-smart! - Reject empty,.and..keys in file-backed key-value stores.#6773
053bc42Thanks @tim-smart! - Escape terminal control characters in unstable CLI error output.#6898
c0a1534Thanks @tim-smart! - Add HTTP response compression support. Node.js, Bun, and Deno use asynchronousnode:zlibone-shot compression for byte-array bodies, preserving an exactContent-Length; stream and raw bodies remain streaming transforms.#6859
f1e3a37Thanks @fubhy! - FixString.snakeToCamelandString.snakeToPascalto return an empty string for empty input.#6746
cedb01aThanks @fubhy! - Prefer explicit OTLP resource configuration over environment configuration.#6677
1747440Thanks @tim-smart! - Expose runtime schemas for AI prompt parts and message-specific part unions.#6693
aeba0c8Thanks @lloydrichards! - MCP servers now advertise logging and honor each client's selected log level when sending log notifications.#6693
aeba0c8Thanks @lloydrichards! - Preserve MCP sampling request preferences and response content.#6878
b4f1ee2Thanks @fubhy! - Fix Array index operations handlingNaNand fractional indexes.#6751
a4757f1Thanks @tim-smart! - Fix Atom dependency tracking and re-entrant invalidation during batch rebuilds.#6870
cd122b9Thanks @fubhy! - EnsureBigInt.gcdandBigInt.lcmreturn non-negative values and handle zero operands inBigInt.lcm.#6844
5de588bThanks @fubhy! - Prevent an interrupted cache lookup from removing a newer value written withCache.set.#6879
3895b9cThanks @fubhy! - Preserve failure annotations when mapping errors withCause.map.#6820
89ce5f3Thanks @fubhy! - FixChannelSchema.decodeUnknownto accept unknown input chunks while keepingChannelSchema.decodetyped to the schema's encoded input.#6899
985de09Thanks @fubhy! - EnsureChunk.takeandChunk.dropproduce valid chunks for fractional counts.#6579
9800e3aThanks @marbemac! - Scope cluster reply serialization failures and peer-delivered defects to their own request instead of the whole runner connection#6800
4dc35f6Thanks @tim-smart! - Fix persisted cluster stream recovery when SQL drivers return a null reply kind.#6814
e8eb62bThanks @gcanti! - Preserve provider input evidence whenConfig.orElserecovers a configuration failure.#6873
ecd9993Thanks @fubhy! - Propagate theFiberSet.runtimeinterruption option when registering managed fibers.#6872
5ab9c08Thanks @fubhy! - FixFormatter.formathandling of shared references and ensureFormatter.formatJsonalways returns valid JSON.#6867
f5cf965Thanks @fubhy! - Remove stalecontent-lengthheaders when replacing an HTTP client request body with one of unknown length.#6924
a94cbedThanks @fubhy! - IgnoreuniqueItemswhen set tofalsewhile importing JSON Schema documents.#6871
9160ad7Thanks @fubhy! - FixLayerMappreload options so configured entries are acquired during construction.#6693
aeba0c8Thanks @lloydrichards! - MCP completion handlers now receive resolved argument context, and completion responses are limited to one hundred values.#6693
aeba0c8Thanks @lloydrichards! - MCP servers now return protocol errors for invalid tool, prompt, completion, resource, and logging requests.#6901
52494beThanks @fubhy! - Prevent distinct metric attribute sets from sharing registry state.#6822
5441c8eThanks @fubhy! - FixMetric.isMetricto recognize metrics using their current runtime brand.#6821
c9b56abThanks @fubhy! - FixMetric.linearBoundariesto space boundaries by the configured width.#6847
8ef7257Thanks @fubhy! - FixMutableList.prependon empty lists and handle non-positivetoArrayNbounds.#6865
1519406Thanks @fubhy! - FixOtlpResourceto decode percent-encoded environment attributes and preserve bigint precision.#6805
9716990Thanks @tim-smart! - Prevent replay-enabled PubSubs from retaining values beyond each subscription's replay window.#6711
733f75bThanks @andrskr! - Preserve serialization and retention metadata on reactiveAtomRpcandAtomHttpApiqueries.#6855
48155c8Thanks @fubhy! - FixSchedule.duringto recur until the configured duration has elapsed.#6712
951d06bThanks @gcanti! - MakeSchema.isPatterndeterministic for regular expressions with global or sticky flags.#6782
d767b65Thanks @gcanti! - SchemaRepresentation: generate references from encoded AST identity, suffix colliding identifiers instead of throwing, and preserve sharing across property-key context. This avoids false-positive duplicate identifier errors while keeping referentially distinct schemas addressable; generated fallback definitions now use the clearerEncodedsuffix.#6704
5d52d9dThanks @gcanti! - Fix Union candidate selection for recovering middleware and suspended members.#6848
f4151e1Thanks @fubhy! - Keep the currentScopedRefresource alive when acquiring its replacement fails.#6910
e02fbb6Thanks @z4p5a9! - FixSemaphore.withPermitsleaking permits when interrupted between acquiring them and installing their release.#6877
724ce09Thanks @tim-smart! - FixStream.aggregateWithinandStream.groupedWithinretaining fiber continuations on every schedule tick while upstream is idle.#6889
dbe91f6Thanks @tim-smart! - FixStream.withExecutionPlanretry limits resetting after partial stream emissions.#6823
4c008d2Thanks @fubhy! - Fix data-first dispatch forStream.mapAccumArrayEffect.#6900
b650832Thanks @fubhy! - EnsureStream.rangeemits the full range when the chunk size is zero.#6849
b46c92fThanks @fubhy! - FixSubscriptionRef.getAndUpdateSometo return the current value when no update is selected.#6808
5335797Thanks @fubhy! - FixSubscriptionRef.getAndUpdateEffectto execute the effectful update.#6862
4b3460dThanks @fubhy! - FixTrie.longestPrefixOfreturning a valued sibling that does not match the input key.#6856
6301fd7Thanks @fubhy! - FixTrieto preserve entries whose value isundefined.#6850
aebc5c6Thanks @fubhy! - FixTxPubSub.publishAlldropping values from one-shot iterables when a transaction retries.#6851
52b2d7bThanks @fubhy! - EnsureTxQueue.pollandTxQueue.clearcomplete a closing queue after draining its buffered items.#6853
eec5744Thanks @fubhy! - FixTxQueue.offerAllto preserve one-shot iterables across transaction retries and repeated runs.#6783
24e0e93Thanks @tim-smart! - Propagate trace context through persisted cluster workflow requests.#6693
aeba0c8Thanks @lloydrichards! - MCP servers now return standard JSON-RPC errors for malformed requests, unknown methods, and invalid parameters.#6693
aeba0c8Thanks @lloydrichards! - MCP servers now enforce revision-specific JSON-RPC batch and protocol-version header requirements.#6707
1a7ce81Thanks @gcanti! - MarkSchema.UnknownFromJsonStringas internal and remove its type-level interface. UseSchema.fromJsonString(Schema.Unknown)instead. Addreviver, callback or arrayreplacer, andspaceoptions toSchema.fromJsonString, and makeSchemaTransformation.fromJsonStringa configurable factory.#6828
48f22a7Thanks @tim-smart! - Use layered storage for Context, makingContext.addO(1) and eliminating per-request service map clones in the HTTP servers. Docgen now omits@internaloption properties from generated signatures.#6780
c96b7f6Thanks @tim-smart! - Include typed tool output schemas in MCPtools/listresponses.#6733
6d2a942Thanks @gcanti! - Avoid validatingSchema.Classfields twice when decoding.#6659
cc27b19Thanks @tim-smart! - Preserve prototype accessors when code is compiled with loose object spread transforms.#6912
8f9499fThanks @gcanti! - Removeactualfields from everySchemaIssuevariant, together withSchemaIssue.getActual,SchemaIssue.redact, andSchema.redact. Built-informatters now use static messages that do not interpolate rejected input,
while paths, AST metadata, union successes, and user-provided messages and
annotations are preserved unchanged.
Runtime performance was measured across the 16 Effect fixtures in the
schema-benchmarkssuite. These are the scenarios used for the cross-librarycomparison with Valibot and Zod. The paired HEAD-versus-
mainrun classified 3fixtures as improvements, 0 as regressions, and 13 as inconclusive. Negative
changes are faster. Absolute library values are medians from the same
cross-library run;
—means that the corresponding adapter does not exposethat scenario.
initialization-schemainitialization-decodervalidation-validvalidation-invalidparsing-all-validparsing-all-invalidparsing-first-validparsing-first-invalidstandard-all-validstandard-all-invalidstandard-first-validstandard-first-invalidcodec-typed-encodecodec-typed-decodecodec-unknown-encodecodec-unknown-decode#6692
3eeea73Thanks @schickling-assistant! - Fix unstable CLI subcommands dropping operands after the--end-of-options terminator.#6625
0a532e5Thanks @lloydrichards! - Add adapter-valued MCP server protocol declarations, route requests through the selected protocol before schema decoding, and add built-in support for MCP2025-06-18.#6864
f398149Thanks @fubhy! - Honor HTTP-dateRetry-Aftervalues when retrying OTLP exports.#6693
aeba0c8Thanks @lloydrichards! - MCP Streamable HTTP servers now validate content negotiation, session lifecycle, negotiated protocol versions, and browser Origins before dispatching requests.#6824
ace903eThanks @tim-smart! - Skip HTTP server span attribute collection when the span is not sampled.#6814
e8eb62bThanks @gcanti! - RefineConfigloading and absence semantics.Config.schemanow derives a provider loading policy from the encodedStringTreeschema, materializes mixed-shape union members independently, and leaves separated scalar parsing toConfig.ArrayandConfig.Record. Schemas whose canonicalStringTreeencoding remains opaque, such asSchema.Any,Schema.Unknown, orSchema.Json, are rejected when the config is constructed; use a concrete shape orSchema.fromJsonString(Schema.Json)for scalar JSON. Missing or unavailable representations are decoded asundefinedbeforeConfig.withDefaultandConfig.optiondecide absence. Partially suppliedConfig.allgroups are rejected, successful values such asundefinedand explicitly present empty structures are preserved, and the internal path prefix is removed from the publicConfig.parsesignature.#6693
aeba0c8Thanks @lloydrichards! - MCP servers now refresh roots after capable clients report that their root list changed.#6828
48f22a7Thanks @tim-smart! - RemoveContext.mutateandContext.getReferenceUnsafe. Context updates now use overlays, andContext.getresolves reference defaults.#6649
d48506dThanks @gcanti! - Remove thekeyValueCombineroption fromSchema.Recordand the correspondingSchemaAST.KeyValueCombinerandSchemaAST.IndexSignature.mergeAPIs.For transformed key collisions, sequential parsing keeps the later selected
value, while concurrent parsing keeps the value applied last in completion
order.
#6693
aeba0c8Thanks @lloydrichards! - MCP servers now support session-scoped resource subscriptions on transports that can deliver server notifications and filter resource updates by each client's subscribed URIs.#6649
d48506dThanks @gcanti! - Preserve untouchedResultbranches by identity inResult.mapandResult.mapError.#6649
d48506dThanks @gcanti! - Improve Schema parsing, schema construction and adapter runtime performancewhile preserving current parsing behavior.
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.