@@ -104,7 +104,6 @@ import qualified Control.Monad.Catch as MC
104104import qualified System.IO as SIO
105105
106106import Streamly.Data.Fold (chunksOf, drain)
107−import Streamly.Internal.Control.Concurrent (MonadAsync)
108107import Streamly.Internal.Data.Array.Unboxed.Type (Array(..), writeNUnsafe)
109108import Streamly.Internal.Data.Fold.Type (Fold(..))
110109import Streamly.Data.Stream (Stream)
@@ -148,7 +147,7 @@ import qualified Streamly.Data.Stream as S (fold, bracketIO, mapM)
148147-- /Pre-release/
149148--
150149{-# INLINE withFile #-}
151−withFile :: (MonadCatch m, MonadAsync m)
150+withFile :: (MonadCatch m, MonadIO m)
152151 => FilePath -> IOMode -> (Handle -> Stream m a) -> Stream m a
153152withFile file mode = S.bracketIO (openFile file mode) hClose
154153
@@ -161,12 +160,12 @@ withFile file mode = S.bracketIO (openFile file mode) hClose
161160-- /Pre-release/
162161--
163162{-# INLINE usingFile #-}
164−usingFile :: (MonadCatch m, MonadAsync m)
163+usingFile :: (MonadCatch m, MonadIO m)
165164 => Unfold m Handle a -> Unfold m FilePath a
166165usingFile = UF.bracketIO (`openFile` ReadMode) hClose
167166
168167{-# INLINE usingFile2 #-}
169−usingFile2 :: (MonadCatch m, MonadAsync m)
168+usingFile2 :: (MonadCatch m, MonadIO m)
170169 => Unfold m (x, Handle) a -> Unfold m (x, FilePath) a
171170usingFile2 = UF.bracketIO before after
172171
@@ -179,7 +178,7 @@ usingFile2 = UF.bracketIO before after
179178 after (_, h) = hClose h
180179
181180{-# INLINE usingFile3 #-}
182−usingFile3 :: (MonadCatch m, MonadAsync m)
181+usingFile3 :: (MonadCatch m, MonadIO m)
183182 => Unfold m (x, y, z, Handle) a -> Unfold m (x, y, z, FilePath) a
184183usingFile3 = UF.bracketIO before after
185184
@@ -225,14 +224,14 @@ appendArray file arr = SIO.withFile file AppendMode (`FH.putChunk` arr)
225224--
226225-- @since 0.9.0
227226{-# INLINE readChunksWith #-}
228−readChunksWith :: (MonadCatch m, MonadAsync m)
227+readChunksWith :: (MonadCatch m, MonadIO m)
229228 => Int -> FilePath -> Stream m (Array Word8)
230229readChunksWith size file =
231230 withFile file ReadMode (FH.readChunksWith size)
232231
233232{-# DEPRECATED toChunksWithBufferOf "Please use 'readChunksWith' instead" #-}
234233{-# INLINE toChunksWithBufferOf #-}
235−toChunksWithBufferOf :: (MonadCatch m, MonadAsync m)
234+toChunksWithBufferOf :: (MonadCatch m, MonadIO m)
236235 => Int -> FilePath -> Stream m (Array Word8)
237236toChunksWithBufferOf = readChunksWith
238237
@@ -246,13 +245,13 @@ toChunksWithBufferOf = readChunksWith
246245--
247246-- @since 0.7.0
248247{-# INLINE readChunks #-}
249−readChunks :: (MonadCatch m, MonadAsync m)
248+readChunks :: (MonadCatch m, MonadIO m)
250249 => FilePath -> Stream m (Array Word8)
251250readChunks = readChunksWith defaultChunkSize
252251
253252{-# DEPRECATED toChunks "Please use 'readChunks' instead" #-}
254253{-# INLINE toChunks #-}
255−toChunks :: (MonadCatch m, MonadAsync m) => FilePath -> Stream m (Array Word8)
254+toChunks :: (MonadCatch m, MonadIO m) => FilePath -> Stream m (Array Word8)
256255toChunks = readChunks
257256
258257-------------------------------------------------------------------------------
@@ -271,14 +270,14 @@ toChunks = readChunks
271270-- /Pre-release/
272271--
273272{-# INLINE chunkReaderWith #-}
274−chunkReaderWith :: (MonadCatch m, MonadAsync m)
273+chunkReaderWith :: (MonadCatch m, MonadIO m)
275274 => Unfold m (Int, FilePath) (Array Word8)
276275chunkReaderWith = usingFile2 FH.chunkReaderWith
277276
278277{-# DEPRECATED readChunksWithBufferOf
279278 "Please use 'chunkReaderWith' instead" #-}
280279{-# INLINE readChunksWithBufferOf #-}
281−readChunksWithBufferOf :: (MonadCatch m, MonadAsync m)
280+readChunksWithBufferOf :: (MonadCatch m, MonadIO m)
282281 => Unfold m (Int, FilePath) (Array Word8)
283282readChunksWithBufferOf = chunkReaderWith
284283
@@ -291,14 +290,14 @@ readChunksWithBufferOf = chunkReaderWith
291290--
292291-- /Pre-release/
293292{-# INLINE chunkReaderFromToWith #-}
294−chunkReaderFromToWith :: (MonadCatch m, MonadAsync m) =>
293+chunkReaderFromToWith :: (MonadCatch m, MonadIO m) =>
295294 Unfold m (Int, Int, Int, FilePath) (Array Word8)
296295chunkReaderFromToWith = usingFile3 FH.chunkReaderFromToWith
297296
298297{-# DEPRECATED readChunksFromToWith
299298 "Please use 'chunkReaderFromToWith' instead" #-}
300299{-# INLINE readChunksFromToWith #-}
301−readChunksFromToWith :: (MonadCatch m, MonadAsync m) =>
300+readChunksFromToWith :: (MonadCatch m, MonadIO m) =>
302301 Unfold m (Int, Int, Int, FilePath) (Array Word8)
303302readChunksFromToWith = chunkReaderFromToWith
304303
@@ -310,7 +309,7 @@ readChunksFromToWith = chunkReaderFromToWith
310309--
311310-- /Pre-release/
312311{-# INLINE chunkReader #-}
313−chunkReader :: (MonadCatch m, MonadAsync m) => Unfold m FilePath (Array Word8)
312+chunkReader :: (MonadCatch m, MonadIO m) => Unfold m FilePath (Array Word8)
314313chunkReader = usingFile FH.chunkReader
315314
316315-- | Unfolds the tuple @(bufsize, filepath)@ into a byte stream, read requests
@@ -318,12 +317,12 @@ chunkReader = usingFile FH.chunkReader
318317--
319318-- /Pre-release/
320319{-# INLINE readerWith #-}
321−readerWith :: (MonadCatch m, MonadAsync m) => Unfold m (Int, FilePath) Word8
320+readerWith :: (MonadCatch m, MonadIO m) => Unfold m (Int, FilePath) Word8
322321readerWith = usingFile2 FH.readerWith
323322
324323{-# DEPRECATED readWithBufferOf "Please use 'readerWith' instead" #-}
325324{-# INLINE readWithBufferOf #-}
326−readWithBufferOf :: (MonadCatch m, MonadAsync m) =>
325+readWithBufferOf :: (MonadCatch m, MonadIO m) =>
327326 Unfold m (Int, FilePath) Word8
328327readWithBufferOf = readerWith
329328
@@ -333,7 +332,7 @@ readWithBufferOf = readerWith
333332--
334333-- /Pre-release/
335334{-# INLINE reader #-}
336−reader :: (MonadCatch m, MonadAsync m) => Unfold m FilePath Word8
335+reader :: (MonadCatch m, MonadIO m) => Unfold m FilePath Word8
337336reader = UF.many A.reader (usingFile FH.chunkReader)
338337
339338-- | Generate a stream of bytes from a file specified by path. The stream ends
@@ -343,12 +342,12 @@ reader = UF.many A.reader (usingFile FH.chunkReader)
343342-- /Pre-release/
344343--
345344{-# INLINE read #-}
346−read :: (MonadCatch m, MonadAsync m) => FilePath -> Stream m Word8
345+read :: (MonadCatch m, MonadIO m) => FilePath -> Stream m Word8
347346read file = AS.concat $ withFile file ReadMode FH.readChunks
348347
349348{-# DEPRECATED toBytes "Please use 'read' instead" #-}
350349{-# INLINE toBytes #-}
351−toBytes :: (MonadCatch m, MonadAsync m) => FilePath -> Stream m Word8
350+toBytes :: (MonadCatch m, MonadIO m) => FilePath -> Stream m Word8
352351toBytes = read
353352
354353{-
@@ -367,7 +366,7 @@ readShared = undefined
367366-------------------------------------------------------------------------------
368367
369368{-# INLINE fromChunksMode #-}
370−fromChunksMode :: (MonadAsync m, MonadCatch m)
369+fromChunksMode :: (MonadIO m, MonadCatch m)
371370 => IOMode -> FilePath -> Stream m (Array a) -> m ()
372371fromChunksMode mode file xs = S.fold drain $
373372 withFile file mode (\h -> S.mapM (FH.putChunk h) xs)
@@ -376,7 +375,7 @@ fromChunksMode mode file xs = S.fold drain $
376375--
377376-- @since 0.7.0
378377{-# INLINE fromChunks #-}
379−fromChunks :: (MonadAsync m, MonadCatch m)
378+fromChunks :: (MonadIO m, MonadCatch m)
380379 => FilePath -> Stream m (Array a) -> m ()
381380fromChunks = fromChunksMode WriteMode
382381
@@ -394,13 +393,13 @@ fromChunks = fromChunksMode WriteMode
394393--
395394-- @since 0.9.0
396395{-# INLINE fromBytesWith #-}
397−fromBytesWith :: (MonadAsync m, MonadCatch m)
396+fromBytesWith :: (MonadIO m, MonadCatch m)
398397 => Int -> FilePath -> Stream m Word8 -> m ()
399398fromBytesWith n file xs = fromChunks file $ AS.arraysOf n xs
400399
401400{-# DEPRECATED fromBytesWithBufferOf "Please use 'fromBytesWith' instead" #-}
402401{-# INLINE fromBytesWithBufferOf #-}
403−fromBytesWithBufferOf :: (MonadAsync m, MonadCatch m)
402+fromBytesWithBufferOf :: (MonadIO m, MonadCatch m)
404403 => Int -> FilePath -> Stream m Word8 -> m ()
405404fromBytesWithBufferOf = fromBytesWith
406405
@@ -413,7 +412,7 @@ fromBytesWithBufferOf = fromBytesWith
413412--
414413-- /Pre-release/
415414{-# INLINE fromBytes #-}
416−fromBytes :: (MonadAsync m, MonadCatch m) => FilePath -> Stream m Word8 -> m ()
415+fromBytes :: (MonadIO m, MonadCatch m) => FilePath -> Stream m Word8 -> m ()
417416fromBytes = fromBytesWith defaultChunkSize
418417
419418{-
@@ -479,7 +478,7 @@ write = writeWith defaultChunkSize
479478--
480479-- @since 0.7.0
481480{-# INLINE appendChunks #-}
482−appendChunks :: (MonadAsync m, MonadCatch m)
481+appendChunks :: (MonadIO m, MonadCatch m)
483482 => FilePath -> Stream m (Array a) -> m ()
484483appendChunks = fromChunksMode AppendMode
485484
@@ -489,7 +488,7 @@ appendChunks = fromChunksMode AppendMode
489488--
490489-- @since 0.9.0
491490{-# INLINE appendWith #-}
492−appendWith :: (MonadAsync m, MonadCatch m)
491+appendWith :: (MonadIO m, MonadCatch m)
493492 => Int -> FilePath -> Stream m Word8 -> m ()
494493appendWith n file xs = appendChunks file $ AS.arraysOf n xs
495494
@@ -500,7 +499,7 @@ appendWith n file xs = appendChunks file $ AS.arraysOf n xs
500499--
501500-- @since 0.7.0
502501{-# INLINE append #-}
503−append :: (MonadAsync m, MonadCatch m) => FilePath -> Stream m Word8 -> m ()
502+append :: (MonadIO m, MonadCatch m) => FilePath -> Stream m Word8 -> m ()
504503append = appendWith defaultChunkSize
505504
506505{-