Skip to content

Commit 1cde904

Browse files
Add streamly-0.10.1 to 0.11.0 api-changelog
1 parent 526c71c commit 1cde904

File tree

2 files changed

+265
-0
lines changed

2 files changed

+265
-0
lines changed
Lines changed: 261 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,261 @@
1+
---------------------------------
2+
API Annotations
3+
---------------------------------
4+
5+
[A] : Added
6+
[R] : Removed
7+
[C] : Changed
8+
[O] : Old definition
9+
[N] : New definition
10+
[D] : Deprecated
11+
12+
---------------------------------
13+
API diff
14+
---------------------------------
15+
16+
[C] Streamly.Data.Stream.Prelude
17+
[A] useAcquire :: AcquireIO -> Config -> Config
18+
[D] parEval :: MonadAsync m => (Config -> Config) -> Stream m a -> Stream m a
19+
[A] parCrossApply :: MonadAsync m => (Config -> Config) -> Stream m (a -> b) -> Stream m a -> Stream m b
20+
[A] parBuffered :: MonadAsync m => (Config -> Config) -> Stream m a -> Stream m a
21+
[D] parApply :: MonadAsync m => (Config -> Config) -> Stream m (a -> b) -> Stream m a -> Stream m b
22+
[A] clearAcquire :: Config -> Config
23+
[A] Streamly.Data.Scanl.Prelude
24+
[A] Config
25+
[A] parTeeWith :: MonadAsync m => (Config -> Config) -> (a -> b -> c) -> Scanl m x a -> Scanl m x b -> Scanl m x c
26+
[A] parDistributeScanM :: MonadAsync m => (Config -> Config) -> m [Scanl m a b] -> Stream m a -> Stream m [b]
27+
[A] parDistributeScan :: MonadAsync m => (Config -> Config) -> [Scanl m a b] -> Stream m a -> Stream m [b]
28+
[A] parDemuxScanM :: (MonadAsync m, Ord k) => (Config -> Config) -> (a -> k) -> (k -> m (Scanl m a b)) -> Stream m a -> Stream m [(k, b)]
29+
[A] parDemuxScan :: (MonadAsync m, Ord k) => (Config -> Config) -> (a -> k) -> (k -> Scanl m a b) -> Stream m a -> Stream m [(k, b)]
30+
[A] maxBuffer :: Int -> Config -> Config
31+
[A] inspect :: Bool -> Config -> Config
32+
[A] boundThreads :: Bool -> Config -> Config
33+
[C] Streamly.Data.Fold.Prelude
34+
[C] toHashMapIO
35+
[O] toHashMapIO :: (MonadIO m, Hashable k, Ord k) => (a -> k) -> Fold m a b -> Fold m a (HashMap k b)
36+
[N] toHashMapIO :: (MonadIO m, Hashable k) => (a -> k) -> Fold m a b -> Fold m a (HashMap k b)
37+
[A] parUnzip :: MonadAsync m => (Config -> Config) -> Fold m b x -> Fold m c y -> Fold m (b, c) (x, y)
38+
[A] parTee :: MonadAsync m => (Config -> Config) -> Fold m x a -> Fold m x b -> Fold m x (a, b)
39+
[A] parPartition :: MonadAsync m => (Config -> Config) -> Fold m b x -> Fold m c y -> Fold m (Either b c) (x, y)
40+
[D] parEval :: MonadAsync m => (Config -> Config) -> Fold m a b -> Fold m a b
41+
[A] parDistributeScan :: MonadAsync m => (Config -> Config) -> m [Fold m a b] -> Stream m a -> Stream m [b]
42+
[A] parDistribute :: MonadAsync m => (Config -> Config) -> [Fold m a b] -> Fold m a [b]
43+
[A] parDemuxScan :: (MonadAsync m, Ord k) => (Config -> Config) -> (a -> k) -> (k -> m (Fold m a b)) -> Stream m a -> Stream m [(k, b)]
44+
[A] parBuffered :: MonadAsync m => (Config -> Config) -> Fold m a b -> Fold m a b
45+
46+
---------------------------------
47+
Internal API diff
48+
---------------------------------
49+
50+
[C] Streamly.Internal.Network.Inet.TCP
51+
[A] pipeChunks :: (MonadAsync m, MonadCatch m) => (Word8, Word8, Word8, Word8) -> PortNumber -> Stream m (Array Word8) -> Stream m (Array Word8)
52+
[D] Streamly.Internal.FileSystem.Event.Linux
53+
[D] Streamly.Internal.FileSystem.Event
54+
[C] Streamly.Internal.Data.Stream.Prelude
55+
[C] Channel
56+
[C] [enqueue]
57+
[O] [enqueue] :: Channel m a -> Bool -> (RunInIO m, StreamK m a) -> IO ()
58+
[N] [enqueue] :: Channel m a -> (RunInIO m, StreamK m a) -> IO ()
59+
[A] [channelStopping] :: Channel m a -> IORef Bool
60+
[A] [channelStopped] :: Channel m a -> MVar Bool
61+
[C] Channel
62+
[O] Channel :: RunInIO m -> IORef ([ChildEvent a], Int) -> MVar () -> m [ChildEvent a] -> m Bool -> Limit -> Limit -> Maybe (IORef Count) -> Maybe YieldRateInfo -> (Bool -> (RunInIO m, StreamK m a) -> IO ()) -> m () -> IO Bool -> IO Bool -> IORef Bool -> (Maybe WorkerInfo -> m ()) -> IORef (Set ThreadId) -> IORef Int -> (ThreadId -> m ()) -> MVar () -> Maybe (IORef ()) -> SVarStats -> Bool -> ThreadId -> Channel m a
63+
[N] Channel :: RunInIO m -> Limit -> IORef ([ChildEvent a], Int) -> MVar () -> m [ChildEvent a] -> m Bool -> Maybe (IORef Count) -> IO Bool -> Maybe YieldRateInfo -> IORef Bool -> m () -> ((RunInIO m, StreamK m a) -> IO ()) -> IO Bool -> (Maybe WorkerInfo -> m ()) -> IORef Bool -> MVar Bool -> Limit -> IORef (Set ThreadId) -> IORef Int -> (ThreadId -> m ()) -> MVar () -> Maybe (IORef ()) -> SVarStats -> Bool -> ThreadId -> Channel m a
64+
[A] yieldWith :: Maybe WorkerInfo -> Channel m a -> a -> IO Bool
65+
[R] yield :: Channel m a -> Maybe WorkerInfo -> a -> IO Bool
66+
[A] useAcquire :: AcquireIO -> Config -> Config
67+
[A] timedGroupsOf :: MonadAsync m => Double -> Int -> Fold m a b -> Stream m a -> Stream m b
68+
[A] timedChunksOf' :: (MonadAsync m, Unbox a) => Double -> Int -> Stream m a -> Stream m (Array a)
69+
[A] timedChunksOf :: (MonadAsync m, Unbox a) => Double -> Int -> Stream m a -> Stream m (Array a)
70+
[A] stopWith :: Maybe WorkerInfo -> Channel m a -> IO ()
71+
[R] stopChannel :: MonadIO m => Channel m a -> m ()
72+
[R] stop :: Channel m a -> Maybe WorkerInfo -> IO ()
73+
[C] startChannel
74+
[O] startChannel :: MonadRunInIO m => Channel m a -> m ()
75+
[N] startChannel :: MonadIO m => Channel m a -> m ()
76+
[A] shutdown :: MonadIO m => Channel m a -> m ()
77+
[R] sendWorkerWait :: MonadIO m => Bool -> (Channel m a -> IO ()) -> (Channel m a -> m Bool) -> Channel m a -> m ()
78+
[C] readOutputQPaced
79+
[O] readOutputQPaced :: MonadRunInIO m => Channel m a -> m [ChildEvent a]
80+
[N] readOutputQPaced :: MonadIO m => Channel m a -> m [ChildEvent a]
81+
[C] readOutputQBounded
82+
[O] readOutputQBounded :: MonadRunInIO m => Bool -> Channel m a -> m [ChildEvent a]
83+
[N] readOutputQBounded :: MonadIO m => Bool -> Channel m a -> m [ChildEvent a]
84+
[R] pushWorker :: MonadRunInIO m => Count -> Channel m a -> m ()
85+
[C] postProcessPaced
86+
[O] postProcessPaced :: MonadRunInIO m => Channel m a -> m Bool
87+
[N] postProcessPaced :: MonadIO m => Channel m a -> m Bool
88+
[C] postProcessBounded
89+
[O] postProcessBounded :: MonadRunInIO m => Channel m a -> m Bool
90+
[N] postProcessBounded :: MonadIO m => Channel m a -> m Bool
91+
[A] parYieldWith :: (Config -> Config) -> ((a -> m b) -> m c) -> Stream m a
92+
[A] parMergeMap :: (Config -> Config) -> (a -> Stream m b) -> Stream m a -> Stream m b
93+
[A] parMergeIterate :: (Config -> Config) -> (a -> Stream m a) -> Stream m a -> Stream m a
94+
[D] parEval :: MonadAsync m => (Config -> Config) -> Stream m a -> Stream m a
95+
[A] parCrossApply :: MonadAsync m => (Config -> Config) -> Stream m (a -> b) -> Stream m a -> Stream m b
96+
[A] parBuffered :: MonadAsync m => (Config -> Config) -> Stream m a -> Stream m a
97+
[D] parApply :: MonadAsync m => (Config -> Config) -> Stream m (a -> b) -> Stream m a -> Stream m b
98+
[A] newStreamAndCallback :: MonadAsync m => m (a -> m (), Stream m a)
99+
[A] newRateInfo :: Config -> IO (Maybe YieldRateInfo)
100+
[A] maxYields :: Maybe Int64 -> Config -> Config
101+
[D] groupsOfTimeout :: MonadAsync m => Int -> Double -> Fold m a b -> Stream m a -> Stream m b
102+
[A] getYieldLimit :: Config -> Maybe Count
103+
[A] getStreamRate :: Config -> Maybe Rate
104+
[A] getOrdered :: Config -> Bool
105+
[A] getMaxThreads :: Config -> Limit
106+
[A] getMaxBuffer :: Config -> Limit
107+
[A] getInterleaved :: Config -> Bool
108+
[A] getInspectMode :: Config -> Bool
109+
[A] getEagerDispatch :: Config -> Bool
110+
[A] getCleanup :: Config -> Maybe (IO () -> IO ())
111+
[C] fromChannelK
112+
[O] fromChannelK :: MonadAsync m => Channel m a -> StreamK m a
113+
[N] fromChannelK :: MonadAsync m => Maybe (IO () -> IO ()) -> Channel m a -> StreamK m a
114+
[A] forkWorker :: MonadIO m => Count -> Channel m a -> m ()
115+
[A] exceptionWith :: Maybe WorkerInfo -> Channel m a -> SomeException -> IO ()
116+
[R] dumpSVar :: Channel m a -> IO String
117+
[A] dumpChannel :: Channel m a -> IO String
118+
[C] dispatchWorkerPaced
119+
[O] dispatchWorkerPaced :: MonadRunInIO m => Channel m a -> m Bool
120+
[N] dispatchWorkerPaced :: MonadIO m => Channel m a -> m Bool
121+
[C] dispatchWorker
122+
[O] dispatchWorker :: MonadRunInIO m => Count -> Channel m a -> m Bool
123+
[N] dispatchWorker :: MonadIO m => Count -> Channel m a -> m Bool
124+
[A] dispatchAllWait :: MonadIO m => Bool -> (Channel m a -> IO ()) -> (Channel m a -> m Bool) -> Channel m a -> m ()
125+
[A] clearAcquire :: Config -> Config
126+
[A] cleanupChan :: Channel m a -> String -> IO ()
127+
[A] channelDone :: Channel m a -> String -> IO ()
128+
[A] chanConcatMapK :: MonadAsync m => (Config -> Config) -> Channel m b -> (a -> StreamK m b) -> StreamK m a -> StreamK m b
129+
[A] boundedIntervalsOf :: Int -> Double -> Int -> Fold m a b -> Stream m a -> Stream m b
130+
[A] boundThreads :: Bool -> Config -> Config
131+
[A] Streamly.Internal.Data.Scanl.Prelude
132+
[A] OutEvent
133+
[A] FoldPartial :: b -> OutEvent b
134+
[A] FoldException :: ThreadId -> SomeException -> OutEvent b
135+
[A] FoldEOF :: ThreadId -> OutEvent b
136+
[A] FoldDone :: ThreadId -> b -> OutEvent b
137+
[A] Config
138+
[A] Channel
139+
[A] [svarStats] :: Channel m a b -> SVarStats
140+
[A] [svarRef] :: Channel m a b -> Maybe (IORef ())
141+
[A] [svarInspectMode] :: Channel m a b -> Bool
142+
[A] [svarCreator] :: Channel m a b -> ThreadId
143+
[A] [readInputQ] :: Channel m a b -> m [ChildEvent a]
144+
[A] [outputQueue] :: Channel m a b -> IORef ([OutEvent b], Int)
145+
[A] [outputDoorBell] :: Channel m a b -> MVar ()
146+
[A] [maxInputBuffer] :: Channel m a b -> Limit
147+
[A] [inputSpaceDoorBell] :: Channel m a b -> MVar ()
148+
[A] [inputQueue] :: Channel m a b -> IORef ([ChildEvent a], Int)
149+
[A] [inputItemDoorBell] :: Channel m a b -> MVar ()
150+
[A] [closedForInput] :: Channel m a b -> IORef Bool
151+
[A] Channel :: IORef ([ChildEvent a], Int) -> Limit -> MVar () -> IORef Bool -> MVar () -> m [ChildEvent a] -> IORef ([OutEvent b], Int) -> MVar () -> Maybe (IORef ()) -> SVarStats -> Bool -> ThreadId -> Channel m a b
152+
[A] sendToWorker_ :: MonadAsync m => Channel m a b -> a -> m ()
153+
[A] sendToWorker :: MonadAsync m => Channel m a b -> a -> m (Maybe b)
154+
[A] parTeeWith :: MonadAsync m => (Config -> Config) -> (a -> b -> c) -> Scanl m x a -> Scanl m x b -> Scanl m x c
155+
[A] parDistributeScanM :: MonadAsync m => (Config -> Config) -> m [Scanl m a b] -> Stream m a -> Stream m [b]
156+
[A] parDistributeScan :: MonadAsync m => (Config -> Config) -> [Scanl m a b] -> Stream m a -> Stream m [b]
157+
[A] parDemuxScanM :: (MonadAsync m, Ord k) => (Config -> Config) -> (a -> k) -> (k -> m (Scanl m a b)) -> Stream m a -> Stream m [(k, b)]
158+
[A] parDemuxScan :: (MonadAsync m, Ord k) => (Config -> Config) -> (a -> k) -> (k -> Scanl m a b) -> Stream m a -> Stream m [(k, b)]
159+
[A] newScanChannel :: MonadRunInIO m => (Config -> Config) -> Scanl m a b -> m (Channel m a b)
160+
[A] newChannelWithScan :: MonadRunInIO m => IORef ([OutEvent b], Int) -> MVar () -> (Config -> Config) -> Scanl m a b -> m (Channel m a b, ThreadId)
161+
[A] newChannelWith :: MonadRunInIO m => IORef ([OutEvent b], Int) -> MVar () -> (Config -> Config) -> Fold m a b -> m (Channel m a b, ThreadId)
162+
[A] newChannel :: MonadRunInIO m => (Config -> Config) -> Fold m a b -> m (Channel m a b)
163+
[A] maxBuffer :: Int -> Config -> Config
164+
[A] inspect :: Bool -> Config -> Config
165+
[A] finalize :: MonadIO m => Channel m a b -> m ()
166+
[A] dumpChannel :: Channel m a b -> IO String
167+
[A] defaultConfig :: Config
168+
[A] cleanup :: MonadIO m => Channel m a b -> m ()
169+
[A] checkFoldStatus :: MonadAsync m => Channel m a b -> m (Maybe b)
170+
[A] boundThreads :: Bool -> Config -> Config
171+
[C] Streamly.Internal.Data.Fold.Prelude
172+
[A] OutEvent
173+
[A] FoldPartial :: b -> OutEvent b
174+
[A] FoldException :: ThreadId -> SomeException -> OutEvent b
175+
[A] FoldEOF :: ThreadId -> OutEvent b
176+
[A] FoldDone :: ThreadId -> b -> OutEvent b
177+
[C] Channel
178+
[R] [readOutputQ] :: Channel m a b -> m [ChildEvent a]
179+
[A] [readInputQ] :: Channel m a b -> m [ChildEvent a]
180+
[C] [outputQueue]
181+
[O] [outputQueue] :: Channel m a b -> IORef ([ChildEvent a], Int)
182+
[N] [outputQueue] :: Channel m a b -> IORef ([OutEvent b], Int)
183+
[R] [outputQueueFromConsumer] :: Channel m a b -> IORef ([ChildEvent b], Int)
184+
[R] [outputDoorBellFromConsumer] :: Channel m a b -> MVar ()
185+
[A] [maxInputBuffer] :: Channel m a b -> Limit
186+
[R] [maxBufferLimit] :: Channel m a b -> Limit
187+
[A] [inputSpaceDoorBell] :: Channel m a b -> MVar ()
188+
[A] [inputQueue] :: Channel m a b -> IORef ([ChildEvent a], Int)
189+
[A] [inputItemDoorBell] :: Channel m a b -> MVar ()
190+
[A] [closedForInput] :: Channel m a b -> IORef Bool
191+
[R] [bufferSpaceDoorBell] :: Channel m a b -> MVar ()
192+
[C] Channel
193+
[O] Channel :: IORef ([ChildEvent a], Int) -> Limit -> MVar () -> m [ChildEvent a] -> IORef ([ChildEvent b], Int) -> MVar () -> MVar () -> Maybe (IORef ()) -> SVarStats -> Bool -> ThreadId -> Channel m a b
194+
[N] Channel :: IORef ([ChildEvent a], Int) -> Limit -> MVar () -> IORef Bool -> MVar () -> m [ChildEvent a] -> IORef ([OutEvent b], Int) -> MVar () -> Maybe (IORef ()) -> SVarStats -> Bool -> ThreadId -> Channel m a b
195+
[A] sendToWorker_ :: MonadAsync m => Channel m a b -> a -> m ()
196+
[A] parUnzipWithM :: MonadAsync m => (Config -> Config) -> (a -> m (b, c)) -> Fold m b x -> Fold m c y -> Fold m a (x, y)
197+
[A] parUnzip :: MonadAsync m => (Config -> Config) -> Fold m b x -> Fold m c y -> Fold m (b, c) (x, y)
198+
[A] parTeeWith :: MonadAsync m => (Config -> Config) -> (a -> b -> c) -> Fold m x a -> Fold m x b -> Fold m x c
199+
[A] parTee :: MonadAsync m => (Config -> Config) -> Fold m x a -> Fold m x b -> Fold m x (a, b)
200+
[A] parPartition :: MonadAsync m => (Config -> Config) -> Fold m b x -> Fold m c y -> Fold m (Either b c) (x, y)
201+
[A] parLmapM :: (Config -> Config) -> (a -> m b) -> Fold m b r -> Fold m a r
202+
[D] parEval :: MonadAsync m => (Config -> Config) -> Fold m a b -> Fold m a b
203+
[A] parDistributeScan :: MonadAsync m => (Config -> Config) -> m [Fold m a b] -> Stream m a -> Stream m [b]
204+
[A] parDistribute :: MonadAsync m => (Config -> Config) -> [Fold m a b] -> Fold m a [b]
205+
[A] parDemuxScan :: (MonadAsync m, Ord k) => (Config -> Config) -> (a -> k) -> (k -> m (Fold m a b)) -> Stream m a -> Stream m [(k, b)]
206+
[A] parBuffered :: MonadAsync m => (Config -> Config) -> Fold m a b -> Fold m a b
207+
[A] newScanChannel :: MonadRunInIO m => (Config -> Config) -> Scanl m a b -> m (Channel m a b)
208+
[A] newChannelWithScan :: MonadRunInIO m => IORef ([OutEvent b], Int) -> MVar () -> (Config -> Config) -> Scanl m a b -> m (Channel m a b, ThreadId)
209+
[A] newChannelWith :: MonadRunInIO m => IORef ([OutEvent b], Int) -> MVar () -> (Config -> Config) -> Fold m a b -> m (Channel m a b, ThreadId)
210+
[A] finalize :: MonadIO m => Channel m a b -> m ()
211+
[R] dumpSVar :: Channel m a b -> IO String
212+
[A] dumpChannel :: Channel m a b -> IO String
213+
[A] defaultConfig :: Config
214+
[A] cleanup :: MonadIO m => Channel m a b -> m ()
215+
[C] Streamly.Internal.Data.Channel
216+
[C] YieldRateInfo
217+
[R] Config
218+
[R] workerRateControl :: Limit -> IORef Int -> YieldRateInfo -> WorkerInfo -> IO Bool
219+
[R] stopWhen :: StopWhen -> Config -> Config
220+
[R] setStreamLatency :: Int -> Config -> Config
221+
[C] sendYield
222+
[O] sendYield :: Limit -> Limit -> IORef Int -> Maybe WorkerInfo -> Maybe YieldRateInfo -> IORef ([ChildEvent a], Int) -> MVar () -> ChildEvent a -> IO Bool
223+
[N] sendYield :: Limit -> Limit -> IORef Int -> Maybe YieldRateInfo -> IORef ([ChildEvent a], Int) -> MVar () -> Maybe WorkerInfo -> a -> IO Bool
224+
[R] sendWithDoorBell :: IORef ([ChildEvent a], Int) -> MVar () -> ChildEvent a -> IO Int
225+
[C] sendStop
226+
[O] sendStop :: IORef Int -> Maybe WorkerInfo -> Maybe YieldRateInfo -> IORef ([ChildEvent a], Int) -> MVar () -> IO ()
227+
[N] sendStop :: IORef Int -> Maybe YieldRateInfo -> IORef ([ChildEvent a], Int) -> MVar () -> Maybe WorkerInfo -> IO ()
228+
[A] sendException :: IORef Int -> IORef ([ChildEvent a], Int) -> MVar () -> SomeException -> IO ()
229+
[A] sendEvent :: IORef ([a], Int) -> MVar () -> a -> IO Int
230+
[C] readOutputQBasic
231+
[O] readOutputQBasic :: IORef ([ChildEvent a], Int) -> IO ([ChildEvent a], Int)
232+
[N] readOutputQBasic :: IORef ([a], Int) -> IO ([a], Int)
233+
[R] rate :: Maybe Rate -> Config -> Config
234+
[R] ordered :: Bool -> Config -> Config
235+
[R] newRateInfo :: Config -> IO (Maybe YieldRateInfo)
236+
[R] minRate :: Double -> Config -> Config
237+
[R] maxYields :: Maybe Int64 -> Config -> Config
238+
[R] maxThreads :: Int -> Config -> Config
239+
[R] maxRate :: Double -> Config -> Config
240+
[R] maxBuffer :: Int -> Config -> Config
241+
[R] interleaved :: Bool -> Config -> Config
242+
[R] inspect :: Bool -> Config -> Config
243+
[A] incrWorkerYieldCount :: Limit -> IORef Int -> YieldRateInfo -> WorkerInfo -> IO Bool
244+
[R] handleChildException :: IORef ([ChildEvent a], Int) -> MVar () -> SomeException -> IO ()
245+
[R] getYieldLimit :: Config -> Maybe Count
246+
[R] getStreamRate :: Config -> Maybe Rate
247+
[R] getStreamLatency :: Config -> Maybe NanoSecond64
248+
[R] getStopWhen :: Config -> StopWhen
249+
[R] getOrdered :: Config -> Bool
250+
[R] getMaxThreads :: Config -> Limit
251+
[R] getMaxBuffer :: Config -> Limit
252+
[R] getInterleaved :: Config -> Bool
253+
[R] getInspectMode :: Config -> Bool
254+
[R] getEagerDispatch :: Config -> Bool
255+
[R] getBound :: Config -> Bool
256+
[R] eager :: Bool -> Config -> Config
257+
[R] defaultConfig :: Config
258+
[R] constRate :: Double -> Config -> Config
259+
[R] cleanupSVar :: IORef (Set ThreadId) -> IO ()
260+
[R] boundThreads :: Bool -> Config -> Config
261+
[R] avgRate :: Double -> Config -> Config

docs/User/Project/Changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
## Unreleased
66

7+
See
8+
[0.10.1-0.11.0 API Changelog](https://github.com/composewell/streamly/blob/streamly-0.11.0/docs/User/Project/ApiChangelogs/0.10.1-0.11.0.txt)
9+
for detailed API changes in this release.
10+
711
### Breaking Changes
812

913
* Concurrent streams and folds now use separate concurrency config types. If you

0 commit comments

Comments
 (0)