on master help sign in
Add support for GHC 8.8

Fix warnings. Add a travis CI build matrix entry

commit7c9c1c48b5b9ba61c49ca9cb2f362972cdfc1fd3 authorHarendra Kumar <harendra.kumar@gmail.com> dateTue 27 Aug 2019, 07:48 (7 years ago) parentf2fe191
12 files changed+47−9
.travis.yml+7−4 src/Streamly/Fold/Types.hs+2 src/Streamly/List.hs+2 src/Streamly/SVar.hs+10−1 src/Streamly/Streams/Ahead.hs+2 src/Streamly/Streams/Async.hs+2 src/Streamly/Streams/Parallel.hs+2 src/Streamly/Streams/SVar.hs+3 src/Streamly/Streams/Serial.hs+2 src/Streamly/Streams/StreamK/Type.hs+10−1 src/Streamly/Streams/Zip.hs+2 streamly.cabal+3−3
.travis.yml+7−4
@@ -84,15 +84,18 @@ matrix:
8484 #- env: BUILD=cabal-v2 GHCVER=head
8585 # addons: {apt: {packages: [cabal-install-head,ghc-head], sources: [hvr-ghc]}}
8686
87+ - env: BUILD=cabal-v2 GHCVER=8.8.1 GHC_OPTIONS="" CABAL_BUILD_OPTIONS="--flag benchmark --allow-newer=base,ghc"
88+ addons: {apt: {packages: [cabal-install-head,ghc-8.8.1], sources: [hvr-ghc]}}
89+
8790 - env: BUILD=cabal-v2 GHCVER=8.6.5 GHC_OPTIONS="" CABAL_BUILD_OPTIONS="--flags streamk"
88− addons: {apt: {packages: [cabal-install-head,ghc-8.6.5], sources: [hvr-ghc]}}
91+ addons: {apt: {packages: [cabal-install-2.4,ghc-8.6.5], sources: [hvr-ghc]}}
8992
9093 - env: BUILD=cabal-v2 GHCVER=8.4.4 GHC_OPTIONS=""
91− addons: {apt: {packages: [cabal-install-head,ghc-8.4.4], sources: [hvr-ghc]}}
94+ addons: {apt: {packages: [cabal-install-2.4,ghc-8.4.4], sources: [hvr-ghc]}}
9295
9396 # GHC-8.2.2 hogs memory leading to out-of-memory when compiling benchmarks
94− - env: BUILD=cabal-v2 GHCVER=8.2.2 GHC_OPTIONS="" DISABLE_BENCH=y
95− addons: {apt: {packages: [cabal-install-2.4,ghc-8.2.2], sources: [hvr-ghc]}}
97+ #- env: BUILD=cabal-v2 GHCVER=8.2.2 GHC_OPTIONS="" DISABLE_BENCH=y
98+ # addons: {apt: {packages: [cabal-install-2.4,ghc-8.2.2], sources: [hvr-ghc]}}
9699
97100 - env: BUILD=cabal-v2 GHCVER=8.0.2 GHC_OPTIONS="" CABAL_BUILD_OPTIONS="--flags examples-sdl"
98101 addons: {apt: {packages: [cabal-install-2.4,ghc-8.0.2,libsdl1.2-dev], sources: [hvr-ghc]}}
src/Streamly/Fold/Types.hs+2
@@ -39,7 +39,9 @@ import Control.Monad.Catch (throwM)
3939import Control.Monad.IO.Class (MonadIO(..))
4040import Control.Monad.Trans.Control (control)
4141import Data.Maybe (isJust, fromJust)
42+#if __GLASGOW_HASKELL__ < 808
4243import Data.Semigroup (Semigroup(..))
44+#endif
4345import Streamly.Strict (Tuple'(..), Tuple3'(..), Either'(..))
4446import Streamly.SVar (MonadAsync)
4547
src/Streamly/List.hs+2
@@ -78,7 +78,9 @@ import Control.DeepSeq (NFData(..))
7878import Control.DeepSeq (NFData1(..))
7979#endif
8080import Data.Functor.Identity (Identity, runIdentity)
81+#if __GLASGOW_HASKELL__ < 808
8182import Data.Semigroup (Semigroup(..))
83+#endif
8284import GHC.Exts (IsList(..), IsString(..))
8385
8486import Streamly.Streams.Serial (SerialT)
src/Streamly/SVar.hs+10−1
@@ -126,11 +126,16 @@ import Data.Concurrent.Queue.MichaelScott (LinkedQueue, pushL)
126126import Data.Functor (void)
127127import Data.Heap (Heap, Entry(..))
128128import Data.Int (Int64)
129+#if __GLASGOW_HASKELL__ >= 800
130+import Data.Kind (Type)
131+#endif
129132import Data.IORef
130133 (IORef, modifyIORef, newIORef, readIORef, writeIORef, atomicModifyIORef)
131134import Data.List ((\\))
132135import Data.Maybe (fromJust)
136+#if __GLASGOW_HASKELL__ < 808
133137import Data.Semigroup ((<>))
138+#endif
134139import Data.Set (Set)
135140import GHC.Conc (ThreadId(..))
136141import GHC.Exts
@@ -169,11 +174,15 @@ data ChildEvent a =
169174 ChildYield a
170175 | ChildStop ThreadId (Maybe SomeException)
171176
177+#if __GLASGOW_HASKELL__ < 800
178+#define Type *
179+#endif
172180-- | Sorting out-of-turn outputs in a heap for Ahead style streams
173−data AheadHeapEntry (t :: (* -> *) -> * -> *) m a =
181+data AheadHeapEntry (t :: (Type -> Type) -> Type -> Type) m a =
174182 AheadEntryNull
175183 | AheadEntryPure a
176184 | AheadEntryStream (t m a)
185+#undef Type
177186
178187------------------------------------------------------------------------------
179188-- State threaded around the monad for thread management
src/Streamly/Streams/Ahead.hs+2
@@ -39,7 +39,9 @@ import Control.Monad.Trans.Class (MonadTrans(lift))
3939import Data.Heap (Heap, Entry(..))
4040import Data.IORef (IORef, readIORef, atomicModifyIORef, writeIORef)
4141import Data.Maybe (fromJust)
42+#if __GLASGOW_HASKELL__ < 808
4243import Data.Semigroup (Semigroup(..))
44+#endif
4345import GHC.Exts (inline)
4446
4547import qualified Data.Heap as H
src/Streamly/Streams/Async.hs+2
@@ -49,7 +49,9 @@ import Control.Monad.Trans.Class (MonadTrans(lift))
4949import Data.Concurrent.Queue.MichaelScott (LinkedQueue, newQ, nullQ, tryPopR)
5050import Data.IORef (IORef, newIORef, readIORef)
5151import Data.Maybe (fromJust)
52+#if __GLASGOW_HASKELL__ < 808
5253import Data.Semigroup (Semigroup(..))
54+#endif
5355
5456import Prelude hiding (map)
5557import qualified Data.Set as S
src/Streamly/Streams/Parallel.hs+2
@@ -49,7 +49,9 @@ import Control.Monad.Trans.Class (MonadTrans(lift))
4949import Data.Functor (void)
5050import Data.IORef (readIORef, writeIORef)
5151import Data.Maybe (fromJust)
52+#if __GLASGOW_HASKELL__ < 808
5253import Data.Semigroup (Semigroup(..))
54+#endif
5355import Prelude hiding (map)
5456
5557import qualified Data.Set as Set
src/Streamly/Streams/SVar.hs+3
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE FlexibleContexts #-}
23
34-- |
@@ -23,7 +24,9 @@ import Control.Monad.Catch (throwM)
2324import Control.Monad.IO.Class (MonadIO(liftIO))
2425import Data.IORef (newIORef, readIORef, mkWeakIORef, writeIORef)
2526import Data.Maybe (isNothing)
27+#if __GLASGOW_HASKELL__ < 808
2628import Data.Semigroup ((<>))
29+#endif
2730import System.IO (hPutStrLn, stderr)
2831import Streamly.Time.Clock (Clock(Monotonic), getTime)
2932import System.Mem (performMajorGC)
src/Streamly/Streams/Serial.hs+2
@@ -59,7 +59,9 @@ import Control.Monad.State.Class (MonadState(..))
5959import Control.Monad.Trans.Class (MonadTrans(lift))
6060import Data.Functor.Identity (Identity(..), runIdentity)
6161import Data.Foldable (fold)
62+#if __GLASGOW_HASKELL__ < 808
6263import Data.Semigroup (Semigroup(..))
64+#endif
6365import GHC.Exts (IsList(..), IsString(..))
6466import Text.Read (Lexeme(Ident), lexP, parens, prec, readPrec, readListPrec,
6567 readListPrecDefault)
src/Streamly/Streams/StreamK/Type.hs+10−1
@@ -83,7 +83,12 @@ where
8383import Control.Monad (void, ap, (>=>))
8484import Control.Monad.IO.Class (MonadIO(liftIO))
8585import Control.Monad.Trans.Class (MonadTrans(lift))
86+#if __GLASGOW_HASKELL__ >= 800
87+import Data.Kind (Type)
88+#endif
89+#if __GLASGOW_HASKELL__ < 808
8690import Data.Semigroup (Semigroup(..))
91+#endif
8792import Prelude hiding (map, mapM, concatMap, foldr)
8893
8994import Streamly.SVar
@@ -765,11 +770,15 @@ instance Monoid (Stream m a) where
765770-- Functor
766771-------------------------------------------------------------------------------
767772
773+#if __GLASGOW_HASKELL__ < 800
774+#define Type *
775+#endif
768776-- Note eta expanded
769777{-# INLINE_LATE mapFB #-}
770−mapFB :: forall (t :: (* -> *) -> * -> *) b m a.
778+mapFB :: forall (t :: (Type -> Type) -> Type -> Type) b m a.
771779 (b -> t m b -> t m b) -> (a -> b) -> a -> t m b -> t m b
772780mapFB c f = \x ys -> c (f x) ys
781+#undef Type
773782
774783{-# RULES
775784"mapFB/mapFB" forall c f g. mapFB (mapFB c f) g = mapFB c (f . g)
src/Streamly/Streams/Zip.hs+2
@@ -45,7 +45,9 @@ import Control.DeepSeq (NFData1(..))
4545#endif
4646import Data.Functor.Identity (Identity, runIdentity)
4747import Data.Foldable (fold)
48+#if __GLASGOW_HASKELL__ < 808
4849import Data.Semigroup (Semigroup(..))
50+#endif
4951import GHC.Exts (IsList(..), IsString(..))
5052import Text.Read (Lexeme(Ident), lexP, parens, prec, readPrec, readListPrec,
5153 readListPrecDefault)
streamly.cabal+3−3
@@ -92,7 +92,8 @@ license-file: LICENSE
9292tested-with: GHC==7.10.3
9393 , GHC==8.0.2
9494 , GHC==8.4.4
95− , GHC==8.6.4
95+ , GHC==8.6.5
96+ , GHC==8.8.1
9697author: Harendra Kumar
9798maintainer: harendra.kumar@gmail.com
9899copyright: 2017 Harendra Kumar
@@ -203,7 +204,6 @@ common compile-options
203204 -Wincomplete-uni-patterns
204205 -Wredundant-constraints
205206 -Wnoncanonical-monad-instances
206− -Wnoncanonical-monadfail-instances
207207
208208common optimization-options
209209 ghc-options: -O2
@@ -350,7 +350,7 @@ library
350350
351351 if flag(benchmark)
352352 build-depends: inspection-testing >= 0.4 && < 0.5
353− , template-haskell >= 2.14 && < 2.15
353+ , template-haskell >= 2.14 && < 2.16
354354
355355 if !impl(ghcjs)
356356 build-depends: