1"effect/Channel#acquireReleaseOut":
2 replacement: "Channel.acquireRelease"
3 note: "Renamed to acquireRelease. The v4 release action cannot add environment requirements, so capture or provide any services it needs."
4"effect/Channel#as":
5 replacement: "Channel.mapDone"
6 note: "Replace Channel.as(self, value) with Channel.mapDone(self, () => value)."
7"effect/Channel#asVoid":
8 replacement: "Channel.mapDone"
9 note: "Replace Channel.asVoid(self) with Channel.mapDone(self, () => void 0)."
10"effect/Channel#bufferChunk":
11 replacement: "none"
12 note: "The inferred Channel.fromChunk match is not equivalent. Rebuild the buffered upstream-pull transform with Channel.fromTransform and Channel.toTransform."
13"effect/Channel#catchAll":
14 replacement: "Channel.catch"
15 note: "Renamed to catch for typed-error recovery."
16"effect/Channel#catchAllCause":
17 replacement: "Channel.catchCause"
18 note: "Renamed to catchCause for full-cause recovery."
19"effect/Channel#Channel":
20 replacement: "Channel.Channel"
21 note: "Retained, but reorder type parameters from <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env> to <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>. Convert Effect values explicitly with Channel.fromEffect or Channel.fromEffectDone."
22"effect/Channel#ChannelException":
23 replacement: "none"
24 note: "Removed implementation artifact. Channel.pipeToOrFail now handles upstream failures without exposing the v3 exception wrapper."
25"effect/Channel#ChannelExceptionTypeId":
26 replacement: "none"
27 note: "Removed implementation artifact. Channel.pipeToOrFail now handles upstream failures without exposing the v3 exception wrapper."
28"effect/Channel#isChannelException":
29 replacement: "none"
30 note: "Removed implementation artifact. Channel.pipeToOrFail now handles upstream failures without exposing the v3 exception wrapper."
31"effect/Channel#ChannelTypeId":
32 replacement: "Channel.TypeId"
33 note: "Renamed to TypeId; the brand is now the string literal ~effect/Channel. Prefer Channel.isChannel for runtime checks."
34"effect/Channel#ChannelUnify":
35 replacement: "Channel.ChannelUnify"
36 note: "Retained; update inferred Channel arguments to the v4 generic order."
37"effect/Channel#ChannelUnifyIgnore":
38 replacement: "Channel.ChannelUnifyIgnore"
39 note: "Retained with a new shape: it no longer extends EffectUnifyIgnore and now contains Effect?: true."
40"effect/Channel#collect":
41 replacement: "Channel.filterMap"
42 note: "Use Channel.filterMap(self, Filter.fromPredicateOption(pf)) to adapt the v3 Option-returning partial function."
43"effect/Channel#concatAll":
44 replacement: "Channel.flatten"
45 note: "Use flatten for sequential emitted-channel flattening. V4 preserves the outer done value and discards child done values."
46"effect/Channel#concatOut":
47 replacement: "Channel.flatten"
48 note: "Use flatten for sequential emitted-channel flattening. V4 preserves the outer done value and discards child done values."
49"effect/Channel#concatAllWith":
50 replacement: "none"
51 note: "V4 removed child-done accumulation and the outer-done combiner. Use Channel.flatten or Channel.flatMap only when child done values may be discarded; otherwise implement a Pull transform."
52"effect/Channel#concatMapWith":
53 replacement: "none"
54 note: "V4 removed child-done accumulation and the outer-done combiner. Use Channel.flatten or Channel.flatMap only when child done values may be discarded; otherwise implement a Pull transform."
55"effect/Channel#concatMap":
56 replacement: "Channel.flatMap"
57 note: "Renamed to flatMap. Sequential flattening is the default; child done values are discarded and the source done value is preserved."
58"effect/Channel#concatMapWithCustom":
59 replacement: "none"
60 note: "Removed with the channel executor scheduling protocol. Use Channel.flatMap for ordinary sequencing or implement custom scheduling with Channel.fromTransform and Pull."
61"effect/Channel#context":
62 replacement: "Channel.contextWith"
63 note: "Use Channel.contextWith((context) => Channel.end(context)); the context was the v3 channel done value."
64"effect/Channel#contextWithChannel":
65 replacement: "Channel.contextWith"
66 note: "Renamed to contextWith."
67"effect/Channel#contextWithEffect":
68 replacement: "Channel.contextWith"
69 note: "Use Channel.contextWith((context) => Channel.fromEffectDone(f(context))) to preserve the effect result as the done value."
70"effect/Channel#doneCollect":
71 replacement: "none"
72 note: "No exact channel combinator remains. Drive Channel.toPull, collect output elements, and handle Cause.Done to retain both outputs and the done value."
73"effect/Channel#emitCollect":
74 replacement: "none"
75 note: "No exact channel combinator remains. Drive Channel.toPull, collect output elements, and handle Cause.Done to retain both outputs and the done value."
76"effect/Channel#ensuringWith":
77 replacement: "Channel.onExit"
78 note: "Renamed to onExit; the finalizer still receives the channel Exit."
79"effect/Channel#foldCauseChannel":
80 replacement: "none"
81 note: "V4 has no exact two-sided fold over failure and completion. Use catchCause or catch for failure-only handling, concatWith for success-only handling, or match the Pull in a custom transform."
82"effect/Channel#foldChannel":
83 replacement: "none"
84 note: "V4 has no exact two-sided fold over failure and completion. Use catchCause or catch for failure-only handling, concatWith for success-only handling, or match the Pull in a custom transform."
85"effect/Channel#fromEither":
86 replacement: "Channel.fromEffectDone"
87 note: "Either is now Result. Use Channel.fromEffectDone(Effect.fromResult(result)) to preserve success as the done value."
88"effect/Channel#fromInput":
89 replacement: "none"
90 note: "SingleProducerAsyncInput was removed. Model the producer with Queue and Pull; use Channel.fromPull with Queue.take when a typed done value matters."
91"effect/Channel#fromOption":
92 replacement: "Channel.fromEffectDone"
93 note: "Use Channel.fromEffectDone(Effect.fromOption(option, Option.none)) to preserve the v3 Option.none error, or omit onNone for the v4 NoSuchElementError default."
94"effect/Channel#fromPubSubScoped":
95 replacement: "Channel.fromPubSubTake"
96 note: "Change the protocol to PubSub<Take<Elem, Err, Done>> and use Channel.flattenArray(Channel.fromPubSubTake(pubsub)). The v4 constructor owns the scoped subscription and returns a Channel directly."
97"effect/Channel#interruptWhenDeferred":
98 replacement: "Channel.interruptWhen"
99 note: "Use Channel.interruptWhen(self, Deferred.await(deferred)); the Deferred-specific overload was removed."
100"effect/Channel#mapErrorCause":
101 replacement: "Channel.catchCause"
102 note: "Use Channel.catchCause(self, (cause) => Channel.failCause(f(cause)))."
103"effect/Channel#mapInputContext":
104 replacement: "Channel.updateContext"
105 note: "Renamed to updateContext for transforming the channel requirement Context."
106"effect/Channel#mapInputEffect":
107 replacement: "none"
108 note: "V4 removed upstream done/error effect mapping. Adapt Cause.Done or failure on the upstream Pull, then pass it through Channel.toTransform(self)."
109"effect/Channel#mapInputErrorEffect":
110 replacement: "none"
111 note: "V4 removed upstream done/error effect mapping. Adapt Cause.Done or failure on the upstream Pull, then pass it through Channel.toTransform(self)."
112"effect/Channel#mapInputIn":
113 replacement: "Channel.mapInput"
114 note: "Use Channel.mapInput(self, (value) => Effect.succeed(f(value))); v4 consolidated pure and effectful input mapping."
115"effect/Channel#mapInputInEffect":
116 replacement: "Channel.mapInput"
117 note: "Renamed to mapInput; the mapper remains effectful."
118"effect/Channel#mapOut":
119 replacement: "Channel.map"
120 note: "Renamed to map; the v4 mapper also receives the element index."
121"effect/Channel#mapOutEffect":
122 replacement: "Channel.mapEffect"
123 note: "Renamed to mapEffect for sequential effectful output mapping."
124"effect/Channel#mapOutEffectPar":
125 replacement: "Channel.mapEffect"
126 note: "Use Channel.mapEffect(self, f, { concurrency: n }); ordered output remains the default."
127"effect/Channel#mergeAllUnbounded":
128 replacement: "Channel.mergeAll"
129 note: "Use Channel.mergeAll(channels, { concurrency: \"unbounded\" }); child done values are discarded and the outer done value is preserved."
130"effect/Channel#mergeAllUnboundedWith":
131 replacement: "none"
132 note: "V4 mergeAll removed child-done combining. Use Channel.mergeAll if terminal accumulation can be dropped; otherwise implement a custom Pull merge."
133"effect/Channel#mergeAllWith":
134 replacement: "none"
135 note: "V4 mergeAll removed child-done combining. Use Channel.mergeAll if terminal accumulation can be dropped; otherwise implement a custom Pull merge."
136"effect/Channel#mergeOutWith":
137 replacement: "none"
138 note: "V4 mergeAll removed child-done combining. Use Channel.mergeAll if terminal accumulation can be dropped; otherwise implement a custom Pull merge."
139"effect/Channel#mergeMap":
140 replacement: "Channel.flatMap"
141 note: "Use Channel.flatMap with concurrency and bufferSize for backpressure, or Channel.switchMap with the same options for the v3 sliding strategy."
142"effect/Channel#mergeOut":
143 replacement: "Channel.mergeAll"
144 note: "Use Channel.mergeAll(self, { concurrency: n }) for bounded backpressured flattening when child done values are irrelevant."
145"effect/Channel#mergeWith":
146 replacement: "Channel.merge"
147 note: "Use Channel.merge with haltStrategy left, right, both, or either for standard policies. Custom MergeDecision effects require a Pull-level redesign."
148"effect/Channel#orDieWith":
149 replacement: "Channel.catch"
150 note: "Use Channel.catch(self, (error) => Channel.die(f(error))); v4 Channel.orDie has no mapping callback."
151"effect/Channel#orElse":
152 replacement: "Channel.catch"
153 note: "Use Channel.catch(self, () => that()) and keep the fallback lazy."
154"effect/Channel#provideLayer":
155 replacement: "Channel.provide"
156 note: "Both collapse into provide. V4 removes services supplied by the layer and retains remaining requirements; use options.local when a fresh layer instance is needed."
157"effect/Channel#provideSomeLayer":
158 replacement: "Channel.provide"
159 note: "Both collapse into provide. V4 removes services supplied by the layer and retains remaining requirements; use options.local when a fresh layer instance is needed."
160"effect/Channel#read":
161 replacement: "none"
162 note: "The channel instruction AST was removed. Implement a one-step upstream read with Channel.fromTransform and Pull matching, including Cause.Done handling."
163"effect/Channel#readOrFail":
164 replacement: "none"
165 note: "The channel instruction AST was removed. Implement a one-step upstream read with Channel.fromTransform and Pull matching, including Cause.Done handling."
166"effect/Channel#readWith":
167 replacement: "none"
168 note: "The channel instruction AST was removed. Implement a one-step upstream read with Channel.fromTransform and Pull matching, including Cause.Done handling."
169"effect/Channel#readWithCause":
170 replacement: "none"
171 note: "The channel instruction AST was removed. Implement a one-step upstream read with Channel.fromTransform and Pull matching, including Cause.Done handling."
172"effect/Channel#repeated":
173 replacement: "Channel.forever"
174 note: "Use forever for infinite repetition. Channel.repeat takes a Schedule and may terminate, so it is not equivalent."
175"effect/Channel#run":
176 replacement: "Channel.runDrain"
177 note: "Use runDrain to consume all emitted elements and return the channel's done value."
178"effect/Channel#runScoped":
179 replacement: "Channel.toPull"
180 note: "No direct scoped runner remains. Use toPull in the caller scope and recover Cause.Done; use runDrain when an internally managed scope is acceptable."
181"effect/Channel#scopedWith":
182 replacement: "Channel.unwrap"
183 note: "Use Channel.unwrap(Effect.map(Effect.scope, (scope) => Channel.fromEffect(f(scope)))) so the effect uses the active channel scope."
184"effect/Channel#toPullIn":
185 replacement: "Channel.toPullScoped"
186 note: "Renamed to toPullScoped. The returned Pull emits elements directly and represents completion with Cause.Done instead of Either."
187"effect/Channel#toSink":
188 replacement: "Sink.fromChannel"
189 note: "Constructor moved to Sink. Adapt the channel to non-empty array input, no emitted leftovers, and a Sink.End done value."
190"effect/Channel#toStream":
191 replacement: "Stream.fromChannel"
192 note: "Constructor moved to Stream. Adapt Chunk outputs to non-empty readonly arrays and map the channel done value to void."
193"effect/Channel#unwrapScoped":
194 replacement: "Channel.unwrap"
195 note: "Use unwrap; v4 supplies the active channel scope to the effect and removes Scope from the resulting requirement."
196"effect/Channel#unwrapScopedWith":
197 replacement: "Channel.unwrap"
198 note: "Use Channel.unwrap(Effect.flatMap(Effect.scope, f)) to pass the active channel scope to f."
199"effect/Channel#void":
200 replacement: "Channel.empty"
201 note: "Renamed to empty: emit nothing and end with void."
202"effect/Channel#write":
203 replacement: "Channel.succeed"
204 note: "Renamed to succeed, which emits one element in v4. Use Channel.end when migrating v3 succeed, which produced a done value."
205"effect/Channel#writeAll":
206 replacement: "Channel.fromArray"
207 note: "Replace the variadic writer with Channel.fromArray(outs)."
208"effect/Channel#writeChunk":
209 replacement: "Channel.fromChunk"
210 note: "Renamed to fromChunk for emitting every Chunk element."
211"effect/Channel#zip":
212 replacement: "Channel.concatWith"
213 note: "For sequential zip, concatWith the left channel and mapDone the right result to a tuple. Concurrent tuple-done semantics require custom Pull coordination."
214"effect/Channel#zipLeft":
215 replacement: "Channel.concatWith"
216 note: "For sequential zipLeft, concatWith and mapDone the right result back to the left done value. Concurrent done preservation requires custom Pull coordination."
217"effect/Channel#zipRight":
218 replacement: "Channel.concat"
219 note: "Use concat for the sequential form; it preserves the right done value. Concurrent mode has no exact replacement."