conduit 1.2.0.2 → 1.2.1
raw patch · 5 files changed
+39/−1 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.Conduit: runConduit :: Monad m => ConduitM () Void m r -> m r
+ Data.Conduit.Internal: runConduit :: Monad m => ConduitM () Void m r -> m r
Files
- Data/Conduit.hs +1/−0
- Data/Conduit/Internal/Conduit.hs +8/−0
- Data/Conduit/Internal/Fusion.hs +22/−0
- benchmarks/unfused.hs +7/−0
- conduit.cabal +1/−1
Data/Conduit.hs view
@@ -24,6 +24,7 @@ , await , yield , leftover+ , runConduit -- ** Finalization , bracketP
Data/Conduit/Internal/Conduit.hs view
@@ -30,6 +30,7 @@ , yieldM , yieldOr , leftover+ , runConduit -- ** Composition , connectResume , connectResumeConduit@@ -829,6 +830,13 @@ leftover :: i -> ConduitM i o m () leftover i = ConduitM $ \rest -> Leftover (rest ()) i {-# INLINE leftover #-}++-- | Run a pipeline until processing completes.+--+-- Since 1.2.1+runConduit :: Monad m => ConduitM () Void m r -> m r+runConduit (ConduitM p) = runPipe $ injectLeftovers $ p Done+{-# INLINE [0] runConduit #-} -- | Perform some allocation and run an inner component. Two guarantees are -- given about resource finalization:
Data/Conduit/Internal/Fusion.hs view
@@ -51,6 +51,28 @@ unstream left =$= unstream right = unstream (fuseStream left right) #-} +runStream :: Monad m+ => StreamConduit () Void m r+ -> m r+runStream (StreamConduit _ f) =+ run $ f $ Stream emptyStep (return ())+ where+ emptyStep _ = return $ Stop ()+ run (Stream step ms0) =+ ms0 >>= loop+ where+ loop s = do+ res <- step s+ case res of+ Stop r -> return r+ Skip s' -> loop s'+ Emit _ o -> absurd o+{-# INLINE runStream #-}++{-# RULES "runStream" forall stream.+ runConduit (unstream stream) = runStream stream+ #-}+ connectStream :: Monad m => StreamConduit () i m () -> StreamConduit i Void m r
benchmarks/unfused.hs view
@@ -42,6 +42,13 @@ $$ CL.map (* 2) =$ CL.map (+ 1) =$ CL.fold (+) 0+ , bench "runConduit, completely fused" $ flip whnf upper0 $ \upper ->+ runIdentity+ $ runConduit+ $ CL.enumFromTo 1 upper+ =$= CL.map (* 2)+ =$= CL.map (+ 1)+ =$= CL.fold (+) 0 , bench "completely unfused" $ flip whnf upper0 $ \upper -> runIdentity $ enumFromToC 1 upper
conduit.cabal view
@@ -1,5 +1,5 @@ Name: conduit-Version: 1.2.0.2+Version: 1.2.1 Synopsis: Streaming data processing library. Description: @conduit@ is a solution to the streaming data problem, allowing for production, transformation, and consumption of streams of data in constant memory. It is an alternative to lazy I\/O which guarantees deterministic resource handling, and fits in the same general solution space as @enumerator@\/@iteratee@ and @pipes@. For a tutorial, please visit <https://haskell.fpcomplete.com/user/snoyberg/library-documentation/conduit-overview>.