on master help sign in
Remove MonadTrans/MonadBase instances for GHC >= 9.6
4ccd51cHarendra Kumar
docs/User/ProjectRelated/Changelog.md+9
@@ -2,6 +2,15 @@
2
2
3<!-- See rendered changelog at https://streamly.composewell.com -->
3<!-- See rendered changelog at https://streamly.composewell.com -->
4
4
5+## Unreleased
6+
7+### Breaking Changes
8+
9+* MonadTrans and MonadBase instances has been removed for `AsyncT`,
10+ `ParallelT`, `AheadT` for GHC versions 9.6 onwards. This is due to a
11+ breaking change in `transformers` 0.6. You can replace `lift` with
12+ `fromEffect` when using these as top level monads in a monad stack.
13+
5## 0.9.0 (Mar 2023)
14## 0.9.0 (Mar 2023)
6
15
7Also see the following:
16Also see the following:
docs/streamly-docs.cabal+1−1
@@ -44,6 +44,6 @@ library
44
44
45 build-depends:
45 build-depends:
46 base >= 4.9 && < 4.19
46 base >= 4.9 && < 4.19
47− , transformers >= 0.4 && < 0.6.2
47+ , transformers >= 0.4 && < 0.7
48 , streamly
48 , streamly
49 , streamly-core
49 , streamly-core
src/Streamly/Internal/Data/Stream/Ahead.hs+11
@@ -34,13 +34,17 @@ where
34import Control.Concurrent.MVar (putMVar, takeMVar)
34import Control.Concurrent.MVar (putMVar, takeMVar)
35import Control.Exception (assert)
35import Control.Exception (assert)
36import Control.Monad (void, when)
36import Control.Monad (void, when)
37+#if !(MIN_VERSION_transformers(0,6,0))
37import Control.Monad.Base (MonadBase(..), liftBaseDefault)
38import Control.Monad.Base (MonadBase(..), liftBaseDefault)
39+#endif
38import Control.Monad.Catch (MonadThrow, throwM)
40import Control.Monad.Catch (MonadThrow, throwM)
39-- import Control.Monad.Error.Class (MonadError(..))
41-- import Control.Monad.Error.Class (MonadError(..))
40import Control.Monad.IO.Class (MonadIO(..))
42import Control.Monad.IO.Class (MonadIO(..))
41import Control.Monad.Reader.Class (MonadReader(..))
43import Control.Monad.Reader.Class (MonadReader(..))
42import Control.Monad.State.Class (MonadState(..))
44import Control.Monad.State.Class (MonadState(..))
45+#if !(MIN_VERSION_transformers(0,6,0))
43import Control.Monad.Trans.Class (MonadTrans(lift))
46import Control.Monad.Trans.Class (MonadTrans(lift))
47+#endif
44import Data.Heap (Heap, Entry(..))
48import Data.Heap (Heap, Entry(..))
45import Data.IORef (IORef, readIORef, atomicModifyIORef, writeIORef)
49import Data.IORef (IORef, readIORef, atomicModifyIORef, writeIORef)
46import Data.Maybe (fromJust)
50import Data.Maybe (fromJust)
@@ -693,9 +697,11 @@ consM m (AheadT r) = AheadT $ aheadK (K.fromEffect m) r
693-- @since 0.8.0
697-- @since 0.8.0
694newtype AheadT m a = AheadT {getAheadT :: Stream m a}
698newtype AheadT m a = AheadT {getAheadT :: Stream m a}
695
699
700+#if !(MIN_VERSION_transformers(0,6,0))
696instance MonadTrans AheadT where
701instance MonadTrans AheadT where
697 {-# INLINE lift #-}
702 {-# INLINE lift #-}
698 lift = AheadT . K.fromEffect
703 lift = AheadT . K.fromEffect
704+#endif
699
705
700-- | A serial IO stream of elements of type @a@ with concurrent lookahead. See
706-- | A serial IO stream of elements of type @a@ with concurrent lookahead. See
701-- 'AheadT' documentation for more details.
707-- 'AheadT' documentation for more details.
@@ -762,4 +768,9 @@ instance MonadAsync m => Monad (AheadT m) where
762-- Other instances
768-- Other instances
763------------------------------------------------------------------------------
769------------------------------------------------------------------------------
764
770
771+#if !(MIN_VERSION_transformers(0,6,0))
772+instance (MonadBase b m, Monad m, MonadAsync m) => MonadBase b (AheadT m) where
773+ liftBase = liftBaseDefault
774+#endif
775+
765MONAD_COMMON_INSTANCES(AheadT, MONADPARALLEL)
776MONAD_COMMON_INSTANCES(AheadT, MONADPARALLEL)
src/Streamly/Internal/Data/Stream/Async.hs+18
@@ -41,14 +41,18 @@ module Streamly.Internal.Data.Stream.Async {-# DEPRECATED "Please use \"Streamly
41where
41where
42
42
43import Control.Concurrent (myThreadId)
43import Control.Concurrent (myThreadId)
44+#if !(MIN_VERSION_transformers(0,6,0))
44import Control.Monad.Base (MonadBase(..), liftBaseDefault)
45import Control.Monad.Base (MonadBase(..), liftBaseDefault)
46+#endif
45import Control.Monad.Catch (MonadThrow, throwM)
47import Control.Monad.Catch (MonadThrow, throwM)
46import Control.Concurrent.MVar (newEmptyMVar)
48import Control.Concurrent.MVar (newEmptyMVar)
47-- import Control.Monad.Error.Class (MonadError(..))
49-- import Control.Monad.Error.Class (MonadError(..))
48import Control.Monad.IO.Class (MonadIO(..))
50import Control.Monad.IO.Class (MonadIO(..))
49import Control.Monad.Reader.Class (MonadReader(..))
51import Control.Monad.Reader.Class (MonadReader(..))
50import Control.Monad.State.Class (MonadState(..))
52import Control.Monad.State.Class (MonadState(..))
53+#if !(MIN_VERSION_transformers(0,6,0))
51import Control.Monad.Trans.Class (MonadTrans(lift))
54import Control.Monad.Trans.Class (MonadTrans(lift))
55+#endif
52import Data.Concurrent.Queue.MichaelScott (LinkedQueue, newQ, nullQ, tryPopR, pushL)
56import Data.Concurrent.Queue.MichaelScott (LinkedQueue, newQ, nullQ, tryPopR, pushL)
53import Data.IORef (IORef, newIORef, readIORef)
57import Data.IORef (IORef, newIORef, readIORef)
54import Data.Maybe (fromJust)
58import Data.Maybe (fromJust)
@@ -745,9 +749,11 @@ consMAsync m (AsyncT r) = AsyncT $ asyncK (K.fromEffect m) r
745-- @since 0.8.0
749-- @since 0.8.0
746newtype AsyncT m a = AsyncT {getAsyncT :: Stream m a}
750newtype AsyncT m a = AsyncT {getAsyncT :: Stream m a}
747
751
752+#if !(MIN_VERSION_transformers(0,6,0))
748instance MonadTrans AsyncT where
753instance MonadTrans AsyncT where
749 {-# INLINE lift #-}
754 {-# INLINE lift #-}
750 lift = AsyncT . K.fromEffect
755 lift = AsyncT . K.fromEffect
756+#endif
751
757
752-- | A demand driven left biased parallely composing IO stream of elements of
758-- | A demand driven left biased parallely composing IO stream of elements of
753-- type @a@. See 'AsyncT' documentation for more details.
759-- type @a@. See 'AsyncT' documentation for more details.
@@ -819,6 +825,11 @@ instance MonadAsync m => Monad (AsyncT m) where
819-- Other instances
825-- Other instances
820------------------------------------------------------------------------------
826------------------------------------------------------------------------------
821
827
828+#if !(MIN_VERSION_transformers(0,6,0))
829+instance (MonadBase b m, Monad m, MonadAsync m) => MonadBase b (AsyncT m) where
830+ liftBase = liftBaseDefault
831+#endif
832+
822MONAD_COMMON_INSTANCES(AsyncT, MONADPARALLEL)
833MONAD_COMMON_INSTANCES(AsyncT, MONADPARALLEL)
823
834
824------------------------------------------------------------------------------
835------------------------------------------------------------------------------
@@ -971,9 +982,11 @@ consMWAsync m (WAsyncT r) = WAsyncT $ wAsyncK (K.fromEffect m) r
971--
982--
972newtype WAsyncT m a = WAsyncT {getWAsyncT :: Stream m a}
983newtype WAsyncT m a = WAsyncT {getWAsyncT :: Stream m a}
973
984
985+#if !(MIN_VERSION_transformers(0,6,0))
974instance MonadTrans WAsyncT where
986instance MonadTrans WAsyncT where
975 {-# INLINE lift #-}
987 {-# INLINE lift #-}
976 lift = WAsyncT . K.fromEffect
988 lift = WAsyncT . K.fromEffect
989+#endif
977
990
978-- | A round robin parallely composing IO stream of elements of type @a@.
991-- | A round robin parallely composing IO stream of elements of type @a@.
979-- See 'WAsyncT' documentation for more details.
992-- See 'WAsyncT' documentation for more details.
@@ -1043,4 +1056,9 @@ instance MonadAsync m => Monad (WAsyncT m) where
1043-- Other instances
1056-- Other instances
1044------------------------------------------------------------------------------
1057------------------------------------------------------------------------------
1045
1058
1059+#if !(MIN_VERSION_transformers(0,6,0))
1060+instance (MonadBase b m, Monad m, MonadAsync m) => MonadBase b (WAsyncT m) where
1061+ liftBase = liftBaseDefault
1062+#endif
1063+
1046MONAD_COMMON_INSTANCES(WAsyncT, MONADPARALLEL)
1064MONAD_COMMON_INSTANCES(WAsyncT, MONADPARALLEL)
src/Streamly/Internal/Data/Stream/Instances.hs+6−9
@@ -15,14 +15,11 @@ instance Monad m => Functor (STREAM m) where { \
15 {-# INLINE (<$) #-}; \
15 {-# INLINE (<$) #-}; \
16 (<$) = fmap . const }; \
16 (<$) = fmap . const }; \
17 \
17 \
18−instance (MonadBase b m, Monad m CONSTRAINT) => MonadBase b (STREAM m) where {\
19− liftBase = liftBaseDefault }; \
20− \
21instance (MonadIO m CONSTRAINT) => MonadIO (STREAM m) where { \
18instance (MonadIO m CONSTRAINT) => MonadIO (STREAM m) where { \
22− liftIO = lift . liftIO }; \
19+ liftIO x = STREAM $ K.fromEffect $ liftIO x }; \
23 \
20 \
24instance (MonadThrow m CONSTRAINT) => MonadThrow (STREAM m) where { \
21instance (MonadThrow m CONSTRAINT) => MonadThrow (STREAM m) where { \
25− throwM = lift . throwM }; \
22+ throwM x = STREAM $ K.fromEffect $ throwM x }; \
26 \
23 \
27{- \
24{- \
28instance (MonadError e m CONSTRAINT) => MonadError e (STREAM m) where { \
25instance (MonadError e m CONSTRAINT) => MonadError e (STREAM m) where { \
@@ -32,16 +29,16 @@ instance (MonadError e m CONSTRAINT) => MonadError e (STREAM m) where { \
32-} \
29-} \
33 \
30 \
34instance (MonadReader r m CONSTRAINT) => MonadReader r (STREAM m) where { \
31instance (MonadReader r m CONSTRAINT) => MonadReader r (STREAM m) where { \
35− ask = lift ask; \
32+ ask = STREAM $ K.fromEffect ask; \
36 local f (STREAM m) = STREAM $ withLocal f m }; \
33 local f (STREAM m) = STREAM $ withLocal f m }; \
37 \
34 \
38instance (MonadState s m CONSTRAINT) => MonadState s (STREAM m) where { \
35instance (MonadState s m CONSTRAINT) => MonadState s (STREAM m) where { \
39 {-# INLINE get #-}; \
36 {-# INLINE get #-}; \
40− get = lift get; \
37+ get = STREAM $ K.fromEffect get; \
41 {-# INLINE put #-}; \
38 {-# INLINE put #-}; \
42− put x = lift (put x); \
39+ put x = STREAM $ K.fromEffect $ put x; \
43 {-# INLINE state #-}; \
40 {-# INLINE state #-}; \
44− state k = lift (state k) }
41+ state k = STREAM $ K.fromEffect $ state k }
45
42
46------------------------------------------------------------------------------
43------------------------------------------------------------------------------
47-- Lists
44-- Lists
src/Streamly/Internal/Data/Stream/Parallel.hs+11
@@ -49,13 +49,17 @@ where
49
49
50import Control.Concurrent (myThreadId, takeMVar)
50import Control.Concurrent (myThreadId, takeMVar)
51import Control.Monad (when)
51import Control.Monad (when)
52+#if !(MIN_VERSION_transformers(0,6,0))
52import Control.Monad.Base (MonadBase(..), liftBaseDefault)
53import Control.Monad.Base (MonadBase(..), liftBaseDefault)
54+#endif
53import Control.Monad.Catch (MonadThrow, throwM)
55import Control.Monad.Catch (MonadThrow, throwM)
54-- import Control.Monad.Error.Class (MonadError(..))
56-- import Control.Monad.Error.Class (MonadError(..))
55import Control.Monad.IO.Class (MonadIO(..))
57import Control.Monad.IO.Class (MonadIO(..))
56import Control.Monad.Reader.Class (MonadReader(..))
58import Control.Monad.Reader.Class (MonadReader(..))
57import Control.Monad.State.Class (MonadState(..))
59import Control.Monad.State.Class (MonadState(..))
60+#if !(MIN_VERSION_transformers(0,6,0))
58import Control.Monad.Trans.Class (MonadTrans(lift))
61import Control.Monad.Trans.Class (MonadTrans(lift))
62+#endif
59import Data.Functor (void)
63import Data.Functor (void)
60import Data.IORef (readIORef, writeIORef)
64import Data.IORef (readIORef, writeIORef)
61import Data.Maybe (fromJust)
65import Data.Maybe (fromJust)
@@ -432,9 +436,11 @@ tapAsyncF f (D.Stream step1 state1) = D.Stream step TapInit
432-- @since 0.8.0
436-- @since 0.8.0
433newtype ParallelT m a = ParallelT {getParallelT :: K.StreamK m a}
437newtype ParallelT m a = ParallelT {getParallelT :: K.StreamK m a}
434
438
439+#if !(MIN_VERSION_transformers(0,6,0))
435instance MonadTrans ParallelT where
440instance MonadTrans ParallelT where
436 {-# INLINE lift #-}
441 {-# INLINE lift #-}
437 lift = ParallelT . K.fromEffect
442 lift = ParallelT . K.fromEffect
443+#endif
438
444
439-- | A parallely composing IO stream of elements of type @a@.
445-- | A parallely composing IO stream of elements of type @a@.
440-- See 'ParallelT' documentation for more details.
446-- See 'ParallelT' documentation for more details.
@@ -504,6 +510,11 @@ instance MonadAsync m => Monad (ParallelT m) where
504-- Other instances
510-- Other instances
505------------------------------------------------------------------------------
511------------------------------------------------------------------------------
506
512
513+#if !(MIN_VERSION_transformers(0,6,0))
514+instance (MonadBase b m, Monad m, MonadAsync m) => MonadBase b (ParallelT m) where
515+ liftBase = liftBaseDefault
516+#endif
517+
507MONAD_COMMON_INSTANCES(ParallelT, MONADPARALLEL)
518MONAD_COMMON_INSTANCES(ParallelT, MONADPARALLEL)
508
519
509-------------------------------------------------------------------------------
520-------------------------------------------------------------------------------
src/Streamly/Internal/Data/Stream/Serial.hs+9
@@ -48,9 +48,13 @@ module Streamly.Internal.Data.Stream.Serial {-# DEPRECATED "Please use \"Streaml
48 )
48 )
49where
49where
50
50
51+#if !(MIN_VERSION_base(4,18,0))
51import Control.Applicative (liftA2)
52import Control.Applicative (liftA2)
53+#endif
52import Control.DeepSeq (NFData(..), NFData1(..))
54import Control.DeepSeq (NFData(..), NFData1(..))
55+#if !(MIN_VERSION_transformers(0,6,0))
53import Control.Monad.Base (MonadBase(..), liftBaseDefault)
56import Control.Monad.Base (MonadBase(..), liftBaseDefault)
57+#endif
54import Control.Monad.Catch (MonadThrow, throwM)
58import Control.Monad.Catch (MonadThrow, throwM)
55import Control.Monad.IO.Class (MonadIO(..))
59import Control.Monad.IO.Class (MonadIO(..))
56import Control.Monad.Reader.Class (MonadReader(..))
60import Control.Monad.Reader.Class (MonadReader(..))
@@ -408,6 +412,11 @@ instance Monad m => Monad (WSerialT m) where
408-- Other instances
412-- Other instances
409------------------------------------------------------------------------------
413------------------------------------------------------------------------------
410
414
415+#if !(MIN_VERSION_transformers(0,6,0))
416+instance (MonadBase b m, Monad m) => MonadBase b (SerialT m) where
417+ liftBase = liftBaseDefault
418+#endif
419+
411MONAD_COMMON_INSTANCES(WSerialT,)
420MONAD_COMMON_INSTANCES(WSerialT,)
412LIST_INSTANCES(WSerialT)
421LIST_INSTANCES(WSerialT)
413NFDATA1_INSTANCE(WSerialT)
422NFDATA1_INSTANCE(WSerialT)
streamly.cabal+14−17
@@ -401,25 +401,12 @@ library
401 , Streamly.Network.Socket
401 , Streamly.Network.Socket
402 , Streamly.Network.Inet.TCP
402 , Streamly.Network.Inet.TCP
403
403
404− -- Deprecated modules
404+ -- Deprecated
405+ , Streamly
406+ , Streamly.Data.Unicode.Stream
405 , Streamly.Memory.Array
407 , Streamly.Memory.Array
406 , Streamly.Data.Array.Foreign
408 , Streamly.Data.Array.Foreign
407−
408− if !impl(ghcjs) && flag(dev)
409− exposed-modules:
410− Streamly.Internal.System.IOVec.Type
411− , Streamly.Internal.System.IOVec
412− , Streamly.Internal.FileSystem.FDIO
413− , Streamly.Internal.FileSystem.FD
414−
415− if impl(ghc <= 9.4.5)
416− exposed-modules:
417− Streamly
418− , Streamly.Data.Unicode.Stream
419 , Streamly.Prelude
409 , Streamly.Prelude
420− , Streamly.Internal.Data.Stream.Async
421− , Streamly.Internal.Data.Stream.Parallel
422− , Streamly.Internal.Data.Stream.Ahead
423
410
424 -- Deprecated Internal modules
411 -- Deprecated Internal modules
425 , Streamly.Internal.Data.SVar.Worker
412 , Streamly.Internal.Data.SVar.Worker
@@ -435,6 +422,9 @@ library
435
422
436 , Streamly.Internal.Data.Stream.Serial
423 , Streamly.Internal.Data.Stream.Serial
437 , Streamly.Internal.Data.Stream.Zip
424 , Streamly.Internal.Data.Stream.Zip
425+ , Streamly.Internal.Data.Stream.Async
426+ , Streamly.Internal.Data.Stream.Parallel
427+ , Streamly.Internal.Data.Stream.Ahead
438 , Streamly.Internal.Data.Stream.ZipAsync
428 , Streamly.Internal.Data.Stream.ZipAsync
439
429
440 , Streamly.Internal.Data.Stream.IsStream.Type
430 , Streamly.Internal.Data.Stream.IsStream.Type
@@ -451,6 +441,13 @@ library
451 , Streamly.Internal.Data.Stream.IsStream.Top
441 , Streamly.Internal.Data.Stream.IsStream.Top
452 , Streamly.Internal.Data.Stream.IsStream
442 , Streamly.Internal.Data.Stream.IsStream
453
443
444+ if !impl(ghcjs) && flag(dev)
445+ exposed-modules:
446+ Streamly.Internal.System.IOVec.Type
447+ , Streamly.Internal.System.IOVec
448+ , Streamly.Internal.FileSystem.FDIO
449+ , Streamly.Internal.FileSystem.FD
450+
454 if flag(dev)
451 if flag(dev)
455 exposed-modules: Streamly.Data.SmallArray
452 exposed-modules: Streamly.Data.SmallArray
456 , Streamly.Internal.Data.SmallArray
453 , Streamly.Internal.Data.SmallArray
@@ -506,7 +503,7 @@ library
506 -- Network
503 -- Network
507 , network >= 2.6 && < 3.2
504 , network >= 2.6 && < 3.2
508
505
509− if impl(ghc <= 9.4.5)
506+ if impl(ghc < 9.6)
510 build-depends: transformers-base >= 0.4 && < 0.5
507 build-depends: transformers-base >= 0.4 && < 0.5
511
508
512 if flag(use-unliftio)
509 if flag(use-unliftio)
test/streamly-tests.cabal+13−13
@@ -180,7 +180,7 @@ library
180 import: lib-options, test-dependencies
180 import: lib-options, test-dependencies
181 hs-source-dirs: lib
181 hs-source-dirs: lib
182 exposed-modules: Streamly.Test.Common
182 exposed-modules: Streamly.Test.Common
183− if !flag(use-streamly-core) && impl(ghc < 9.4.5)
183+ if !flag(use-streamly-core)
184 exposed-modules: Streamly.Test.Prelude.Common
184 exposed-modules: Streamly.Test.Prelude.Common
185 if flag(limit-build-mem)
185 if flag(limit-build-mem)
186 ghc-options: +RTS -M1500M -RTS
186 ghc-options: +RTS -M1500M -RTS
@@ -386,7 +386,7 @@ test-suite Prelude
386 type: exitcode-stdio-1.0
386 type: exitcode-stdio-1.0
387 main-is: Streamly/Test/Prelude.hs
387 main-is: Streamly/Test/Prelude.hs
388 ghc-options: -main-is Streamly.Test.Prelude.main
388 ghc-options: -main-is Streamly.Test.Prelude.main
389− if flag(use-streamly-core) || impl(ghc >= 9.6)
389+ if flag(use-streamly-core)
390 buildable: False
390 buildable: False
391
391
392test-suite Prelude.Ahead
392test-suite Prelude.Ahead
@@ -394,7 +394,7 @@ test-suite Prelude.Ahead
394 type: exitcode-stdio-1.0
394 type: exitcode-stdio-1.0
395 main-is: Streamly/Test/Prelude/Ahead.hs
395 main-is: Streamly/Test/Prelude/Ahead.hs
396 ghc-options: -main-is Streamly.Test.Prelude.Ahead.main
396 ghc-options: -main-is Streamly.Test.Prelude.Ahead.main
397− if flag(use-streamly-core) || impl(ghc >= 9.6)
397+ if flag(use-streamly-core)
398 buildable: False
398 buildable: False
399
399
400test-suite Prelude.Async
400test-suite Prelude.Async
@@ -402,7 +402,7 @@ test-suite Prelude.Async
402 type: exitcode-stdio-1.0
402 type: exitcode-stdio-1.0
403 main-is: Streamly/Test/Prelude/Async.hs
403 main-is: Streamly/Test/Prelude/Async.hs
404 ghc-options: -main-is Streamly.Test.Prelude.Async.main
404 ghc-options: -main-is Streamly.Test.Prelude.Async.main
405− if flag(use-streamly-core) || impl(ghc >= 9.6)
405+ if flag(use-streamly-core)
406 buildable: False
406 buildable: False
407
407
408test-suite Data.Stream.Concurrent
408test-suite Data.Stream.Concurrent
@@ -420,7 +420,7 @@ test-suite Prelude.Concurrent
420 ghc-options: -main-is Streamly.Test.Prelude.Concurrent.main
420 ghc-options: -main-is Streamly.Test.Prelude.Concurrent.main
421 if flag(limit-build-mem)
421 if flag(limit-build-mem)
422 ghc-options: +RTS -M2000M -RTS
422 ghc-options: +RTS -M2000M -RTS
423− if flag(use-streamly-core) || impl(ghc >= 9.6)
423+ if flag(use-streamly-core)
424 buildable: False
424 buildable: False
425
425
426test-suite Prelude.Fold
426test-suite Prelude.Fold
@@ -428,7 +428,7 @@ test-suite Prelude.Fold
428 type: exitcode-stdio-1.0
428 type: exitcode-stdio-1.0
429 main-is: Streamly/Test/Prelude/Fold.hs
429 main-is: Streamly/Test/Prelude/Fold.hs
430 ghc-options: -main-is Streamly.Test.Prelude.Fold.main
430 ghc-options: -main-is Streamly.Test.Prelude.Fold.main
431− if flag(use-streamly-core) || impl(ghc >= 9.6)
431+ if flag(use-streamly-core)
432 buildable: False
432 buildable: False
433
433
434test-suite Prelude.Parallel
434test-suite Prelude.Parallel
@@ -436,7 +436,7 @@ test-suite Prelude.Parallel
436 type: exitcode-stdio-1.0
436 type: exitcode-stdio-1.0
437 main-is: Streamly/Test/Prelude/Parallel.hs
437 main-is: Streamly/Test/Prelude/Parallel.hs
438 ghc-options: -main-is Streamly.Test.Prelude.Parallel.main
438 ghc-options: -main-is Streamly.Test.Prelude.Parallel.main
439− if flag(use-streamly-core) || impl(ghc >= 9.6)
439+ if flag(use-streamly-core)
440 buildable: False
440 buildable: False
441
441
442test-suite Prelude.Rate
442test-suite Prelude.Rate
@@ -458,14 +458,14 @@ test-suite Prelude.Serial
458 ghc-options: -main-is Streamly.Test.Prelude.Serial.main
458 ghc-options: -main-is Streamly.Test.Prelude.Serial.main
459 if flag(limit-build-mem)
459 if flag(limit-build-mem)
460 ghc-options: +RTS -M1500M -RTS
460 ghc-options: +RTS -M1500M -RTS
461− if flag(use-streamly-core) || impl(ghc >= 9.6)
461+ if flag(use-streamly-core)
462 buildable: False
462 buildable: False
463
463
464test-suite Prelude.Top
464test-suite Prelude.Top
465 import: test-options
465 import: test-options
466 type: exitcode-stdio-1.0
466 type: exitcode-stdio-1.0
467 main-is: Streamly/Test/Prelude/Top.hs
467 main-is: Streamly/Test/Prelude/Top.hs
468− if flag(use-streamly-core) || impl(ghc >= 9.6)
468+ if flag(use-streamly-core)
469 buildable: False
469 buildable: False
470
470
471test-suite Prelude.WAsync
471test-suite Prelude.WAsync
@@ -473,7 +473,7 @@ test-suite Prelude.WAsync
473 type: exitcode-stdio-1.0
473 type: exitcode-stdio-1.0
474 main-is: Streamly/Test/Prelude/WAsync.hs
474 main-is: Streamly/Test/Prelude/WAsync.hs
475 ghc-options: -main-is Streamly.Test.Prelude.WAsync.main
475 ghc-options: -main-is Streamly.Test.Prelude.WAsync.main
476− if flag(use-streamly-core) || impl(ghc >= 9.6)
476+ if flag(use-streamly-core)
477 buildable: False
477 buildable: False
478
478
479test-suite Prelude.WSerial
479test-suite Prelude.WSerial
@@ -481,7 +481,7 @@ test-suite Prelude.WSerial
481 type: exitcode-stdio-1.0
481 type: exitcode-stdio-1.0
482 main-is: Streamly/Test/Prelude/WSerial.hs
482 main-is: Streamly/Test/Prelude/WSerial.hs
483 ghc-options: -main-is Streamly.Test.Prelude.WSerial.main
483 ghc-options: -main-is Streamly.Test.Prelude.WSerial.main
484− if flag(use-streamly-core) || impl(ghc >= 9.6)
484+ if flag(use-streamly-core)
485 buildable: False
485 buildable: False
486
486
487test-suite Prelude.ZipAsync
487test-suite Prelude.ZipAsync
@@ -491,7 +491,7 @@ test-suite Prelude.ZipAsync
491 ghc-options: -main-is Streamly.Test.Prelude.ZipAsync.main
491 ghc-options: -main-is Streamly.Test.Prelude.ZipAsync.main
492 if flag(limit-build-mem)
492 if flag(limit-build-mem)
493 ghc-options: +RTS -M750M -RTS
493 ghc-options: +RTS -M750M -RTS
494− if flag(use-streamly-core) || impl(ghc >= 9.6)
494+ if flag(use-streamly-core)
495 buildable: False
495 buildable: False
496
496
497test-suite Prelude.ZipSerial
497test-suite Prelude.ZipSerial
@@ -499,7 +499,7 @@ test-suite Prelude.ZipSerial
499 type: exitcode-stdio-1.0
499 type: exitcode-stdio-1.0
500 main-is: Streamly/Test/Prelude/ZipSerial.hs
500 main-is: Streamly/Test/Prelude/ZipSerial.hs
501 ghc-options: -main-is Streamly.Test.Prelude.ZipSerial.main
501 ghc-options: -main-is Streamly.Test.Prelude.ZipSerial.main
502− if flag(use-streamly-core) || impl(ghc >= 9.6)
502+ if flag(use-streamly-core)
503 buildable: False
503 buildable: False
504
504
505test-suite Unicode.Stream
505test-suite Unicode.Stream