What Effect-TS/effect shipped
Written by FoxPlug from the repository's own releases; not affiliated with Effect. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/Effect-TS/effect; Effect did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- Yaml parsing was hardened and extended, with new grammar, core schema tags and a Yaml.stringify printer. Pull request #10287
- A Supervisor for observing fiber lifecycles was added, letting programs see the fibers they start and what each is waiting on. Pull request #10258
- A PathFilter module was added, FileSystem.glob now takes a PathFilter input with a root, and IgnoreFile parsers were added. Pull request #10274
- Opt-in retention-based cleanup of completed cluster requests was added via MessageRetention.make, deleting old requests and their replies. Pull request #10267
- Providing SqlClient no longer removes driver services such as PgClient from requirements, fixing a runtime service-not-found failure. Pull request #10387
- Automatic yielding no longer livelocks when Scheduler.MaxOpsBeforeYield is 1 or 2, including the reported concurrent Effect.forEach hang. Pull request #10463
- RPC handlers can now fail with their middleware's errors, matching what the client type and wire format already carried. Pull request #10418
- Effect.raceAll and raceAllFirst now interrupt the losing fibers as soon as the race settles. Pull request #10367
- @effect/opentelemetry moved to OpenTelemetry JS SDK 3.x and dropped 2.x support. Pull request #10339
- Schema.toEquivalence and Schema.toFormatter now include Record entries whose key schema transforms keys. Pull request #10453
Why it matters
This week touched parsing, observability and resource growth: YAML gained a printer and hardening, fibers can be observed with a Supervisor, and cluster stores can shed old request rows. Several fixes remove runtime surprises, including SQL driver services vanishing from requirements, automatic-yield hangs at tiny budgets, and race losers outliving the race. Teams on OpenTelemetry should note the move to SDK 3.x.
Changelog entry
- Yaml.parse and related parsing were hardened and extended, with new grammar, core schema tags and a Yaml.stringify printer. Pull request #10287
- Added a Supervisor for observing fiber lifecycles. Pull request #10258
- Added the PathFilter module; FileSystem.glob now takes a PathFilter input plus root, and IgnoreFile parsers were added. Pull request #10274
- Added opt-in retention that deletes completed cluster requests and their replies. Pull request #10267
- Providing SqlClient no longer removes driver services such as PgClient from requirements. Pull request #10387
- Fixed automatic-yield livelock with Scheduler.MaxOpsBeforeYield set to 1 or 2. Pull request #10463
- RPC handlers can now fail with their middleware's errors. Pull request #10418
- Effect.raceAll and raceAllFirst now interrupt race losers as soon as the race settles. Pull request #10367
- @effect/opentelemetry now uses OpenTelemetry JS SDK 3.x; 2.x is no longer supported. Pull request #10339
- Fixed Schema.toEquivalence and Schema.toFormatter ignoring Record entries with transformed keys. Pull request #10453
- Fixed Bun File.write and File.writeAll ignoring the cursor after a seek. Pull request #10414
- Equal and Hash now ignore JavaScriptCore Error construction-site metadata on Bun. Pull request #10413
This week in Effect: YAML parsing hardened with Yaml.stringify, a Supervisor for observing fiber lifecycles, PathFilter with glob and IgnoreFile, cluster request retention, and fixes for SqlClient requirements, automatic-yield livelocks and race loser interruption.
This week in Effect: Yaml parsing was hardened and extended with a Yaml.stringify printer, and a Supervisor was added for observing fiber lifecycles so programs can see the fibers they start and what each is waiting on. A general PathFilter module arrived, with FileSystem.glob now taking a filter plus root and new IgnoreFile parsers. Cluster users get opt-in retention that deletes completed requests and their replies. Fixes this week cover SQL driver services being dropped from requirements when SqlClient is provided, automatic-yield livelocks at small MaxOpsBeforeYield budgets, race losers not being interrupted when the race settles, Schema Record entries with transformed keys in equivalence and formatting, and Bun filesystem writes ignoring the cursor after a seek. @effect/opentelemetry
Week of October 26, 2026
What shipped
- Iterable.unfold now stays exhausted after returning done, so stateful generators cannot yield extra values. Pull request #10233
- Iterable.filterMapWhile now stays exhausted after it completes instead of yielding later values when next is called. Pull request #10221
- Schedule.fixed, Schedule.windowed and Schedule.cron no longer return a zero delay repeatedly just before the next run. Pull request #10251
- Stream.groupAdjacentBy now emits the buffered adjacent group before an upstream failure instead of dropping it. Pull request #10240
- Yaml.parse now returns a Result on bad input instead of throwing, matching Toml.parse. Pull request #10224
- Added Json5.parse and Jsonc.parse under effect/encoding as synchronous parsers returning a Result. Pull request #9972
- Added HttpClient.timeout for per-request timeouts that keep the standard HttpClient service type. Pull request #10207
- LibsqlClient now allows concurrent statements on remote http and ws libSQL clients instead of queuing every statement. Pull request #10227
- Added SchemaBinary.int32, uint32, int64 and uint64 fixed-width integer schemas for use in Schema.Struct fields. Pull request #10230
- Rounding a zoned DateTime inside a repeated DST hour now preserves its offset instead of moving to the other occurrence. Pull request #10236
Why it matters
This week fixes several iterator and schedule bugs that could produce values or runs after completion, and adds parsers for JSON5 and JSONC alongside a per-request HttpClient timeout. It also addresses reliability in cluster workflows, persistence and SQL clients, and fixes TypeScript output and cookie handling in generated and HTTP API clients.
Changelog entry
- Iterable.unfold no longer yields values after completing. Pull request #10233
- Iterable.filterMapWhile no longer yields values after completing. Pull request #10221
- Fixed Schedule.fixed, Schedule.windowed and Schedule.cron returning repeated zero delays just before the next run. Pull request #10251
- Stream.groupAdjacentBy now emits its buffered group before an upstream failure. Pull request #10240
- Yaml.parse now returns a Result instead of throwing on bad input. Pull request #10224
- Added Json5.parse and Jsonc.parse to effect/encoding. Pull request #9972
- Added HttpClient.timeout for per-request timeouts. Pull request #10207
- LibsqlClient allows concurrent statements on remote http and ws clients. Pull request #10227
- Added SchemaBinary.int32, uint32, int64 and uint64 fixed-width integer schemas. Pull request #10230
- DateTime rounding inside a repeated DST hour now preserves the original offset. Pull request #10236
- Ndjson.decode and decodeString honor ignoreEmptyLines for space-only and tab-only lines. Pull request #10204
- ByteSize decimal unit constructors now return exact byte counts. Pull request #10217
This week: Iterable.unfold and filterMapWhile stay done after completion, Schedule no longer loops on zero delays near window boundaries, and Yaml.parse returns a Result. Plus Json5.parse, Jsonc.parse, SchemaBinary int schemas and HttpClient.timeout.
What shipped in Effect this week: Iterable.unfold and Iterable.filterMapWhile now stay exhausted after completion, Schedule.fixed, windowed and cron no longer return repeated zero delays near a window boundary, and Stream.groupAdjacentBy emits its buffered group before an upstream failure. Yaml.parse now returns a Result like Toml.parse, and Json5.parse and Jsonc.parse are available under effect/encoding. SchemaBinary adds fixed-width int32, uint32, int64 and uint64 schemas, and HttpClient.timeout adds a per-request timeout. Remote libSQL clients can run concurrent statements, DateTime rounding preserves offsets inside a repeated DST hour, and cluster and persistence paths got fixes for transient failures and stalled entities.
Week of October 19, 2026
What shipped
- Cluster shutdown no longer waits on queued persisted workflow activities that were saved but not started, so the entity drain can finish instead of holding until the termination timeout. Pull request #9817
- HttpClientError serialization no longer exposes request headers, query parameters or body in toJSON, inspect and Cause.pretty output, which previously leaked Redacted values decoded into failed requests. Pull request #9855
- Redis.reserve was added to lease a dedicated pooled connection, so a blocking command like XREAD BLOCK no longer holds up unrelated commands queued behind it on the shared connection. Pull request #9828
- Schema.Record no longer throws when the key schema is an Enum, so enum-keyed records that typechecked can now be constructed. Pull request #9620
- The web HttpServerRequest now enforces MaxBodySize on arrayBuffer and text, and therefore on json and urlParamsBody, matching the Node server for Bun, Deno and toWebHandler. Pull request #9835
- KeyValueStore gained a required keys operation returning a snapshot of the keys at call time, following the design discussed in the related issue. Pull request #9844
- The GraphQL generator now generates recursive input objects, so filter inputs with and/or cycles work instead of failing with a not-supported error and writing nothing. Pull request #9833
- OtlpProxy mounts POST traces, logs and metrics routes on an HttpRouter and forwards browser OTLP exports to a collector, adding credentials on the server so they never ship in the bundle. Pull request #9829
- HttpApi upgrade endpoints can now take a buffered request payload and declare typed 101 response headers. Pull request #9751
- Match.literals and Match.literalsExhaustive were added as unstable record-form combinators for string and number literal unions, mirroring Match.tags and Match.tagsExhaustive. Pull request #9824
Why it matters
This week tightens several places where the library could leak data or stall: error serialization stopped printing request headers, params and body, web body limits are now enforced, and cluster shutdown no longer hangs on queued workflow activities. It also fixes schema and generator failures that blocked valid code, including enum record keys and recursive GraphQL inputs, and adds new capabilities such as a keys operation on KeyValueStore, Redis.reserve and OtlpProxy.
Changelog entry
- Cluster shutdown no longer waits on queued persisted workflow activities that were saved but not started. Pull request #9817
- HttpClientError toJSON, inspect and Cause.pretty output no longer print request headers, query parameters or body. Pull request #9855
- Added Redis.reserve to lease a dedicated pooled connection for blocking commands. Pull request #9828
- Schema.Record no longer throws when the key schema is an Enum. Pull request #9620
- The web HttpServerRequest enforces MaxBodySize on arrayBuffer and text, and so on json and urlParamsBody. Pull request #9835
- Added a required keys operation to KeyValueStore returning a snapshot of keys at call time. Pull request #9844
- The GraphQL generator now generates recursive input objects instead of failing. Pull request #9833
- Added OtlpProxy to forward browser OTLP traces, logs and metrics through an HttpRouter with server-side credentials. Pull request #9829
- Added unstable Match.literals and Match.literalsExhaustive combinators for literal unions. Pull request #9824
- HttpApi upgrade endpoints accept buffered payloads and typed 101 response headers. Pull request #9751
- Added a buildPerTest option to layer and it.layer so a block builds its layer once per test. Pull request #9832
- Spans ignore end, attribute, event and addLinks after the span has ended. Pull request #9815
This week: cluster shutdown no longer waits on queued persisted workflow activities, HttpClientError output stops exposing request headers, params and body, web server requests now enforce MaxBodySize, Schema.Record works with Enum keys, KeyValueStore gains keys, Redis.reserve an
This week's changes: cluster shutdown no longer holds the entity drain on persisted workflow activities that were saved but never started. HttpClientError serialization stopped exposing request headers, query parameters and body. The web HttpServerRequest now enforces MaxBodySize on buffered reads, matching the Node server. Schema.Record no longer throws for Enum key schemas, and KeyValueStore gained a required keys operation. Redis.reserve leases a dedicated pooled connection so blocking commands do not stall others. OtlpProxy forwards browser OTLP exports with credentials added server side, and the GraphQL generator now handles recursive input objects.
Week of October 12, 2026
What shipped
- Typed-error recovery operators now apply defect precedence, so a failure carrying both a typed error and a defect no longer silently drops the defect. Pull request #9516
- The ignore and ignoreCause options on Effect, Stream and Channel accept a log setting that reports unhandled failures through one shared logger. Pull request #9510
- PubSub replay buffers now clear dropped head nodes so replayed values are no longer kept alive until the next full garbage collection. Pull request #9498
- DenoHttpServer now answers the request when building the Response throws, instead of leaving the client hanging with nothing logged. Pull request #9414
- FormData request bodies from NodeHttpClient.layerUndici are now converted to the installed undici package's FormData, fixing requests that previously hung. Pull request #9413
- Iterable.dedupeAdjacent no longer recurses per skipped element, so long runs of equal elements stop overflowing the stack. Pull request #9493
- PubSub.takeUpTo keeps its original limit when the same Effect value is run again after draining replayed messages. Pull request #9495
- All HTTP adapters now share one rule for bodyless statuses and mismatched content-length, dropping bodies and content-length for 204 and 205 responses. Pull request #9417
- Server requests now report the real scheme and an absolute originalUrl, fixing the scheme reported for HTTP/1.1 over TLS and the searchParamsParser failure on Node. Pull request #9415
- NodeSink no longer hangs after a normal writable finish, waking backpressure waits so remaining writes fail rather than wait forever. Pull request #9429
Why it matters
This week tightens failure reporting and resource cleanup across the runtime: defects are no longer lost during typed recovery, unhandled failures can be logged, and PubSub replay buffers stop holding onto values. Several HTTP platform fixes address requests that hung or reported the wrong URL. The changes cover the Effect runtime, SQL, platform HTTP servers and clients, schema-based AI providers and the unstable Bytes module.
Changelog entry
- Apply defect precedence to typed-error recovery operators. Pull request #9516
- Add an Unhandled logging option to the ignore and ignoreCause combinators on Effect, Stream and Channel. Pull request #9510
- Clear dropped head nodes in PubSub replay buffers so values are not kept alive until the next full GC. Pull request #9498
- Fix PubSub.takeUpTo using a smaller limit when the same Effect value is rerun after replay. Pull request #9495
- Fix Iterable.dedupeAdjacent overflowing the stack on long runs of equal elements. Pull request #9493
- Answer requests in DenoHttpServer when building the Response throws. Pull request #9414
- Send FormData request bodies from NodeHttpClient.layerUndici through the installed undici package. Pull request #9413
- Fix response framing for bodyless statuses and mismatched content-length across HTTP adapters. Pull request #9417
- Report the real scheme and an absolute originalUrl for server requests. Pull request #9415
- Add an unstable Bytes module with helpers for concatenating, comparing, ordering and searching Uint8Array values. Pull request #9441
- Fix NodeSink hanging after a normal writable finish. Pull request #9429
- Keep a leading byte order mark in Tar entry names when decoding. Pull request #9428
This week in Effect: typed recovery now keeps defects instead of dropping them, ignore options can log unhandled failures, PubSub replay no longer pins values until a full GC, and Deno and Node HTTP fixes stop requests from hanging.
This week in Effect: typed-error recovery now applies defect precedence so a failure holding both a typed error and a defect keeps the defect. The ignore and ignoreCause options on Effect, Stream and Channel gained a log setting for unhandled failures. PubSub replay buffers clear dropped nodes, so values are released without waiting for a full garbage collection. On the platform side, DenoHttpServer answers requests when building a Response throws, NodeHttpClient sends FormData through the installed undici instance, and all adapters share one rule for bodyless statuses and mismatched content-length. Iterable.dedupeAdjacent no longer overflows the stack on long equal runs.
Week of October 5, 2026
What shipped
- Released effect 4.0.3, which prevents crashes and premature interruption when Effect.cached functions are synchronously re-entered and exports CliOutput.displayWidth. Release
- Released @effect/sql-sqlite-wasm 4.0.3, holding the shared connection for the whole statement or stream so another fiber's transaction cannot roll back an acknowledged write. Release
- Released @effect/sql-sqlite-node 4.0.3 with the same fix for holding the shared connection on single-connection clients. Release
- Released @effect/sql-sqlite-do 4.0.3 with the shared connection fix for single-connection SQL clients. Release
- Released @effect/sql-pglite 4.0.3 with the shared connection fix for single-connection SQL clients. Release
- Fixed HttpEffect.toWebHandler missing client aborts in three ways, so handlers and their request scopes no longer keep running after the client has gone. Pull request #9037
- A root WorkflowEngine.execute caller that receives Suspended now wakes as soon as its workflow has a final result instead of waiting for the next suspendedRetrySchedule step. Pull request #9007
- Fixed Multipart.toPersisted failing on dot and long multi-byte file names when saving uploaded files. Pull request #9013
- Fixed Node HTTP JSON bodies keeping a UTF-8 BOM, which previously broke json decoding on Node adapters. Pull request #9014
Why it matters
This week brings a patch release across effect and the SQL packages, including a fix where single-connection SQL clients could let another fiber's transaction roll back an acknowledged write. It also fixes client abort handling in web handlers and shortens workflow caller waits after a result is ready. Several smaller bug fixes improve file uploads, Node JSON parsing, and Windows child process cleanup.
Changelog entry
- Effect 4.0.3: prevent crashes and premature interruption when Effect.cached functions are synchronously re-entered; export CliOutput.displayWidth. Release
- @effect/sql-sqlite-wasm 4.0.3: hold the shared connection for the whole statement or stream on single-connection clients. Release
- @effect/sql-sqlite-node 4.0.3: hold the shared connection for the whole statement or stream on single-connection clients. Release
- @effect/sql-sqlite-do 4.0.3: hold the shared connection for the whole statement or stream on single-connection clients. Release
- @effect/sql-sqlite-bun 4.0.3: hold the shared connection for the whole statement or stream on single-connection clients. Release
- @effect/sql-pglite 4.0.3: hold the shared connection for the whole statement or stream on single-connection clients. Release
- Release aborted web handler requests and streamed bodies in HttpEffect.toWebHandler. Pull request #9037
- Wake root WorkflowEngine.execute callers as soon as their workflow has a final result instead of waiting for the next suspendedRetrySchedule step. Pull request #9007
- Fix Multipart.toPersisted failing on dot and long multi-byte file names. Pull request #9013
- Fix Node HTTP text keeping a UTF-8 BOM that breaks json decoding. Pull request #9014
Released effect 4.0.3 and SQL packages 4.0.3. Single-connection SQL clients now hold the shared connection for the whole statement or stream. Workflow callers wake as soon as a result is ready, and aborted web handler requests release their handlers and request scopes.
This week we released effect 4.0.3 and patch versions of the SQL packages. On single-connection SQL clients, the shared connection is now held for the whole statement or stream, so another fiber's transaction can no longer roll back an acknowledged write or expose uncommitted rows to a plain read. Workflow callers that receive Suspended now wake as soon as their workflow has a final result, instead of waiting for the next retry schedule step. We also fixed client abort handling in HttpEffect.toWebHandler so handlers and their request scopes stop running after the client is gone. Smaller fixes cover multipart uploads with dot or long multi-byte file names, UTF-8 BOMs in Node JSON bodies, and redundant taskkill calls on Windows.
Week of September 28, 2026
What shipped
- @effect/vitest 4.0.1 fixes deepStrictEqual and notDeepStrictEqual to throw assertion diffs instead of TypeErrors when no message is passed. Release
- Effect.cached* and Cache now treat interruption as abandonment, preventing callers from blocking on interrupted fibers. Pull request #8719
- @effect/sql-sqlite-node 4.0.1 fixes missing rows from cached statements after PRAGMA changes and stops caching failed statement preparations. Release
- @effect/sql-sqlite-bun 4.0.1 retries WAL initialization contention and reports database setup failures as typed SqlError values. Release
- @effect/sql-pg 4.0.1 increases default idle timeout from 10 to 60 seconds to reduce reconnections between bursts. Release
- @effect/ai-cloudflare adds DecisionModel support for Cloudflare Workers AI via Clef and Clef-flash. Pull request #8677
- Effect.cachedInvalidateWithTTL now supports TTL callbacks through public type exports. Pull request #8734
- Stream.aggregateWithin stops stepping schedules while idle, reducing unnecessary wakeups. Pull request #8718
- Pool usage TTL now correctly measures idle time since last release, expiring only excess items. Pull request #8679
- Stream.throttle with shape strategy now respects the configured rate limit. Pull request #8698
Why it matters
This week brings fixes to caching behavior, database drivers, and stream operations that improve reliability and resource efficiency. Several changes address edge cases in interruption handling and connection pooling that could cause subtle bugs in production systems.
Changelog entry
- @effect/vitest 4.0.1: Fix deepStrictEqual and notDeepStrictEqual throwing TypeError instead of assertion diff when no message is passed Release
- @effect/sql-sqlite-node 4.0.1: Fix missing rows from cached statements after PRAGMA
count_changes; do not cache failed statement preparations Release - @effect/sql-sqlite-bun 4.0.1: Retry WAL initialization on lock contention; report database setup failures as typed SqlError Release
- @effect/sql-pg 4.0.1: Increase default idle timeout from 10 to 60 seconds to reduce reconnections Release
- Effect.cached* and Cache: Treat interruption as abandonment to prevent blocking on interrupted fibers Pull request #8719
- @effect/ai-cloudflare: Add DecisionModel support for Cloudflare Workers AI Clef and Clef-flash Pull request #8677
- Effect.cachedInvalidateWithTTL: Expose TTL callbacks through public type exports Pull request #8734
- Stream.aggregateWithin: Stop stepping schedules while idle to reduce unnecessary wakeups Pull request #8718
- Pool: Fix usage TTL strategy to measure idle time since last release, expire longest-idle excess items first Pull request #8679
- Stream.throttle: Fix shape strategy to respect configured rate limit Pull request #8698
- HttpStaticServer: Fix If-Range validation to honor range only for matching strong ETag or Last-Modified Pull request #8705
- DateTime: Fix zoned DateTime when Intl omits fractional seconds by reading from epoch remainder Pull request #8707
Effect 4.0.1 ships fixes for caching interruptions, SQLite statement caching, Stream throttling, and pool idle timeouts. Plus new Cloudflare AI support and @effect/vitest assertion improvements.
Effect 4.0.1 is out with significant reliability improvements across the stack. Caching now properly handles interruptions, SQLite drivers fix statement result issues, database pools measure idle time correctly, and Stream operations respect rate limits. New support for Cloudflare Workers AI and improved test assertions round out the release.
Week of September 21, 2026
What shipped
- Fixed PubSub and Stream.broadcast with infinite capacity that previously threw RangeError instead of working unbounded. Pull request #8540
- Fixed Queue.takeN and Queue.takeBetween hanging after queue termination when buffered data was smaller than the minimum requested. Pull request #8569
- Fixed SQL PostgreSQL transactions to properly fail when PostgreSQL rolls back at COMMIT instead of silently succeeding. Pull request #8558
- Fixed SQLite transactions left open after failed commits due to deferred foreign-key constraint violations. Pull request #8529
- Fixed HttpRouter to own its own router instance so multiple servers no longer interfere with each other's routes. Pull request #8477
- Fixed PostgreSQL shard lease lock deadlocks by ensuring consistent row-lock ordering during acquisition and refresh. Pull request #8502
- Fixed HttpApi ParseOptions breaking endpoints with declared headers by allowing per-slot annotations with fallback. Pull request #8572
- Added Schedule.once for immediate recurrence with void output. Pull request #8519
- Fixed OpenAPI to preserve text literals and string patterns in asText body schemas instead of emitting generic strings. Pull request #8551
- Fixed JSON Schema export of built-in checks to emit constraints matching their Effect check semantics. Pull request #8482
Why it matters
This week addresses multiple correctness issues across streams, queues, SQL transactions, HTTP routing, and distributed systems. The fixes ensure data reliability, prevent resource leaks, and correct behavioral contracts in critical infrastructure code. Several API generation improvements also ensure documentation matches implementation.
Changelog entry
- PubSub and Stream.broadcast now accept Infinity capacity as unbounded instead of throwing RangeError Pull request #8540
- HttpApi.ParseOptions annotations can now be set per-slot with fallback behavior for headers and responses Pull request #8572
- Queue.takeN and Queue.takeBetween no longer hang after queue termination with buffered remainder smaller than minimum Pull request #8569
- PostgreSQL transactions now properly fail when database rolls back at COMMIT instead of silently succeeding Pull request #8558
- Atom.fn writes during AtomRegistry.batch commit are no longer dropped by batch rebuild listeners Pull request #8556
- RPC servers continue answering requests after malformed client lines instead of becoming unresponsive Pull request #8541
- Sharding runners with MessageStorage.layerNoop no longer leak request IDs in memory after entities hibernate Pull request #8542
- Queue offer cancellations after entering Closing state are now properly withdrawn Pull request #8568
- PostgreSQL pool sessions are retired before fatal-error notification to prevent reuse of dead connections Pull request #8570
- Unencrypted event-log sessions now require identity policy authorization before binding Pull request #8534
- FindMyWay route params are now built without new Function to work with CSP restrictions Pull request #8535
- OpenAPI emits text body schemas with literals and patterns preserved instead of generic strings Pull request #8551
- Schema construction performance improved by lazy initialization and shared rebuild implementation Pull request #8536
- OpenAPI correctly marks Schema parameters with decoding defaults as optional when appropriate Pull request #8545
- Effect.repeat now preserves result types with bounded options like times or schedule Pull request #8533
- SQLite transactions are properly cleaned up after failed commits due to deferred constraints Pull request #8529
- SQLite file URIs on Linux now work correctly with SQLITE_OPEN_URI flag handling Pull request #8532
- ManagedRuntime disposal now closes runtime fibers before releasing layer resources Pull request #8528
- JSON Schema export of built-in checks now matches Effect check semantics including UTF-16 lengths Pull request #8482
- OtlpExporter now reads response bodies to prevent FinalizationRegistry leaks Pull request #8522
Effect shipped fixes for infinite capacity streams, queued batches, SQL transactions, HTTP routing, and PostgreSQL deadlocks. Plus OpenAPI schema accuracy improvements and Schedule.once.
Effect's latest release addresses critical correctness issues: PubSub now handles infinite capacity properly, queue termination hangs are fixed, SQL transactions fail correctly when rolled back, and HTTP routing no longer interferes between servers. PostgreSQL deadlocks from shard locks are resolved, and OpenAPI schema generation is more accurate. These fixes span data structures, SQL, HTTP, and distributed systems—core reliability concerns for production applications.
Week of September 14, 2026
What shipped
- Effect 4.0.0-rc.117 released with fixes for local entity registration waits that now fail promptly instead of waiting indefinitely. Release
- Schema interpreter performance improved with experimental JIT and AOT compilers added behind SchemaParser APIs. Pull request #7908
- Effect and Stream module APIs aligned with Stream type signature fixes for runIntoPubSub, cross, and other operations. Pull request #8256
- PostgreSQL connections now retire sessions whose CancelRequest may be in flight to prevent cancel requests hitting subsequent statements. Pull request #8330
- SQL prepared statement name collisions fixed by adding a 64-bit cryptographically random namespace to each prepared statement cache. Pull request #8327
- HTTP QUERY method support added to clients, routers, HttpApi endpoints, and AI request metadata with configurable CORS. Pull request #8261
- DecisionModel and Decision added to effect/unstable/ai for structured decisions over a single input with classify, rate, and probability operations. Pull request #8287
- YAML parsing fixed for indentless block sequences and multiline scalars with proper whitespace and comment handling. Pull request #8270
- Closing fiber interruption now preserved in finalizers to prevent masked interrupted acquirers from failing uninterrupted scope closure. Pull request #8271
- HttpApi.ParseOptions exposed for schema decoding and encoding at API, group, and endpoint levels with cascading precedence. Pull request #8269
Why it matters
This week brings significant performance improvements to Schema handling through experimental compilation, critical fixes to distributed entity registration and database statement management, and expansion of HTTP protocol support with QUERY method and new AI decision modeling capabilities. Stream and Effect API alignment resolves longstanding type inconsistencies affecting users working with both modules.
Changelog entry
- Bound local sends that wait for an unregistered cluster entity type now fail with Entity type not registered defect at the registration deadline instead of waiting indefinitely. Release
- PgConnection.query and PgConnection.stream now retire sessions whose CancelRequest may be in flight to prevent delayed cancellations hitting subsequent statements. Pull request #8330
- SQL prepared statement caches now use a 64-bit cryptographically random namespace per connection to prevent name collisions across cross-connection usage. Pull request #8327
- Schema interpreter performance improved with experimental JIT and AOT compilers available through existing SchemaParser APIs alongside interpreted decoders. Pull request #7908
- HttpApi.ParseOptions exposed for schema decoding and encoding configuration at API, group, and endpoint levels with cascading precedence. Pull request #8269
- YAML parser fixed for indentless block sequences and multiline scalars with proper handling of paragraph folding, escaped line breaks, and comment boundaries. Pull request #8270
- HTTP QUERY method support added to clients, routers, and HttpApi endpoints with configurable CORS and OpenAPI 3.1 output. Pull request #8261
- Stream.runIntoPubSub, Stream.cross, and other operations fixed to match Effect API signatures with corrected type parameters. Pull request #8256
Effect@4.0.0-rc.117: Schema JIT/AOT compilers, Entity registration timeouts, PostgreSQL CancelRequest fixes, SQL statement collisions resolved, HTTP QUERY support, and Stream/Effect API alignment.
Effect@4.0.0-rc.117 shipped this week with performance gains across Schema processing through experimental JIT and AOT compilation, critical reliability fixes for distributed entity registration and PostgreSQL connection handling, SQL prepared statement collision prevention, HTTP QUERY method support, and comprehensive alignment of Effect and Stream module APIs with type signature corrections.