github Effect-TS/effect effect@4.0.0-rc.112

Minor Changes

  • #7390 a5f78d3 Thanks @tim-smart! - Make RPC serialization schema-aware.

    Add codecFor to RPC serialization and client/server protocols so RPC and cluster
    network payloads use the transport's schema codec. Framing, cluster storage, and
    existing built-in wire formats remain unchanged.

Patch Changes

  • #7411 20cb4f2 Thanks @altendky! - Add RcMap.getOption and LayerMap.contextEffectOption for atomically retaining
    entries only when they are already cached.

  • #7437 44675cb Thanks @wmaurer! - Add an optional description to AiError.AuthenticationError, rendered after the kind-based suggestion, and pass the provider's own error text through it on HTTP 401 and 403, so authentication failures report what actually went wrong instead of only a category.

  • #7393 b6bf5e1 Thanks @wmaurer! - Fix Prompt.autoComplete swallowing j and k while typing a filter query.

  • #7401 0b9f780 Thanks @gjermundgaraba! - Retry transient EventLog remote write failures so pending local entries are synchronized after recovery.

  • #7384 150e92c Thanks @tim-smart! - Improve synchronous Schema decode and encode performance by preserving completed parser exits and using a direct loop for common struct parsers.

  • #7386 6740db2 Thanks @tim-smart! - Add Schema.TaggedUnion.matchOrElse for partial case matching with a typed fallback.

  • #7389 d57bba1 Thanks @tim-smart! - Improve SchemaError construction performance by skipping stack frame capture.

  • #7402 be75d5e Thanks @tim-smart! - Improve Pool acquisition and release performance. Pool now tracks usage
    incrementally, stores available items in an intrusive FIFO, and skips work for
    fixed and empty pools. This changes the public Pool.State and Pool.PoolItem
    interfaces.

  • #7402 be75d5e Thanks @tim-smart! - Add Pool.use, which borrows an item while an effect runs and returns it on any
    exit. Unlike Effect.scoped(Pool.get(pool)), it does not require a Scope.

  • #7402 be75d5e Thanks @tim-smart! - Reduce scoped resource acquisition allocations by storing the first Scope
    finalizer inline and allocating a Map only when a second is added. This changes
    the public Scope.State.Open interface.

  • #7424 02a5146 Thanks @tim-smart! - Skip remote event journal write callbacks when there are no uncommitted entries and return an Option indicating
    whether the callback ran.

  • #7312 15272a6 Thanks @godu! - Fix shell completion for choice values containing quotes, spaces, word-break characters, Unicode, and shell metacharacters.

    Bash now quotes candidates for readline, keeps choice values intact when reconstructing words, and supports Bash 3.2 without associative arrays. Fish and Zsh escape choices across both parsing rounds, and Fish hides value-taking flags after use without suppressing their value completions.

  • #7395 436f10d Thanks @wmaurer! - Fix Prompt.file swallowing j and k while typing a filter query.

  • #7406 058fb15 Thanks @gcanti! - Preserve finite string and unique symbol key unions in the return types of Array.groupBy and Iterable.groupBy.

    Previously, grouping widened finite keys to string or symbol, which lost known-key autocomplete and allowed access to keys that the selector could never produce. The new Record.ReadonlyRecord.GroupByResult keeps finite keys and marks their properties optional because any group may be absent at runtime, while open string and symbol selectors retain their existing record index signatures.

  • #7415 4d89bb8 Thanks @gcanti! - Reject unsupported JSON Schema references instead of resolving them by their final path segment, closes #7409.

  • #7420 480fb15 Thanks @gcanti! - Make JSON Schema dialect conversions preserve custom keywords, translate conditionals, contains, dependencies, identifiers, and tuples where representable, relocate local references after structural changes, and throw instead of silently changing unsupported constraints.

  • #7417 f77ec19 Thanks @Makisuo! - Defer built-in OpenAPI response generation until the documentation route is first requested, retrying after generation defects.

  • #7388 925b82a Thanks @ebramanti! - Fix MCP initialize rejected over the protocol version header

    McpServer.layerHttp validated the MCP-Protocol-Version header on every POST, including
    the initialize request. That header reports the version negotiated by an earlier
    initialize, so on a fresh connection a client can only send its own default. Whenever
    that default was not among the server's registered protocols the initialize returned
    400 and never reached version negotiation, even when the body offered a version the
    server supports.

    The header check now applies only to requests after initialization, where the
    specification requires it. An initialize negotiates from the version offered in its
    body, through the protocol registry, and reports the selected version in the response.

  • #7403 7455246 Thanks @hsyntax! - Add support for explicit cache breakpoints on the OpenAI responses API for GPT-5.6-or-later.

  • #7442 118124d Thanks @tim-smart! - Redact password prompt values from CLI wizard command output.

  • #7366 0dd7825 Thanks @tim-smart! - Add SchemaBinary, a compact schema-derived codec with streaming, optional fingerprints and dictionaries, and RPC support.

  • #7404 b722eca Thanks @gcanti! - Add a public StandardSchema module containing the vendored Standard Schema V1 specification and remove the direct dependency on @standard-schema/spec.

  • #7436 811d579 Thanks @gcanti! - Fix JSON Schema imports:

    • Type-specific keywords no longer imply a type. For example, minLength validates strings without rejecting
      non-string values.
    • Constraints next to const, enum, and $ref are now applied instead of being ignored.
    • Disjoint and linear union intersections are imported without a Cartesian expansion. Other overlapping union
      intersections fail with an explicit error.
    • References to definitions without unions no longer make otherwise linear intersections fail.
    • Imported oneOf schemas remain oneOf when exported again.
    • minItems is preserved when prefixItems does not fully enforce it.
  • #7382 043b587 Thanks @tim-smart! - Replace per-prompt prefix options with a context-based theme for CLI prompt symbols and colors.

  • #7373 8583727 Thanks @ChubbyDuck! - Drop unreachable concurrency guard in iteratorEagerImpl

  • #7429 d9d2cfc Thanks @gcanti! - Reject unsupported JSON Schema validation keywords and object or array const / enum values during import instead of
    silently weakening validation.

  • #7428 5c4b7a0 Thanks @ebramanti! - Return workflow execution IDs from generated RPC and HTTP discard endpoints.

Don't miss a new effect release

NewReleases is sending notifications on new releases.