Skip to content

perf(Context): optimize pick for zero or one service - #8998

Merged
tim-smart merged 4 commits into
Effect-TS:mainfrom
gchen0002:codex/context-pick-fast-path
Oct 11, 2026
Merged

tim-smart merged 4 commits into
Effect-TS:mainfrom
gchen0002:codex/context-pick-fast-path

Conversation

@gchen0002

@gchen0002 gchen0002 commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Type

  • Refactor
  • Feature
  • Bug Fix
  • Optimization
  • Documentation Update

Description

  • Avoid copying and filtering the entire context when Context.pick selects zero or one service.
  • Keep the existing behavior: return a new context without changing the original, preserve services whose value is undefined, and avoid creating default services during selection. Selecting multiple services follows the existing code path.
  • Extend existing tests to cover the fast paths and edge cases.

Benchmarks

  • Baseline: 35ec46e
  • Host: AMD Ryzen 5 5600 (12 logical CPUs), Windows x64 (10.0.26300).
  • Engines: Node 26.4.0, Bun 1.4.0 and Deno 2.9.4
  • Method: Compared the original and optimized code across 12 runs per engine, using contexts with 64 services.
Runtime Fresh-overlay operation Before (µs/op) After (µs/op) Time change [95% CI]
Node 26.4.0 Pick one 6.482 0.053 -99.18% [-99.20%, -99.17%]
Node 26.4.0 Pick zero 6.419 0.037 -99.42% [-99.43%, -99.41%]
Node 26.4.0 Pick three (control) 6.174 6.297 +1.89% [+0.19%, +3.47%]
Bun 1.4.0 Pick one 5.985 0.076 -98.77% [-98.88%, -98.67%]
Bun 1.4.0 Pick zero 6.400 0.030 -99.54% [-99.58%, -99.51%]
Bun 1.4.0 Pick three (control) 6.625 6.174 -9.98% [-18.47%, -1.45%]
Deno 2.9.4 Pick one 6.480 0.052 -99.19% [-99.21%, -99.17%]
Deno 2.9.4 Pick zero 6.507 0.038 -99.41% [-99.42%, -99.39%]
Deno 2.9.4 Pick three (control) 6.343 6.393 +1.46% [-0.63%, +3.58%]

Related

No linked issue.

Note: This is my first contribution to Effect, happy to adjust the approach to fit the project’s conventions.

Closes EFF-1969

Add fast paths for zero or one selected service using the existing lookup
and missing-value semantics.

Preserve fresh context/cache isolation and the existing multi-service
path. Extend existing tests with focused regression assertions and include
an effect patch changeset.
@changeset-bot

changeset-bot Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: b1532d6

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 32 packages
Name Type
effect Patch
@effect/opentelemetry Patch
@effect/vitest Patch
@effect/ai-anthropic Patch
@effect/ai-cloudflare Patch
@effect/ai-openai-compat Patch
@effect/ai-openai Patch
@effect/ai-openrouter Patch
@effect/ai-typesafe Patch
@effect/atom-react Patch
@effect/atom-solid Patch
@effect/atom-vue Patch
@effect/platform-browser Patch
@effect/platform-bun Patch
@effect/platform-deno Patch
@effect/platform-node-shared Patch
@effect/platform-node Patch
@effect/sql-clickhouse Patch
@effect/sql-d1 Patch
@effect/sql-libsql Patch
@effect/sql-mssql Patch
@effect/sql-mysql2 Patch
@effect/sql-pg Patch
@effect/sql-pglite Patch
@effect/sql-sqlite-bun Patch
@effect/sql-sqlite-do Patch
@effect/sql-sqlite-node Patch
@effect/sql-sqlite-react-native Patch
@effect/sql-sqlite-wasm Patch
@effect/docgen Patch
@effect/doctest Patch
@effect/openapi-generator Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

Bundle Size Analysis

Generated from PR build output; treat the content below as untrusted.

File Name Current Size Previous Size Difference
arbitrary-combinators.ts 38.84 KB 38.84 KB 0.00 KB (0.00%)
basic.ts 7.07 KB 7.07 KB 0.00 KB (0.00%)
batching.ts 10.15 KB 10.15 KB 0.00 KB (0.00%)
brand.ts 6.73 KB 6.73 KB 0.00 KB (0.00%)
cache.ts 10.92 KB 10.92 KB 0.00 KB (0.00%)
config.ts 22.32 KB 22.32 KB 0.00 KB (0.00%)
differ.ts 21.35 KB 21.35 KB 0.00 KB (0.00%)
http-client.ts 22.73 KB 22.73 KB 0.00 KB (0.00%)
http-router.ts 34.17 KB 34.17 KB 0.00 KB (0.00%)
logger.ts 11.25 KB 11.25 KB 0.00 KB (0.00%)
metric.ts 9.04 KB 9.04 KB 0.00 KB (0.00%)
optic.ts 6.96 KB 6.96 KB 0.00 KB (0.00%)
pubsub.ts 15.24 KB 15.24 KB 0.00 KB (0.00%)
queue.ts 12.16 KB 12.16 KB 0.00 KB (0.00%)
schedule.ts 11.27 KB 11.27 KB 0.00 KB (0.00%)
schema-bigdecimal.ts 13.78 KB 13.78 KB 0.00 KB (0.00%)
schema-binary.ts 40.03 KB 40.03 KB 0.00 KB (0.00%)
schema-class.ts 21.11 KB 21.11 KB 0.00 KB (0.00%)
schema-fromJsonSchemaDocument.ts 32.16 KB 32.16 KB 0.00 KB (0.00%)
schema-representation-roundtrip.ts 27.33 KB 27.33 KB 0.00 KB (0.00%)
schema-string-transformation.ts 14.54 KB 14.54 KB 0.00 KB (0.00%)
schema-string.ts 12.04 KB 12.04 KB 0.00 KB (0.00%)
schema-template-literal.ts 16.11 KB 16.11 KB 0.00 KB (0.00%)
schema-toArbitrary.ts 38.37 KB 38.37 KB 0.00 KB (0.00%)
schema-toCodeDocument.ts 25.36 KB 25.36 KB 0.00 KB (0.00%)
schema-toCodecJson.ts 20.28 KB 20.28 KB 0.00 KB (0.00%)
schema-toEquivalence.ts 20.49 KB 20.49 KB 0.00 KB (0.00%)
schema-toFormatter.ts 20.59 KB 20.59 KB 0.00 KB (0.00%)
schema-toJsonSchemaDocument.ts 25.06 KB 25.06 KB 0.00 KB (0.00%)
schema-toRepresentation.ts 20.57 KB 20.57 KB 0.00 KB (0.00%)
schema.ts 20.33 KB 20.33 KB 0.00 KB (0.00%)
stm.ts 13.29 KB 13.29 KB 0.00 KB (0.00%)
stream.ts 10.00 KB 10.00 KB 0.00 KB (0.00%)

@tim-smart
tim-smart merged commit 9314666 into Effect-TS:main Oct 11, 2026
9 of 10 checks passed
@effect-bot effect-bot mentioned this pull request Oct 11, 2026
@gchen0002
gchen0002 deleted the codex/context-pick-fast-path branch October 11, 2026 07:08
brandhaug added a commit to brandhaug/b2b-saas-starter that referenced this pull request Oct 18, 2026
## pnpm-workspace.yaml (default)

## Dependency Updates

| Package | From | To | Type |
| --- | --- | --- | --- |
| `@effect/platform-node` | 4.0.3 | 4.0.5 | patch |
| `@effect/sql-d1` | 4.0.3 | 4.0.5 | patch |
| `@effect/tsgo` | 0.51.1 | 0.53.0 | minor |
| `@effect/vitest` | 4.0.3 | 4.0.5 | patch |
| `effect` | 4.0.3 | 4.0.5 | patch |

## Release Notes

<details>
<summary><b>@<!---->effect/platform-node</b> (4.0.3 → 4.0.5) — 2
releases</summary>

<details>
<summary><b>4.0.5</b></summary>

### Patch Changes

- [#9158](Effect-TS/effect#9158)
[`5951ac0`](Effect-TS/effect@5951ac0)
Thanks @<!---->fubhy! - Add typed connection options to `NodeHttpClient`
for unix sockets and mutual TLS.

- [#9136](Effect-TS/effect#9136)
[`12be65e`](Effect-TS/effect@12be65e)
Thanks @<!---->tim-smart! - Redact sensitive query values in HTTP spans,
request inspection and error messages. Also redact URL credentials in
client spans, request inspection and errors. Request URLs sent over the
wire are unchanged.
  
Move `AWSAccessKeyId`, `Signature`, `sig` and `X-Goog-Signature` from
`Headers.CurrentRedactedNames` to the new
`UrlParams.CurrentRedactedNames`. A custom list replaces these defaults.
Add `UrlParams.isRedactedName`, `UrlParams.redact` and
`UrlParams.redactUrl` for explicit redaction.
- Updated dependencies
[[`f665607`](Effect-TS/effect@f665607),
[`dbf442b`](Effect-TS/effect@dbf442b),
[`74d1930`](Effect-TS/effect@74d1930),
[`a03afb6`](Effect-TS/effect@a03afb6),
[`f159284`](Effect-TS/effect@f159284),
[`5d301cc`](Effect-TS/effect@5d301cc),
[`cd74ea2`](Effect-TS/effect@cd74ea2),
[`925cf64`](Effect-TS/effect@925cf64),
[`54c51d9`](Effect-TS/effect@54c51d9),
[`995c104`](Effect-TS/effect@995c104),
[`816575e`](https://github.com/Effect-TS/effect/co

…[full
notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/platform-node%404.0.5)

</details>

<details>
<summary><b>4.0.4</b></summary>

### Patch Changes

- [#9014](Effect-TS/effect#9014)
[`95a3ab7`](Effect-TS/effect@95a3ab7)
Thanks @<!---->jayhemnani9910! - Ignore a leading UTF-8 BOM when
decoding Node HTTP request and response text, so `json` no longer fails
on BOM-prefixed bodies.
- Updated dependencies
[[`7547a99`](Effect-TS/effect@7547a99),
[`711719d`](Effect-TS/effect@711719d),
[`251f849`](Effect-TS/effect@251f849),
[`8f1ea52`](Effect-TS/effect@8f1ea52),
[`c93485e`](Effect-TS/effect@c93485e),
[`37e088f`](Effect-TS/effect@37e088f),
[`9314666`](Effect-TS/effect@9314666),
[`a0a26b7`](Effect-TS/effect@a0a26b7),
[`cc843ea`](Effect-TS/effect@cc843ea),
[`ab90be9`](Effect-TS/effect@ab90be9),
[`a59b971`](Effect-TS/effect@a59b971),
[`fccf660`](Effect-TS/effect@fccf660),
[`1bfd8fd`](Effect-TS/effect@1bfd8fd),
[`78e4c43`](Effect-TS/effect@78e4c43),
[`fde67a1`](Effect-TS/effect@fde67a1),
[`118deef`](Effect-TS/effect@118deef),
[`cea74c9`](Effect-TS/effect@cea74c92ac839009c6ba112504

…[full
notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/platform-node%404.0.4)

</details>

</details>

<details>
<summary><b>@<!---->effect/sql-d1</b> (4.0.3 → 4.0.5) — 2
releases</summary>

<details>
<summary><b>4.0.5</b></summary>

### Patch Changes

- Updated dependencies
[[`f665607`](Effect-TS/effect@f665607),
[`dbf442b`](Effect-TS/effect@dbf442b),
[`74d1930`](Effect-TS/effect@74d1930),
[`a03afb6`](Effect-TS/effect@a03afb6),
[`f159284`](Effect-TS/effect@f159284),
[`5d301cc`](Effect-TS/effect@5d301cc),
[`cd74ea2`](Effect-TS/effect@cd74ea2),
[`925cf64`](Effect-TS/effect@925cf64),
[`54c51d9`](Effect-TS/effect@54c51d9),
[`995c104`](Effect-TS/effect@995c104),
[`816575e`](Effect-TS/effect@816575e),
[`0df6e06`](Effect-TS/effect@0df6e06),
[`52a7d3c`](Effect-TS/effect@52a7d3c),
[`ec831c3`](Effect-TS/effect@ec831c3),
[`3abc63e`](Effect-TS/effect@3abc63e),
[`a841b8b`](Effect-TS/effect@a841b8b),
[`91efea7`](Effect-TS/effect@91efea7),
[`e271997`](Effect-TS/effect@e271997),
[`7719bda`](Effect-TS/effect@7719bda),
[`563397f`](Effect-TS/effect@563397f

…[full
notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/sql-d1%404.0.5)

</details>

<details>
<summary><b>4.0.4</b></summary>

### Patch Changes

- [#9027](Effect-TS/effect#9027)
[`5d88d87`](Effect-TS/effect@5d88d87)
Thanks @<!---->tim-smart! - Update repository dependencies to their
latest compatible releases.
- Updated dependencies
[[`7547a99`](Effect-TS/effect@7547a99),
[`711719d`](Effect-TS/effect@711719d),
[`8f1ea52`](Effect-TS/effect@8f1ea52),
[`c93485e`](Effect-TS/effect@c93485e),
[`37e088f`](Effect-TS/effect@37e088f),
[`9314666`](Effect-TS/effect@9314666),
[`a0a26b7`](Effect-TS/effect@a0a26b7),
[`cc843ea`](Effect-TS/effect@cc843ea),
[`ab90be9`](Effect-TS/effect@ab90be9),
[`a59b971`](Effect-TS/effect@a59b971),
[`fccf660`](Effect-TS/effect@fccf660),
[`1bfd8fd`](Effect-TS/effect@1bfd8fd),
[`78e4c43`](Effect-TS/effect@78e4c43),
[`fde67a1`](Effect-TS/effect@fde67a1),
[`118deef`](Effect-TS/effect@118deef),
[`cea74c9`](Effect-TS/effect@cea74c9),
[`b7c1ac6`](Effect-TS/effect@b7c1ac6),
[`f837966`](https://github.com/Effect-TS/effect/

…[full
notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/sql-d1%404.0.4)

</details>

</details>

<details>
<summary><b>@<!---->effect/tsgo</b> (0.51.1 → 0.53.0) — 2
releases</summary>

<details>
<summary><b>0.53.0</b></summary>

### Minor Changes

- 13a46c9: The `deterministicKeys` rule and the key completions now
compute a key for files without a `package.json`, or whose nearest
`package.json` has no `name`. The key is built as usual, but without the
package name. The sub-directory segment is relative to the
`package.json` directory if one is found, otherwise to the
`tsconfig.json` directory, otherwise to the program's common source
directory.
  
Projects that enabled `deterministicKeys` without a `package.json` will
now see reports. This differs from the upstream
`@effect/language-service`, which skips these files.
  
  ```json
  {
    "name": "@effect/language-service",
    "keyPatterns": [{ "target": "service", "pattern": "default" }]
  }
  ```
  
  ```ts
// src/services/AuthService.ts, no package.json, tsconfig.json at the
project root
  // reports: the expected key is `services/AuthService/MyService`
export class MyService extends Context.Service<MyService,
{}>()("MyService") {}
  ```
- d8c489b: Add `errorPayloadShadowsName` to detect inline `name` payload
fields on Effect error classes. For example,
`Data.TaggedError("ToolNotFound")<{ name: string }>` copies the
payload's `name` onto the error instance and hides the error type in
logs. Rename the field to `toolName`. The rule inspects inline payloads
only and allows a field whose value is the literal the error already
uses as its name.
- 13a46c9: Add an `"identifier"` pattern to `keyPatterns` for the
`deterministicKeys` rule. With it, the expected key is the class name
alone.
  
  ```json
  {
    "name": "@effect/language-service",
    "keyPatterns": [{ "target": "error", "pattern": "identifier" }]
  }
  ```
  
  ```ts
  // reports: the expected key is `KeybindingsConfigError`
export class KeybindingsConfigError extends
Data.TaggedError("KeybindingsConfigParseError")<{}> {}
  ```
- b1ed4ba: Add `preferNamespaceImport` and `preferBarrelImport`, two
diagnostics that report existing imports that contradict the import
style confi

…[full
notes](https://github.com/Effect-TS/tsgo/releases/tag/%40effect/tsgo%400.53.0)

</details>

<details>
<summary><b>0.52.0</b></summary>

### Minor Changes

- 3e4a55d: Route Effect contextual-type queries through
`TypeParser.GetContextualType` and enforce the wrapper with customlint.
For example, use `tp.GetContextualType(node, checker.ContextFlagsNone)`
instead of the checker method. Query behavior stays unchanged, with one
place to add contextual-type safety guards in future changes.
- 0269634: Add `effectSleepZeroToYieldNow`, a style suggestion with a
quick fix for zero-duration `Effect.sleep` calls.
  
For example, `Effect.sleep(0)` becomes `Effect.yieldNow()` in Effect v3
and `Effect.yieldNow` in Effect v4. The rule also recognizes safe
zero-duration strings, tuples, and Duration constructors. The
replacement yields through the fiber scheduler instead of the Clock
service.
- 181b2b3: Add the `flatMapToTap` style suggestion and quick fix for
Effect v3 and v4. Callbacks that run an effect and restore their
unchanged parameter with terminal `Effect.as` or `Effect.map` can use
`Effect.tap` instead. The fix preserves callback statements and earlier
effect transformations.
- 7d051dd: Route internal symbol and type location queries through
TypeParser and enforce this with customlint. Reuse the existing
TypeParser throughout pipeable signature comparison.
  
Prevent false TS2790 diagnostics for valid index-signature deletes such
as `declare const map: { [key: string]: number }; delete map.x;`. Symbol
queries skip deleted property accesses and their names, including
parenthesized and optional targets. Receiver and computed-key queries
remain available, and invalid required-property and readonly deletes
still report compiler errors.
- f178ff2: Add the opt-in `preferEffectArray` diagnostic in
`effectNative` for native Array method calls and references. It suggests
16 corresponding Effect Array APIs and explains migration differences,
such as `values.find(predicate)` becoming `Array.findFirst(values,
predicate)` with an `Option` result.
  
  The rule is disabled by default and enabled as a warning by the

…[full
notes](https://github.com/Effect-TS/tsgo/releases/tag/%40effect/tsgo%400.52.0)

</details>

</details>

<details>
<summary><b>@<!---->effect/vitest</b> (4.0.3 → 4.0.5) — 2
releases</summary>

<details>
<summary><b>4.0.5</b></summary>

### Patch Changes

- Updated dependencies
[[`f665607`](Effect-TS/effect@f665607),
[`dbf442b`](Effect-TS/effect@dbf442b),
[`74d1930`](Effect-TS/effect@74d1930),
[`a03afb6`](Effect-TS/effect@a03afb6),
[`f159284`](Effect-TS/effect@f159284),
[`5d301cc`](Effect-TS/effect@5d301cc),
[`cd74ea2`](Effect-TS/effect@cd74ea2),
[`925cf64`](Effect-TS/effect@925cf64),
[`54c51d9`](Effect-TS/effect@54c51d9),
[`995c104`](Effect-TS/effect@995c104),
[`816575e`](Effect-TS/effect@816575e),
[`0df6e06`](Effect-TS/effect@0df6e06),
[`52a7d3c`](Effect-TS/effect@52a7d3c),
[`ec831c3`](Effect-TS/effect@ec831c3),
[`3abc63e`](Effect-TS/effect@3abc63e),
[`a841b8b`](Effect-TS/effect@a841b8b),
[`91efea7`](Effect-TS/effect@91efea7),
[`e271997`](Effect-TS/effect@e271997),
[`7719bda`](Effect-TS/effect@7719bda),
[`563397f`](Effect-TS/effect@563397f

…[full
notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/vitest%404.0.5)

</details>

<details>
<summary><b>4.0.4</b></summary>

### Patch Changes

- Updated dependencies
[[`7547a99`](Effect-TS/effect@7547a99),
[`711719d`](Effect-TS/effect@711719d),
[`8f1ea52`](Effect-TS/effect@8f1ea52),
[`c93485e`](Effect-TS/effect@c93485e),
[`37e088f`](Effect-TS/effect@37e088f),
[`9314666`](Effect-TS/effect@9314666),
[`a0a26b7`](Effect-TS/effect@a0a26b7),
[`cc843ea`](Effect-TS/effect@cc843ea),
[`ab90be9`](Effect-TS/effect@ab90be9),
[`a59b971`](Effect-TS/effect@a59b971),
[`fccf660`](Effect-TS/effect@fccf660),
[`1bfd8fd`](Effect-TS/effect@1bfd8fd),
[`78e4c43`](Effect-TS/effect@78e4c43),
[`fde67a1`](Effect-TS/effect@fde67a1),
[`118deef`](Effect-TS/effect@118deef),
[`cea74c9`](Effect-TS/effect@cea74c9),
[`b7c1ac6`](Effect-TS/effect@b7c1ac6),
[`f837966`](Effect-TS/effect@f837966),
[`09738f4`](Effect-TS/effect@09738f4),
[`22e7129`](Effect-TS/effect@22e7129

…[full
notes](https://github.com/Effect-TS/effect/releases/tag/%40effect/vitest%404.0.4)

</details>

</details>

<details>
<summary><b>effect</b> (4.0.3 → 4.0.5) — 2 releases</summary>

<details>
<summary><b>4.0.5</b></summary>

### Patch Changes

- [#9055](Effect-TS/effect#9055)
[`f665607`](Effect-TS/effect@f665607)
Thanks @<!---->Tyagiquamar! - Pass a `NonEmptyArray` to the `onNonEmpty`
callback of `Array.match` when the input is a mutable array.

- [#9110](Effect-TS/effect#9110)
[`dbf442b`](Effect-TS/effect@dbf442b)
Thanks @<!---->petar-omni! - Fix `AsyncResult.all` failures carrying a
single input's `previousSuccess` instead of the combined record or
tuple.

- [#9105](Effect-TS/effect#9105)
[`74d1930`](Effect-TS/effect@74d1930)
Thanks @<!---->tim-smart! - Fix infinite atom rebuilds caused by late
reads of uninitialized dependencies.

- [#9145](Effect-TS/effect#9145)
[`a03afb6`](Effect-TS/effect@a03afb6)
Thanks @<!---->jayhemnani9910! - Add `Flag.withOptionalValue` for
GNU-style flags with an optional value, like `--color[=WHEN]`. A bare
flag uses the given value; an explicit value must be attached with `=`.

- [#9131](Effect-TS/effect#9131)
[`f159284`](Effect-TS/effect@f159284)
Thanks @<!---->tim-smart! - Fix lost deferred callback wakes in cluster
workflows when an activity suspends while a parallel activity is still
running.

- [#9094](Effect-TS/effect#9094)
[`5d301cc`](Effect-TS/effect@5d301cc)
Thanks @<!---->okxint! - Name cluster entity RPC server spans by entity
type only (e.g. `WorkflowEntity.Run`) so span names stay
low-cardinality. The entity ID is still recorded in the `entity.id` span
attribute.

- [#9176](Effect-TS/effect#9176)
[`cd74ea2`](Effect-TS/effect@cd74ea211980de0989ec45

…[full
notes](https://github.com/Effect-TS/effect/releases/tag/effect%404.0.5)

</details>

<details>
<summary><b>4.0.4</b></summary>

### Patch Changes

- [#9030](Effect-TS/effect#9030)
[`7547a99`](Effect-TS/effect@7547a99)
Thanks @<!---->effect-bot! - Bound sparse array indices in
`SchemaGetter.makeTreeRecord`, used by `Schema.fromURLSearchParams` and
`Schema.fromFormData`. An indexed container with more than 20 holes is
now returned as an object keyed by its index strings instead of a sparse
array, and appending after the maximum array index no longer throws.

- [#9083](Effect-TS/effect#9083)
[`711719d`](Effect-TS/effect@711719d)
Thanks @<!---->effect-bot! - Bound import-time stack detection probes to
the frames they inspect, restoring the caller's stack trace limit
afterward.

- [#9041](Effect-TS/effect#9041)
[`8f1ea52`](Effect-TS/effect@8f1ea52)
Thanks @<!---->tim-smart! - Stop grouped RequestResolvers from retaining
batch keys for the lifetime of the resolver. Equal keys are now matched
by the pending batch map, so a key is dropped as soon as its batch stops
pending, including after interruption.

- [#9010](Effect-TS/effect#9010)
[`c93485e`](Effect-TS/effect@c93485e)
Thanks @<!---->effect-bot! - Support an explicit client `servername` for
TLS socket upgrades without changing hostname behavior when omitted.

- [#8990](Effect-TS/effect#8990)
[`37e088f`](Effect-TS/effect@37e088f)
Thanks @<!---->bastiankistner! - Use decoded response aliases in
generated HTTP clients. Render bare numbers with a standard leading
finite check as `Schema.Finite`, preserving annotations and other
checks.

- [#8998](Effect-TS/effect#8998)
[`9314666`](Effect-TS/effect@93146666ec49cd6831e9c9d5fa0f9

…[full
notes](https://github.com/Effect-TS/effect/releases/tag/effect%404.0.4)

</details>

</details>

---
*This PR was auto-generated by
[catalog-update-action](https://github.com/brandhaug/catalog-update-action).*

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

This branch is waiting to be deployed

1 waiting deployment
fork — b1532d65 Waiting Oct 11, 2026 by effect-bot via approval-gate #18900
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants