Loading...
---------------------------------
API Annotations
---------------------------------

[A] : Added
[R] : Removed
[C] : Changed
[O] : Old definition
[N] : New definition
[D] : Deprecated

---------------------------------
API diff
---------------------------------

[C] Streamly.Data.Stream.Prelude
    [A] useAcquire :: AcquireIO -> Config -> Config
    [D] parEval :: MonadAsync m => (Config -> Config) -> Stream m a -> Stream m a
    [A] parCrossApply :: MonadAsync m => (Config -> Config) -> Stream m (a -> b) -> Stream m a -> Stream m b
    [A] parBuffered :: MonadAsync m => (Config -> Config) -> Stream m a -> Stream m a
    [D] parApply :: MonadAsync m => (Config -> Config) -> Stream m (a -> b) -> Stream m a -> Stream m b
    [A] clearAcquire :: Config -> Config
[A] Streamly.Data.Scanl.Prelude
    [A] Config
    [A] parTeeWith :: MonadAsync m => (Config -> Config) -> (a -> b -> c) -> Scanl m x a -> Scanl m x b -> Scanl m x c
    [A] parDistributeScanM :: MonadAsync m => (Config -> Config) -> m [Scanl m a b] -> Stream m a -> Stream m [b]
    [A] parDistributeScan :: MonadAsync m => (Config -> Config) -> [Scanl m a b] -> Stream m a -> Stream m [b]
    [A] parDemuxScanM :: (MonadAsync m, Ord k) => (Config -> Config) -> (a -> k) -> (k -> m (Scanl m a b)) -> Stream m a -> Stream m [(k, b)]
    [A] parDemuxScan :: (MonadAsync m, Ord k) => (Config -> Config) -> (a -> k) -> (k -> Scanl m a b) -> Stream m a -> Stream m [(k, b)]
    [A] maxBuffer :: Int -> Config -> Config
    [A] inspect :: Bool -> Config -> Config
    [A] boundThreads :: Bool -> Config -> Config
[C] Streamly.Data.Fold.Prelude
    [C] toHashMapIO
        [O] toHashMapIO :: (MonadIO m, Hashable k, Ord k) => (a -> k) -> Fold m a b -> Fold m a (HashMap k b)
        [N] toHashMapIO :: (MonadIO m, Hashable k) => (a -> k) -> Fold m a b -> Fold m a (HashMap k b)
    [A] parUnzip :: MonadAsync m => (Config -> Config) -> Fold m b x -> Fold m c y -> Fold m (b, c) (x, y)
    [A] parTee :: MonadAsync m => (Config -> Config) -> Fold m x a -> Fold m x b -> Fold m x (a, b)
    [A] parPartition :: MonadAsync m => (Config -> Config) -> Fold m b x -> Fold m c y -> Fold m (Either b c) (x, y)
    [D] parEval :: MonadAsync m => (Config -> Config) -> Fold m a b -> Fold m a b
    [A] parDistributeScan :: MonadAsync m => (Config -> Config) -> m [Fold m a b] -> Stream m a -> Stream m [b]
    [A] parDistribute :: MonadAsync m => (Config -> Config) -> [Fold m a b] -> Fold m a [b]
    [A] parDemuxScan :: (MonadAsync m, Ord k) => (Config -> Config) -> (a -> k) -> (k -> m (Fold m a b)) -> Stream m a -> Stream m [(k, b)]
    [A] parBuffered :: MonadAsync m => (Config -> Config) -> Fold m a b -> Fold m a b

---------------------------------
Internal API diff
---------------------------------

[C] Streamly.Internal.Network.Inet.TCP
    [A] pipeChunks :: (MonadAsync m, MonadCatch m) => (Word8, Word8, Word8, Word8) -> PortNumber -> Stream m (Array Word8) -> Stream m (Array Word8)
[D] Streamly.Internal.FileSystem.Event.Linux
[D] Streamly.Internal.FileSystem.Event
[C] Streamly.Internal.Data.Stream.Prelude
    [C] Channel
        [C] [enqueue]
            [O] [enqueue] :: Channel m a -> Bool -> (RunInIO m, StreamK m a) -> IO ()
            [N] [enqueue] :: Channel m a -> (RunInIO m, StreamK m a) -> IO ()
        [A] [channelStopping] :: Channel m a -> IORef Bool
        [A] [channelStopped] :: Channel m a -> MVar Bool
        [C] Channel
            [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
            [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
    [A] yieldWith :: Maybe WorkerInfo -> Channel m a -> a -> IO Bool
    [R] yield :: Channel m a -> Maybe WorkerInfo -> a -> IO Bool
    [A] useAcquire :: AcquireIO -> Config -> Config
    [A] timedGroupsOf :: MonadAsync m => Double -> Int -> Fold m a b -> Stream m a -> Stream m b
    [A] timedChunksOf' :: (MonadAsync m, Unbox a) => Double -> Int -> Stream m a -> Stream m (Array a)
    [A] timedChunksOf :: (MonadAsync m, Unbox a) => Double -> Int -> Stream m a -> Stream m (Array a)
    [A] stopWith :: Maybe WorkerInfo -> Channel m a -> IO ()
    [R] stopChannel :: MonadIO m => Channel m a -> m ()
    [R] stop :: Channel m a -> Maybe WorkerInfo -> IO ()
    [C] startChannel
        [O] startChannel :: MonadRunInIO m => Channel m a -> m ()
        [N] startChannel :: MonadIO m => Channel m a -> m ()
    [A] shutdown :: MonadIO m => Channel m a -> m ()
    [R] sendWorkerWait :: MonadIO m => Bool -> (Channel m a -> IO ()) -> (Channel m a -> m Bool) -> Channel m a -> m ()
    [C] readOutputQPaced
        [O] readOutputQPaced :: MonadRunInIO m => Channel m a -> m [ChildEvent a]
        [N] readOutputQPaced :: MonadIO m => Channel m a -> m [ChildEvent a]
    [C] readOutputQBounded
        [O] readOutputQBounded :: MonadRunInIO m => Bool -> Channel m a -> m [ChildEvent a]
        [N] readOutputQBounded :: MonadIO m => Bool -> Channel m a -> m [ChildEvent a]
    [R] pushWorker :: MonadRunInIO m => Count -> Channel m a -> m ()
    [C] postProcessPaced
        [O] postProcessPaced :: MonadRunInIO m => Channel m a -> m Bool
        [N] postProcessPaced :: MonadIO m => Channel m a -> m Bool
    [C] postProcessBounded
        [O] postProcessBounded :: MonadRunInIO m => Channel m a -> m Bool
        [N] postProcessBounded :: MonadIO m => Channel m a -> m Bool
    [A] parYieldWith :: (Config -> Config) -> ((a -> m b) -> m c) -> Stream m a
    [A] parMergeMap :: (Config -> Config) -> (a -> Stream m b) -> Stream m a -> Stream m b
    [A] parMergeIterate :: (Config -> Config) -> (a -> Stream m a) -> Stream m a -> Stream m a
    [D] parEval :: MonadAsync m => (Config -> Config) -> Stream m a -> Stream m a
    [A] parCrossApply :: MonadAsync m => (Config -> Config) -> Stream m (a -> b) -> Stream m a -> Stream m b
    [A] parBuffered :: MonadAsync m => (Config -> Config) -> Stream m a -> Stream m a
    [D] parApply :: MonadAsync m => (Config -> Config) -> Stream m (a -> b) -> Stream m a -> Stream m b
    [A] newStreamAndCallback :: MonadAsync m => m (a -> m (), Stream m a)
    [A] newRateInfo :: Config -> IO (Maybe YieldRateInfo)
    [A] maxYields :: Maybe Int64 -> Config -> Config
    [D] groupsOfTimeout :: MonadAsync m => Int -> Double -> Fold m a b -> Stream m a -> Stream m b
    [A] getYieldLimit :: Config -> Maybe Count
    [A] getStreamRate :: Config -> Maybe Rate
    [A] getOrdered :: Config -> Bool
    [A] getMaxThreads :: Config -> Limit
    [A] getMaxBuffer :: Config -> Limit
    [A] getInterleaved :: Config -> Bool
    [A] getInspectMode :: Config -> Bool
    [A] getEagerDispatch :: Config -> Bool
    [A] getCleanup :: Config -> Maybe (IO () -> IO ())
    [C] fromChannelK
        [O] fromChannelK :: MonadAsync m => Channel m a -> StreamK m a
        [N] fromChannelK :: MonadAsync m => Maybe (IO () -> IO ()) -> Channel m a -> StreamK m a
    [A] forkWorker :: MonadIO m => Count -> Channel m a -> m ()
    [A] exceptionWith :: Maybe WorkerInfo -> Channel m a -> SomeException -> IO ()
    [R] dumpSVar :: Channel m a -> IO String
    [A] dumpChannel :: Channel m a -> IO String
    [C] dispatchWorkerPaced
        [O] dispatchWorkerPaced :: MonadRunInIO m => Channel m a -> m Bool
        [N] dispatchWorkerPaced :: MonadIO m => Channel m a -> m Bool
    [C] dispatchWorker
        [O] dispatchWorker :: MonadRunInIO m => Count -> Channel m a -> m Bool
        [N] dispatchWorker :: MonadIO m => Count -> Channel m a -> m Bool
    [A] dispatchAllWait :: MonadIO m => Bool -> (Channel m a -> IO ()) -> (Channel m a -> m Bool) -> Channel m a -> m ()
    [A] clearAcquire :: Config -> Config
    [A] cleanupChan :: Channel m a -> String -> IO ()
    [A] channelDone :: Channel m a -> String -> IO ()
    [A] chanConcatMapK :: MonadAsync m => (Config -> Config) -> Channel m b -> (a -> StreamK m b) -> StreamK m a -> StreamK m b
    [A] boundedIntervalsOf :: Int -> Double -> Int -> Fold m a b -> Stream m a -> Stream m b
    [A] boundThreads :: Bool -> Config -> Config
[A] Streamly.Internal.Data.Scanl.Prelude
    [A] OutEvent
        [A] FoldPartial :: b -> OutEvent b
        [A] FoldException :: ThreadId -> SomeException -> OutEvent b
        [A] FoldEOF :: ThreadId -> OutEvent b
        [A] FoldDone :: ThreadId -> b -> OutEvent b
    [A] Config
    [A] Channel
        [A] [svarStats] :: Channel m a b -> SVarStats
        [A] [svarRef] :: Channel m a b -> Maybe (IORef ())
        [A] [svarInspectMode] :: Channel m a b -> Bool
        [A] [svarCreator] :: Channel m a b -> ThreadId
        [A] [readInputQ] :: Channel m a b -> m [ChildEvent a]
        [A] [outputQueue] :: Channel m a b -> IORef ([OutEvent b], Int)
        [A] [outputDoorBell] :: Channel m a b -> MVar ()
        [A] [maxInputBuffer] :: Channel m a b -> Limit
        [A] [inputSpaceDoorBell] :: Channel m a b -> MVar ()
        [A] [inputQueue] :: Channel m a b -> IORef ([ChildEvent a], Int)
        [A] [inputItemDoorBell] :: Channel m a b -> MVar ()
        [A] [closedForInput] :: Channel m a b -> IORef Bool
        [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
    [A] sendToWorker_ :: MonadAsync m => Channel m a b -> a -> m ()
    [A] sendToWorker :: MonadAsync m => Channel m a b -> a -> m (Maybe b)
    [A] parTeeWith :: MonadAsync m => (Config -> Config) -> (a -> b -> c) -> Scanl m x a -> Scanl m x b -> Scanl m x c
    [A] parDistributeScanM :: MonadAsync m => (Config -> Config) -> m [Scanl m a b] -> Stream m a -> Stream m [b]
    [A] parDistributeScan :: MonadAsync m => (Config -> Config) -> [Scanl m a b] -> Stream m a -> Stream m [b]
    [A] parDemuxScanM :: (MonadAsync m, Ord k) => (Config -> Config) -> (a -> k) -> (k -> m (Scanl m a b)) -> Stream m a -> Stream m [(k, b)]
    [A] parDemuxScan :: (MonadAsync m, Ord k) => (Config -> Config) -> (a -> k) -> (k -> Scanl m a b) -> Stream m a -> Stream m [(k, b)]
    [A] newScanChannel :: MonadRunInIO m => (Config -> Config) -> Scanl m a b -> m (Channel m a b)
    [A] newChannelWithScan :: MonadRunInIO m => IORef ([OutEvent b], Int) -> MVar () -> (Config -> Config) -> Scanl m a b -> m (Channel m a b, ThreadId)
    [A] newChannelWith :: MonadRunInIO m => IORef ([OutEvent b], Int) -> MVar () -> (Config -> Config) -> Fold m a b -> m (Channel m a b, ThreadId)
    [A] newChannel :: MonadRunInIO m => (Config -> Config) -> Fold m a b -> m (Channel m a b)
    [A] maxBuffer :: Int -> Config -> Config
    [A] inspect :: Bool -> Config -> Config
    [A] finalize :: MonadIO m => Channel m a b -> m ()
    [A] dumpChannel :: Channel m a b -> IO String
    [A] defaultConfig :: Config
    [A] cleanup :: MonadIO m => Channel m a b -> m ()
    [A] checkFoldStatus :: MonadAsync m => Channel m a b -> m (Maybe b)
    [A] boundThreads :: Bool -> Config -> Config
[C] Streamly.Internal.Data.Fold.Prelude
    [A] OutEvent
        [A] FoldPartial :: b -> OutEvent b
        [A] FoldException :: ThreadId -> SomeException -> OutEvent b
        [A] FoldEOF :: ThreadId -> OutEvent b
        [A] FoldDone :: ThreadId -> b -> OutEvent b
    [C] Channel
        [R] [readOutputQ] :: Channel m a b -> m [ChildEvent a]
        [A] [readInputQ] :: Channel m a b -> m [ChildEvent a]
        [C] [outputQueue]
            [O] [outputQueue] :: Channel m a b -> IORef ([ChildEvent a], Int)
            [N] [outputQueue] :: Channel m a b -> IORef ([OutEvent b], Int)
        [R] [outputQueueFromConsumer] :: Channel m a b -> IORef ([ChildEvent b], Int)
        [R] [outputDoorBellFromConsumer] :: Channel m a b -> MVar ()
        [A] [maxInputBuffer] :: Channel m a b -> Limit
        [R] [maxBufferLimit] :: Channel m a b -> Limit
        [A] [inputSpaceDoorBell] :: Channel m a b -> MVar ()
        [A] [inputQueue] :: Channel m a b -> IORef ([ChildEvent a], Int)
        [A] [inputItemDoorBell] :: Channel m a b -> MVar ()
        [A] [closedForInput] :: Channel m a b -> IORef Bool
        [R] [bufferSpaceDoorBell] :: Channel m a b -> MVar ()
        [C] Channel
            [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
            [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
    [A] sendToWorker_ :: MonadAsync m => Channel m a b -> a -> m ()
    [A] parUnzipWithM :: MonadAsync m => (Config -> Config) -> (a -> m (b, c)) -> Fold m b x -> Fold m c y -> Fold m a (x, y)
    [A] parUnzip :: MonadAsync m => (Config -> Config) -> Fold m b x -> Fold m c y -> Fold m (b, c) (x, y)
    [A] parTeeWith :: MonadAsync m => (Config -> Config) -> (a -> b -> c) -> Fold m x a -> Fold m x b -> Fold m x c
    [A] parTee :: MonadAsync m => (Config -> Config) -> Fold m x a -> Fold m x b -> Fold m x (a, b)
    [A] parPartition :: MonadAsync m => (Config -> Config) -> Fold m b x -> Fold m c y -> Fold m (Either b c) (x, y)
    [A] parLmapM :: (Config -> Config) -> (a -> m b) -> Fold m b r -> Fold m a r
    [D] parEval :: MonadAsync m => (Config -> Config) -> Fold m a b -> Fold m a b
    [A] parDistributeScan :: MonadAsync m => (Config -> Config) -> m [Fold m a b] -> Stream m a -> Stream m [b]
    [A] parDistribute :: MonadAsync m => (Config -> Config) -> [Fold m a b] -> Fold m a [b]
    [A] parDemuxScan :: (MonadAsync m, Ord k) => (Config -> Config) -> (a -> k) -> (k -> m (Fold m a b)) -> Stream m a -> Stream m [(k, b)]
    [A] parBuffered :: MonadAsync m => (Config -> Config) -> Fold m a b -> Fold m a b
    [A] newScanChannel :: MonadRunInIO m => (Config -> Config) -> Scanl m a b -> m (Channel m a b)
    [A] newChannelWithScan :: MonadRunInIO m => IORef ([OutEvent b], Int) -> MVar () -> (Config -> Config) -> Scanl m a b -> m (Channel m a b, ThreadId)
    [A] newChannelWith :: MonadRunInIO m => IORef ([OutEvent b], Int) -> MVar () -> (Config -> Config) -> Fold m a b -> m (Channel m a b, ThreadId)
    [A] finalize :: MonadIO m => Channel m a b -> m ()
    [R] dumpSVar :: Channel m a b -> IO String
    [A] dumpChannel :: Channel m a b -> IO String
    [A] defaultConfig :: Config
    [A] cleanup :: MonadIO m => Channel m a b -> m ()
[C] Streamly.Internal.Data.Channel
    [C] YieldRateInfo
    [R] Config
    [R] workerRateControl :: Limit -> IORef Int -> YieldRateInfo -> WorkerInfo -> IO Bool
    [R] stopWhen :: StopWhen -> Config -> Config
    [R] setStreamLatency :: Int -> Config -> Config
    [C] sendYield
        [O] sendYield :: Limit -> Limit -> IORef Int -> Maybe WorkerInfo -> Maybe YieldRateInfo -> IORef ([ChildEvent a], Int) -> MVar () -> ChildEvent a -> IO Bool
        [N] sendYield :: Limit -> Limit -> IORef Int -> Maybe YieldRateInfo -> IORef ([ChildEvent a], Int) -> MVar () -> Maybe WorkerInfo -> a -> IO Bool
    [R] sendWithDoorBell :: IORef ([ChildEvent a], Int) -> MVar () -> ChildEvent a -> IO Int
    [C] sendStop
        [O] sendStop :: IORef Int -> Maybe WorkerInfo -> Maybe YieldRateInfo -> IORef ([ChildEvent a], Int) -> MVar () -> IO ()
        [N] sendStop :: IORef Int -> Maybe YieldRateInfo -> IORef ([ChildEvent a], Int) -> MVar () -> Maybe WorkerInfo -> IO ()
    [A] sendException :: IORef Int -> IORef ([ChildEvent a], Int) -> MVar () -> SomeException -> IO ()
    [A] sendEvent :: IORef ([a], Int) -> MVar () -> a -> IO Int
    [C] readOutputQBasic
        [O] readOutputQBasic :: IORef ([ChildEvent a], Int) -> IO ([ChildEvent a], Int)
        [N] readOutputQBasic :: IORef ([a], Int) -> IO ([a], Int)
    [R] rate :: Maybe Rate -> Config -> Config
    [R] ordered :: Bool -> Config -> Config
    [R] newRateInfo :: Config -> IO (Maybe YieldRateInfo)
    [R] minRate :: Double -> Config -> Config
    [R] maxYields :: Maybe Int64 -> Config -> Config
    [R] maxThreads :: Int -> Config -> Config
    [R] maxRate :: Double -> Config -> Config
    [R] maxBuffer :: Int -> Config -> Config
    [R] interleaved :: Bool -> Config -> Config
    [R] inspect :: Bool -> Config -> Config
    [A] incrWorkerYieldCount :: Limit -> IORef Int -> YieldRateInfo -> WorkerInfo -> IO Bool
    [R] handleChildException :: IORef ([ChildEvent a], Int) -> MVar () -> SomeException -> IO ()
    [R] getYieldLimit :: Config -> Maybe Count
    [R] getStreamRate :: Config -> Maybe Rate
    [R] getStreamLatency :: Config -> Maybe NanoSecond64
    [R] getStopWhen :: Config -> StopWhen
    [R] getOrdered :: Config -> Bool
    [R] getMaxThreads :: Config -> Limit
    [R] getMaxBuffer :: Config -> Limit
    [R] getInterleaved :: Config -> Bool
    [R] getInspectMode :: Config -> Bool
    [R] getEagerDispatch :: Config -> Bool
    [R] getBound :: Config -> Bool
    [R] eager :: Bool -> Config -> Config
    [R] defaultConfig :: Config
    [R] constRate :: Double -> Config -> Config
    [R] cleanupSVar :: IORef (Set ThreadId) -> IO ()
    [R] boundThreads :: Bool -> Config -> Config
    [R] avgRate :: Double -> Config -> Config