@@ -0,0 +1,250 @@
1+# Release 0.8.0 vs release 0.7.3
2+# API diff generated by cabal-diff with some edits.
3+# ~~~ deprecated module
4+# ~~ deprecated symbol
5+
6+# Deprecated, merged into Streamly.Prelude
7+~~~ Streamly
8+# Fixity changes
9+++ infixr 6 `ahead`
10+++ infixr 6 `async`
11+++ infixr 6 `parallel`
12+++ infixr 6 `serial`
13+++ infixr 6 `wAsync`
14+++ infixr 6 `wSerial`
15+
16+# Added
17+@@@ Streamly.Console.Stdio
18+
19+# Deprecated, renamed
20+~~~ Streamly.Memory.Array
21+@@@ Streamly.Data.Array.Foreign
22+
23+# Moved from Streamly.Memory.Array
24+++ data Array a
25+++ fromList :: Storable a => [a] -> Array a
26+++ fromListN :: Storable a => Int -> [a] -> Array a
27+++ length :: forall a. Storable a => Array a -> Int
28+++ read :: forall m a. (Monad m, Storable a) => Unfold m (Array a) a
29+++ toList :: Storable a => Array a -> [a]
30+++ write :: forall m a. (MonadIO m, Storable a) => Fold m a (Array a)
31+++ writeN :: forall m a. (MonadIO m, Storable a) => Int -> Fold m a (Array a)
32+
33+# Added
34+++ asBytes :: Array a -> Array Word8
35+++ cast :: forall a b. Storable b => Array a -> Maybe (Array b)
36+++ getIndex :: Storable a => Array a -> Int -> Maybe a
37+++ readRev :: forall m a. (Monad m, Storable a) => Unfold m (Array a) a
38+++ writeLastN :: (Storable a, MonadIO m) => Int -> Fold m a (Array a)
39+
40+@@@ Streamly.Data.Fold
41+# Signature changed
42+ - product :: (Monad m, Num a) => Fold m a a
43+ + product :: (Monad m, Num a, Eq a) => Fold m a a
44+
45+# Removed (Moved to the Streamly.Data.Fold.Tee module)
46+-- instance (Monad m, Floating b) => Floating (Fold m a b)
47+-- instance (Monad m, GHC.Num.Num b) => GHC.Num.Num (Fold m a b)
48+-- instance (Monad m, GHC.Real.Fractional b) => GHC.Real.Fractional (Fold m a b)
49+-- instance (Semigroup b, Monad m) => Semigroup (Fold m a b)
50+-- instance (Semigroup b, Monoid b, Monad m) => Monoid (Fold m a b)
51+-- instance Applicative m => Applicative (Fold m a)
52+
53+# Renamed
54+~~ mapM :: Monad m => (b -> m c) -> Fold m a b -> Fold m a c
55+++ rmapM :: Monad m => (b -> m c) -> Fold m a b -> Fold m a c
56+
57+# Deprecated
58+~~ sequence :: Monad m => Fold m a (m b) -> Fold m a b
59+
60+# Added
61+++ catMaybes :: Monad m => Fold m a b -> Fold m (Maybe a) b
62+++ chunksOf :: Monad m => Int -> Fold m a b -> Fold m b c -> Fold m a c
63+++ concatMap :: Monad m => (b -> Fold m a c) -> Fold m a b -> Fold m a c
64+++ filter :: Monad m => (a -> Bool) -> Fold m a r -> Fold m a r
65+++ filterM :: Monad m => (a -> m Bool) -> Fold m a r -> Fold m a r
66+++ foldl' :: Monad m => (b -> a -> b) -> b -> Fold m a b
67+++ foldlM' :: Monad m => (b -> a -> m b) -> m b -> Fold m a b
68+++ foldr :: Monad m => (a -> b -> b) -> b -> Fold m a b
69+++ lmap :: (a -> b) -> Fold m b r -> Fold m a r
70+++ lmapM :: Monad m => (a -> m b) -> Fold m b r -> Fold m a r
71+++ many :: Monad m => Fold m a b -> Fold m b c -> Fold m a c
72+++ mapMaybe :: Monad m => (a -> Maybe b) -> Fold m b r -> Fold m a r
73+++ rollingHash :: (Monad m, Enum a) => Fold m a Int64
74+++ rollingHashWithSalt :: (Monad m, Enum a) => Int64 -> Fold m a Int64
75+++ sconcat :: (Monad m, Semigroup a) => a -> Fold m a a
76+++ serialWith :: Monad m => (a -> b -> c) -> Fold m x a -> Fold m x b -> Fold m x c
77+++ take :: Monad m => Int -> Fold m a b -> Fold m a b
78+++ takeEndBy :: Monad m => (a -> Bool) -> Fold m a b -> Fold m a b
79+++ takeEndBy_ :: Monad m => (a -> Bool) -> Fold m a b -> Fold m a b
80+++ teeWith :: Monad m => (a -> b -> c) -> Fold m x a -> Fold m x b -> Fold m x c
81+++ toListRev :: Monad m => Fold m a [a]
82+
83+# Added
84+@@@ Streamly.Data.Fold.Tee
85+
86+@@@ Streamly.Data.Unfold
87+# Added
88+++ crossWith :: Monad m => (b -> c -> d) -> Unfold m a b -> Unfold m a c -> Unfold m a d
89+++ drop :: Monad m => Int -> Unfold m a b -> Unfold m a b
90+++ dropWhile :: Monad m => (b -> Bool) -> Unfold m a b -> Unfold m a b
91+++ dropWhileM :: Monad m => (b -> m Bool) -> Unfold m a b -> Unfold m a b
92+++ filter :: Monad m => (b -> Bool) -> Unfold m a b -> Unfold m a b
93+++ filterM :: Monad m => (b -> m Bool) -> Unfold m a b -> Unfold m a b
94+++ fromList :: Monad m => Unfold m [a] a
95+++ fromListM :: Monad m => Unfold m [m a] a
96+++ fromStream :: (IsStream t, Monad m) => Unfold m (t m a) a
97+++ function :: Applicative m => (a -> b) -> Unfold m a b
98+++ functionM :: Applicative m => (a -> m b) -> Unfold m a b
99+++ iterateM :: Monad m => (a -> m a) -> Unfold m (m a) a
100+++ lmap :: (a -> c) -> Unfold m c b -> Unfold m a b
101+++ lmapM :: Monad m => (a -> m c) -> Unfold m c b -> Unfold m a b
102+++ many :: Monad m => Unfold m a b -> Unfold m b c -> Unfold m a c
103+++ mapM :: Monad m => (b -> m c) -> Unfold m a b -> Unfold m a c
104+++ repeatM :: Monad m => Unfold m (m a) a
105+++ replicateM :: Monad m => Int -> Unfold m (m a) a
106+++ take :: Monad m => Int -> Unfold m a b -> Unfold m a b
107+++ takeWhile :: Monad m => (b -> Bool) -> Unfold m a b -> Unfold m a b
108+++ takeWhileM :: Monad m => (b -> m Bool) -> Unfold m a b -> Unfold m a b
109+++ unfoldr :: Applicative m => (a -> Maybe (b, a)) -> Unfold m a b
110+++ unfoldrM :: Applicative m => (a -> m (Maybe (b, a))) -> Unfold m a b
111+++ zipWith :: Monad m => (b -> c -> d) -> Unfold m a b -> Unfold m a c -> Unfold m a d
112+
113+# Deprecated, renamed to Streamly.Unicode.Stream
114+~~~ Streamly.Data.Unicode.Stream
115+
116+@@@ Streamly.Network.Socket
117+# Added
118+++ forSocketM :: (MonadMask m, MonadIO m) => (Socket -> m ()) -> Socket -> m ()
119+++ readChunk :: Int -> Socket -> IO (Array Word8)
120+++ writeChunk :: Storable a => Socket -> Array a -> IO ()
121+++ writeChunksWithBufferOf :: (MonadIO m, Storable a) => Int -> Socket -> Fold m (Array a) ()
122+
123+@@@ Streamly.Prelude
124+# Signature changed
125+ - after :: (IsStream t, Monad m) => m b -> t m a -> t m a
126+ + after :: (IsStream t, MonadIO m, MonadBaseControl IO m) => m b -> t m a -> t m a
127+ - bracket :: (IsStream t, MonadCatch m) => m b -> (b -> m c) -> (b -> t m a) -> t m a
128+ + bracket :: (IsStream t, MonadAsync m, MonadCatch m) => m b -> (b -> m c) -> (b -> t m a) -> t m a
129+ - concatMapWith :: IsStream t => (forall c. t m c -> t m c -> t m c) -> (a -> t m b) -> t m a -> t m b
130+ + concatMapWith :: IsStream t => (t m b -> t m b -> t m b) -> (a -> t m b) -> t m a -> t m b
131+ - finally :: (IsStream t, MonadCatch m) => m b -> t m a -> t m a
132+ + finally :: (IsStream t, MonadAsync m, MonadCatch m) => m b -> t m a -> t m a
133+ - foldlM' :: Monad m => (b -> a -> m b) -> b -> SerialT m a -> m b
134+ + foldlM' :: Monad m => (b -> a -> m b) -> m b -> SerialT m a -> m b
135+ - postscanlM' :: (IsStream t, Monad m) => (b -> a -> m b) -> b -> t m a -> t m b
136+ + postscanlM' :: (IsStream t, Monad m) => (b -> a -> m b) -> m b -> t m a -> t m b
137+ - scanlM' :: (IsStream t, Monad m) => (b -> a -> m b) -> b -> t m a -> t m b
138+ + scanlM' :: (IsStream t, Monad m) => (b -> a -> m b) -> m b -> t m a -> t m b
139+
140+# Renamed
141+~~ yieldM :: (Monad m, IsStream t) => m a -> t m a
142+++ fromEffect :: (Monad m, IsStream t) => m a -> t m a
143+~~ yield :: IsStream t => a -> t m a
144+++ fromPure :: IsStream t => a -> t m a
145+~~ concatUnfold :: (IsStream t, Monad m) => Unfold m a b -> t m a -> t m b
146+++ unfoldMany :: (IsStream t, Monad m) => Unfold m a b -> t m a -> t m b
147+
148+# Moved from "Streamly" module
149+## Fixity change
150+++ infixr 6 `ahead`
151+++ infixr 6 `async`
152+++ infixr 6 `parallel`
153+++ infixr 6 `serial`
154+++ infixr 6 `wAsync`
155+++ infixr 6 `wSerial`
156+## Renamed
157+~~ foldWith :: (IsStream t, Foldable f) => (t m a -> t m a -> t m a) -> f (t m a) -> t m a
158+++ concatFoldableWith :: (IsStream t, Foldable f) => (t m a -> t m a -> t m a) -> f (t m a) -> t m a
159+~~ forEachWith :: (IsStream t, Foldable f) => (t m b -> t m b -> t m b) -> f a -> (a -> t m b) -> t m b
160+++ concatForFoldableWith :: (IsStream t, Foldable f) => (t m b -> t m b -> t m b) -> f a -> (a -> t m b) -> t m b
161+~~ foldMapWith :: (IsStream t, Foldable f) => (t m b -> t m b -> t m b) -> (a -> t m b) -> f a -> t m b
162+++ concatMapFoldableWith :: (IsStream t, Foldable f) => (t m b -> t m b -> t m b) -> (a -> t m b) -> f a -> t m b
163+~~ aheadly :: IsStream t => AheadT m a -> t m a
164+++ fromAhead :: IsStream t => AheadT m a -> t m a
165+~~ asyncly :: IsStream t => AsyncT m a -> t m a
166+++ fromAsync :: IsStream t => AsyncT m a -> t m a
167+~~ parallely :: IsStream t => ParallelT m a -> t m a
168+++ fromParallel :: IsStream t => ParallelT m a -> t m a
169+~~ serially :: IsStream t => SerialT m a -> t m a
170+++ fromSerial :: IsStream t => SerialT m a -> t m a
171+~~ wAsyncly :: IsStream t => WAsyncT m a -> t m a
172+++ fromWAsync :: IsStream t => WAsyncT m a -> t m a
173+~~ wSerially :: IsStream t => WSerialT m a -> t m a
174+++ fromWSerial :: IsStream t => WSerialT m a -> t m a
175+~~ zipAsyncly :: IsStream t => ZipAsyncM m a -> t m a
176+++ fromZipAsync :: IsStream t => ZipAsyncM m a -> t m a
177+~~ zipSerially :: IsStream t => ZipSerialM m a -> t m a
178+++ fromZipSerial :: IsStream t => ZipSerialM m a -> t m a
179+## unchanged
180+++ class (forall m a. MonadAsync m => Semigroup (t m a), forall m a. MonadAsync m => Monoid (t m a), forall m. Monad m => Functor (t m), forall m. MonadAsync m => Applicative (t m)) => IsStream t
181+++ data AheadT m a
182+++ data AsyncT m a
183+++ data ParallelT m a
184+++ data Rate Rate :: Double -> Double -> Double -> Int -> Rate
185+++ data SerialT m a
186+++ data WAsyncT m a
187+++ data WSerialT m a
188+++ data ZipAsyncM m a
189+++ data ZipSerialM m a
190+++ type Ahead = AheadT IO
191+++ type Async = AsyncT IO
192+++ type MonadAsync m = (MonadIO m, MonadBaseControl IO m, MonadThrow m)
193+++ type Parallel = ParallelT IO
194+++ type Serial = SerialT IO
195+++ type WAsync = WAsyncT IO
196+++ type WSerial = WSerialT IO
197+++ type ZipAsync = ZipAsyncM IO
198+++ type ZipSerial = ZipSerialM IO
199+++ (|$) :: (IsStream t, MonadAsync m) => (t m a -> t m b) -> t m a -> t m b
200+++ (|$.) :: (IsStream t, MonadAsync m) => (t m a -> m b) -> t m a -> m b
201+++ (|&) :: (IsStream t, MonadAsync m) => t m a -> (t m a -> t m b) -> t m b
202+++ (|&.) :: (IsStream t, MonadAsync m) => t m a -> (t m a -> m b) -> m b
203+++ [rateBuffer] :: Rate -> Int
204+++ [rateGoal] :: Rate -> Double
205+++ [rateHigh] :: Rate -> Double
206+++ [rateLow] :: Rate -> Double
207+++ adapt :: (IsStream t1, IsStream t2) => t1 m a -> t2 m a
208+++ ahead :: (IsStream t, MonadAsync m) => t m a -> t m a -> t m a
209+++ async :: (IsStream t, MonadAsync m) => t m a -> t m a -> t m a
210+++ avgRate :: IsStream t => Double -> t m a -> t m a
211+++ constRate :: IsStream t => Double -> t m a -> t m a
212+++ maxBuffer :: IsStream t => Int -> t m a -> t m a
213+++ maxRate :: IsStream t => Double -> t m a -> t m a
214+++ maxThreads :: IsStream t => Int -> t m a -> t m a
215+++ minRate :: IsStream t => Double -> t m a -> t m a
216+++ mkAsync :: (IsStream t, MonadAsync m) => t m a -> t m a
217+++ parallel :: (IsStream t, MonadAsync m) => t m a -> t m a -> t m a
218+++ rate :: IsStream t => Maybe Rate -> t m a -> t m a
219+++ serial :: IsStream t => t m a -> t m a -> t m a
220+++ wAsync :: (IsStream t, MonadAsync m) => t m a -> t m a -> t m a
221+++ wSerial :: IsStream t => t m a -> t m a -> t m a
222+
223+# Added
224+++ delay :: (IsStream t, MonadIO m) => Double -> t m a -> t m a
225+++ foldMany :: (IsStream t, Monad m) => Fold m a b -> t m a -> t m b
226+++ intercalate :: (IsStream t, Monad m) => Unfold m b c -> b -> t m b -> t m c
227+++ intercalateSuffix :: (IsStream t, Monad m) => Unfold m b c -> b -> t m b -> t m c
228+++ liftInner :: (Monad m, IsStream t, MonadTrans tr, Monad (tr m)) => t m a -> t (tr m) a
229+++ runReaderT :: (IsStream t, Monad m) => m s -> t (ReaderT s m) a -> t m a
230+++ runStateT :: Monad m => m s -> SerialT (StateT s m) a -> SerialT m (s, a)
231+
232+# Removed: documentation moved to streamly-docs module in docs dir
233+@@@ Streamly.Tutorial
234+
235+# Deprecated, renamed
236+~~~ Streamly.Data.Unicode.Stream
237+@@@ Streamly.Unicode.Stream
238+# Moved from Streamly.Data.Unicode.Stream
239+## Behavior changed
240+++ decodeUtf8 :: (Monad m, IsStream t) => t m Word8 -> t m Char
241+++ encodeLatin1 :: (IsStream t, Monad m) => t m Char -> t m Word8
242+++ encodeUtf8 :: (Monad m, IsStream t) => t m Char -> t m Word8
243+## Unchanged
244+++ decodeLatin1 :: (IsStream t, Monad m) => t m Word8 -> t m Char
245+
246+# Added
247+++ decodeUtf8' :: (Monad m, IsStream t) => t m Word8 -> t m Char
248+++ encodeLatin1' :: (IsStream t, Monad m) => t m Char -> t m Word8
249+++ encodeStrings :: (MonadIO m, IsStream t) => (SerialT m Char -> SerialT m Word8) -> t m String -> t m (Array Word8)
250+++ encodeUtf8' :: (Monad m, IsStream t) => t m Char -> t m Word8