Update Effect to v4.0.0-rc.118 - #237
Merged
Merged
Conversation
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
notes-docs | f0ecff8 | Sep 28 2026, 06:00 PM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
notes-capture | f0ecff8 | Sep 28 2026, 06:00 PM |
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-rc.117→4.0.0-rc.1184.0.0-rc.117→4.0.0-rc.118Release Notes
Effect-TS/effect (@effect/platform-node)
v4.0.0-rc.118Compare Source
Patch Changes
fd9095fThanks @tim-smart! - Update repository dependencies to their latest compatible releases.f75468a,34cc788,eb02cbb,4bb949e,b409e3f,4093507,325e0fb,e54211a,0c6c2de,cdeccc7,254fcc1,bd14b64,37064fd,702c34e,7ef0ce6,325e0fb,cdec5ef,f9179cb,c760e1e,1b4461e,5709ef6,6b84149,508c70b,382992f,83d7c95,6bf2eb7,ccade14,b8d14d3,8fca194,34e09be,97afa37,321bae6,fb718d3,ccd3440,107dbec,af510e8,537cd82,ff554ae,9a5a383,d2f3547,25d9e47,372a45d,5e9fd25,c85c8c3,b501557,35ef06c,d6cc5d9,83b7b1f,f05fe36,1fd49d4,c79088d,0cbb457,8202a6e,8d070c3,0cf7655,d470d54,2121472,4113bc7,a41a441,3af6bd0,67ee3b8,e8df3d8,1dbc4c3,80d5adb,aa430d8,24f7d32,f4dd1ae,0981d01,0a29ca6,17810b4,62b2ea9,4e4fa8b,3495bd8,b3032f0,d26a913,93f826a,330b747,b808b5d,2575fcc,287273c,0860c0c,8d27554,c2e810c,35ecbb9,b442528,16623c7,5521209,477394d,3036241,ca422fd,4f5f866,54ff4f2,c8a9f85,0c0aa5e,d426feb,2a8f5c7,6332de2,c00c8ff,aa7de26,6f44ca0,98792c3,1f76040,cf7cfd6,6bc0eee,88b79d7,db7b69e,43bbb25,6ecd4b3,7b81a95,dd8990b,fd9095f,19835f2,1a3eb9e]:Effect-TS/effect (effect)
v4.0.0-rc.118Compare Source
Patch Changes
#8367
f75468aThanks @Marve10s! - AddArbitrary.configureGlobalto set default options for property checking and sampling, including the run count used by@effect/vitest. Explicit per-call options take precedence; passing an empty object restores the built-in defaults.#8543
34cc788Thanks @front-depiction! - Fix missed updates through staleAtomRegistrynodes, premature dependency release, leaked superseded builds, and failed observed builds that never recover.#8421
eb02cbbThanks @danieljvdm! - DeferAtom.swrstale refreshes until after reads, skipping them if the source becomes fresh or the atom is disposed. One-shot unmounted reads no longer refresh stale sources after disposal.#8534
4bb949eThanks @tim-smart! - Check identity authorization before resolving unencrypted event-log session bindings#8353
b409e3fThanks @tim-smart! - MakeEffect.awaitAllChildreninterruptible while it waits for child fibers.#8510
4093507Thanks @tim-smart! - FixCache.getretaining zero-TTL lookup results, which could evict live entries.#8339
325e0fbThanks @tim-smart! - Add data-last forms for selected safe Queue operations and selected Option, TxSemaphore, and AsyncResult APIs#8503
e54211aThanks @marbemac! -Cause.prettyandCause.prettyErrorsnow restoreError.stackTraceLimitwhen formatting an error throws, instead of leaving it at1for the rest of the process.#8413
0c6c2deThanks @front-depiction! -Cause.squashno longer allocates intermediate arrays to pick the first failure or defect.#8371
cdeccc7Thanks @front-depiction! - Fix asymmetricChunk.makeEquivalencecomparisons on sparse arrays. Avoid redundant copies inChunkandArray.dedupeWith, and balanceChunk.flatMapconcatenations.#8504
254fcc1Thanks @IMax153! - Fix the CLI lexer to treat negative numbers such as-3.70as values instead of short options, so--lon -3.70parses correctly#8474
bd14b64Thanks @tim-smart! -Scope.closeUnsafenow requires aScope.Closeable, matchingScope.close. Use a scope created byScope.makeorScope.fork; a plainScope.Scopecannot be closed directly.#8473
37064fdThanks @tim-smart! -Scope.closenow requires aScope.Closeable. Use a scope created byScope.makeorScope.fork; a plainScope.Scopecannot be closed directly.#8542
702c34eThanks @Marve10s! - Avoid retaining completed request ids whenMessageStorageis disabled. Without storage, redelivering a completed request id now runs the request again instead of failing withAlreadyProcessingMessage.#8454
7ef0ce6Thanks @front-depiction! - Delay copying a derived Context's base until it has been read at least as many times as its size (with a minimum of eight), avoiding full copies for short-lived contexts.#8339
325e0fbThanks @tim-smart! -TxPriorityQueue.fromIterable(order)(iterable)passed its arguments to the implementation in the wrong order and produced a queue ofundefinedvalues; the data-first form was unaffected.#8414
cdec5efThanks @front-depiction! - Cache named time zones by the requested id as well as the Intl-resolved id, avoiding repeated formatter construction for aliases. Zones still report the Intl-resolved id.#8386
f9179cbThanks @front-depiction! - Clean up rendered error stacks for common Effect callbacks and avoid per-step closure allocations in several combinators on V8.Effect.flatMapcallbacks now receive only the value, without internal fiber/exit arguments or an internalthisreceiver.#8442
c760e1eThanks @front-depiction! - Avoid allocating a closure context for each struct property and array element during sequential Schema traversal.#8354
1b4461eThanks @tim-smart! - Move unstable modules fromeffect/unstable/*toeffect/*and remove the old export paths. Drop theunstablesegment from imports. These APIs remain@stability unstable.Move
Arbitraryto the top level and update@effect/vitestto use the new entrypoint. Replace imports fromeffect/arbitraryoreffect/arbitrary/Arbitrarywithimport { Arbitrary } from "effect"orimport * as Arbitrary from "effect/Arbitrary".#8362
5709ef6Thanks @xia-chao! - Add type guards forHttpBodyError,CookiesError,MultipartError, andNdjsonError.#8475
6b84149Thanks @mugnivenko! - AnnotateConfig.failreturn type asConfig<never>, so it composes withConfig.orElsewithout widening the result toConfig<unknown>#8469
508c70bThanks @Marve10s! - HonorstartImmediately: falseinFiberHandle.run,FiberMap.run, andFiberSet.run.#8443
382992fThanks @front-depiction! - Reduce the memory each fiber retains: the type brand now lives on the prototype,Effect.callbackno longer binds its registration, andFiber.joinAllno longer keeps a cancel closure per joined fiber.#8427
83d7c95Thanks @front-depiction! - Preserve the original failure or interruption when anonExitfinalizer throws synchronously.#8535
6bf2eb7Thanks @BleedingDev! - BuildFindMyWayroute params withoutnew Function, avoiding string code generation in environments with CSP restrictions.#8556
ccade14Thanks @Marve10s! - Process atom writes queued by batch commit listeners instead of dropping them.#8150
b8d14d3Thanks @Tyagiquamar! - FixFormatter.formatJsonto includenameandmessageand preserve enumerable properties when stringifyingErrorinstances withouttoJSON.#8359
8fca194Thanks @gcanti! - FixNumber.remainderfor decimal operands whose scaled coefficients exceed the safe integer range, preserving the exact value of integer operands. This also preventsSchema.isMultipleOffrom accepting or rejecting large values incorrectly.#8459
34e09beThanks @gcanti! - Align JSON Schema imports with Unicode string semantics by counting code points for string length keywords and applying regular expression patterns in ECMAScript Unicode mode.#8415
97afa37Thanks @front-depiction! - Reduce allocations inGraphtraversals:neighbors/successors/predecessorsdeduplicate without an intermediateSetfor typical degrees, andunweightedDistances,astarandallShortestPathsno longer allocate a closure or predecessor record per visited node or relaxation.#8360
321bae6Thanks @tim-smart! - Improve hash composition, number hashing, cyclic equality, native collection comparison, andHashMaphashing. Fix invalid caches and referentialMutableHashMaplookups. Hash values may change.#8572
fb718d3Thanks @tim-smart! - Add per-slotHttpApiparse options for params, query, headers, payload, success and error codecs. Each slot falls back toParseOptionswhen unset. SetHeadersParseOptionsto{}to keep strict body parsing without rejecting transport headers.#8477
ccd3440Thanks @tim-smart! - Build eachHttpRouterentrypoint with a fresh router in a forked layer memo map. Routes on separate servers and handlers no longer leak into each other.Breaking changes:
Layer.provide(HttpRouter.layer)) are not served; the entrypoint serves its own router. For RPC, put the protocol and its handlers in the app passed toserve, for exampleHttpRouter.serve(RpcLayer.pipe(Layer.provideMerge(RpcServer.layerProtocolHttp({ path: "/rpc" })))).#8385
107dbecThanks @front-depiction! - Fix interruptedLayermemoization so waiting and later requesters receive the interrupted build's exit instead of hanging, and shared layers are released when scopes close. CorrectMemoMap.getobserver accounting for effects run twice or never run.#8511
af510e8Thanks @tim-smart! - SkipLayerMappreloading for keys with a zero idle TTL. With the default TTL, preload failures now surface on first use; set a non-zeroidleTimeToLiveto retain eager validation.#8453
537cd82Thanks @front-depiction! - Reduce allocations peryield*inEffect.gen,Option.genandResult.gen, and perEffect.fncall.Utils.SingleShotGennow serves as its own completion result and is no longer anIterableIterator: it only implementsnext, and itsselffield has been removed.#8512
ff554aeThanks @tim-smart! - RunScope.closefinalizers uninterruptibly so interruption cannot abandon remaining cleanup, including when closing aManagedRuntime.#8528
9a5a383Thanks @tim-smart! - Wait for managed fibers and their cleanup to finish before releasing layer resources when disposing aManagedRuntime.#8439
d2f3547Thanks @front-depiction! - Stop allocating closures on everyEffect.matchandEffect.matchCausecall.#8507
25d9e47Thanks @IMax153! - Clarify theMcpServer.toolkiterror when a tool's parameters are not an object schema.#8505
372a45dThanks @IMax153! - Fix stdio MCP servers rejecting pings before initialization when a stateful protocol is configured, including when a stateless protocol is listed first. These pings now return an empty result without creating a session.#8508
5e9fd25Thanks @IMax153! - Report all parameter validation errors for MCP tools in a single response, including missing or invalid fields and, for strict tools, unknown keys.#8465
c85c8c3Thanks @izakfilmalter! - Preserve tool annotation titles in MCPtools/listresponses for the 2025-06-18 and 2025-11-25 protocol revisions, alongside the top-level title and behavioral hints.#8552
b501557Thanks @Floriferous! - Report declared MCP tool failures with empty messages using their encoded value. Handler execution errors now returnisErrorresults on protocol version 2025-11-25 and-32603 Internal erroron older versions, instead of-32602 Invalid params.#8380
35ef06cThanks @front-depiction! - FixMetricseries key collisions, duplicate series for empty attributes, and updates lost after a registry is cleared. Reuse series keys when contextual attributes are unchanged.#8420
d6cc5d9Thanks @danieljvdm! - Emit parts buffered while reading a multipart file before pulling more input.#8450
83b7b1fThanks @front-depiction! - FixMutableList.prependAllwith empty input corrupting the list and breaking subsequent takes or appends.#8447
f05fe36Thanks @front-depiction! - Release consumed slots in a growingMutableListbucket, and pass list indices rather than bucket offsets toMutableList.filterpredicates.#8448
1fd49d4Thanks @front-depiction! - FixMutableList.takeNleaving a drained bucket at the head when it stops at a bucket boundary. This also preventsQueue.takeNfrom making subsequent messages inaccessible after anofferAllboundary.#8340
c79088dThanks @fubhy! - Add family-aware internet address and multicast interface types toNetAddress#8407
0cbb457Thanks @tim-smart! - StoreNetAddressIPv4 and IPv6 addresses as numbers instead of aUint8Array, making construction,EqualandHashcheaper, especially on Deno.#8545
8202a6eThanks @hsyntax! - Mark OpenAPI parameters and response headers as optional when their encoded key is optional, such as keys usingSchema.withDecodingDefaultKeyorSchema.withDecodingDefault. Generated documents previously marked these keys as required, even though they can be absent on the wire.#8547
8d070c3Thanks @gcanti! - Generate OpenAPI parameters and response headers from their encoded object representation while preserving property annotations.#8551
0cf7655Thanks @hsyntax! - Preserve encoded string literals and exportable checks such aspatternin OpenAPI schemas forHttpApiSchema.asText()bodies. Text bodies keep their string type even when their schemas are opaque or referenced components.#8522
d470d54Thanks @FNDEVVE! - Drain OTLP export response bodies before completing or retrying each request.#8395
2121472Thanks @tim-smart! - Prevent lost permits when a partitioned semaphore acquisition is interrupted, and keep competing immediate takes from acquiring the same permit.#8558
4113bc7Thanks @fe-franco! - Fail@effect/sql-pgtransactions when PostgreSQL returnsROLLBACKforCOMMITafter a caught statement error.SqlClient.makeaccepts a commit effect so drivers can inspect the result.#8468
a41a441Thanks @lloydrichards! - In MCP protocols that omit stringstructuredContent, return plain text for toolkit and hand-written tool results whose single text block is an exact JSON mirror of that string.#8337
3af6bd0Thanks @mugnivenko! - Add PlatformError.isPlatformError guard#8502
67ee3b8Thanks @elizabethcheng! - Use a consistent row-lock order for PostgreSQL shard lease acquisition, refresh, and bulk release whenshardLockDisableAdvisoryis enabled.#8540
e8df3d8Thanks @Marve10s! - Treat anInfinitycapacity passed toPubSubas unbounded.#8345
1dbc4c3Thanks @xia-chao! - AddPubSub.isPubSub, matchingQueue.isQueueandTxPubSub.isTxPubSub.#8449
80d5adbThanks @front-depiction! - Fix a race where interrupting a waitingPubSubsubscriber could swallow a later message, or interrupting a backpressured publisher could still publish when space became available.#8569
aa430d8Thanks @tim-smart! - Batch takes drain remaining messages when a queue closes, even below the requested minimum. Later takes receive the terminal error.#8568
24f7d32Thanks @tim-smart! - Withdraw pendingQueue.offerandQueue.offerAllvalues when their producer is interrupted afterQueue.endorQueue.fail. The queue can finish closing once those offers are withdrawn.#8412
f4dd1aeThanks @front-depiction! - Fix lost wake-ups inQueuewhen a fiber yields between checking for a message or capacity and registering its waiter.Queue.offeron a zero-capacitydroppingqueue now hands the message to a waiting taker, matchingofferUnsafeandofferAll.#8472
0981d01Thanks @tim-smart! - Fix Queue takers missing offers that arrive while they are registering.#8514
0a29ca6Thanks @tim-smart! - Retry failed background pool acquisitions when borrowed, rather than passing stale errors to later queries. Callers awaiting their own failed connection still receive its error.#8397
17810b4Thanks @tim-smart! - Close the interruption gap before scope and cache cleanup registration.#8365
62b2ea9Thanks @tim-smart! - Rename the HTTP API entry point fromeffect/httpapitoeffect/http-apiand remove the old export path. Runtime TypeIds under~effect/httpapi/*, service keys undereffect/httpapi/*, and the reservedeffect/httpapi/stream/failureSSE event name now usehttp-apias well.#8378
4e4fa8bThanks @gcanti! - Rename range checks so their subject comes last:Schema.isBetweenLength,Schema.isBetweenCodePoints,Schema.isBetweenSize, andSchema.isBetweenProperties. Also rename the string checks to the grammaticalSchema.isStartingWith,Schema.isEndingWith, andSchema.isIncluding. Update the correspondingSchemaRepresentation.*Reviverexports and persistedeffect/schema/...check IDs to use the new names.#8533
3495bd8Thanks @tim-smart! - Keep the source result type for Effect.repeat with times or schedule, even when while or until is a refinement. Bounded repetition may finish before the predicate stops it, so callers relying on the previous narrowed type must check the result.#8390
b3032f0Thanks @front-depiction! - Fix interrupt-time resource leaks:Pool.get,Pool.useandRcRef.getregister cleanup before they can be interrupted.RcRefandRcMapfinish closing expired resources even if their idle fibers are interrupted.ScopedRefcloses in-flight replacements with their owner.make,fromAcquireandsetnow interrupt if the owning scope has closed.#8541
d26a913Thanks @Marve10s! - Skip malformed ndjson lines and non-object JSON-RPC messages so later requests still decode. Handle non-string notification methods without throwing.#8437
93f826aThanks @front-depiction! - StopEffect.map,Effect.tap,Effect.exit,Effect.matchandEffect.matchCauseallocating a successExiton every step.#8519
330b747Thanks @tim-smart! - AddSchedule.once, a schedule that recurs immediately once and outputsvoid.#8441
b808b5dThanks @front-depiction! - Skip generator allocation for synchronous array and tuple parsing.#8440
2575fccThanks @front-depiction! - Avoid rebuilding the parser wrappers on everySchemaParser.assertscall.#8364
287273cThanks @gcanti! - AddSchema.isMinCodePoints,Schema.isMaxCodePoints, andSchema.isBetweenCodePointsto validate string lengths by Unicode code point count, with JSON Schema export, representation revivers, and arbitrary generation support.#8430
0860c0cThanks @front-depiction! - Speed up schema decoder generation for deeply nested schemas.#8451
8d27554Thanks @front-depiction! - Speed up Schema code generation for nested schemas, especially when a child cannot be generated.#8429
c2e810cThanks @front-depiction! - Memoize recursiveSchema.toEquivalencecompilation and remove unused path tracking, reducing work and retained memory for deeply nested values.#8423
35ecbb9Thanks @fml09! - Ignore non-enumerable own properties when checking schema excess properties, allowingSchema.TaggedErrorresponses to encode under strictHttpApi.ParseOptions. Symbol index signatures now skip non-enumerable entries during decoding and encoding, matching string index signatures; make those properties enumerable or declare them explicitly in aStructto retain them.#8436
b442528Thanks @front-depiction! - FixSchema.toFormattercompiling a recursive schema again at every nesting level of the formatted value.#8482
16623c7Thanks @gcanti! - ImproveSchema.toJsonSchemaDocumentexport of built-in checks. String code-unit length checks now use safe code-point bounds, regex and literal checks avoid patterns that would reject accepted values under Unicode matching, and cardinality checks reject non-finite bounds instead of emitting invalid schemas. Custom check exporters can mark a fragment as approximate by returning[schema, true];oneOfthen falls back toanyOf, and approximate record-key patterns are not used aspatternPropertiesselectors.Built-in checks whose exported constraints can be looser than their runtime checks, including approximations that predate this change:
isPatternisPatternchecks: the pattern is omitted unless the RegExp uses the Unicode flag and its other flags ared,g, ory. Sticky patterns are anchored at the start. Built-in checks may override the default when their Unicode semantics are known to be safe or intentionally loose.isStartingWithisEndingWithisIncludingisMinLengthMath.ceil(minLength / 2)code points. Bounds of 0 and 1 are exact; array bounds are unchanged.isMaxLengthisBetweenLengthisUppercased,isLowercasedisCapitalized,isUncapitalizedisInttype: "integer"without the safe-integer bounds required by the runtime check.isMinProperties,isMaxProperties, `isBetweenPropertiesConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.