From 2e1f439d5aa89328b3e41c2036e1b081da04b2dd Mon Sep 17 00:00:00 2001 From: Alexey Kuleshevich Date: Sun, 29 Oct 2023 14:03:46 +0100 Subject: [PATCH 1/9] Use `random-1.3.0` in `stack.yaml` and switch to newer LTS --- stack.yaml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/stack.yaml b/stack.yaml index b67891c..6fb02eb 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,8 +1,5 @@ -resolver: lts-15.2 +resolver: lts-22.43 packages: - '.' - extra-deps: -- github: idontgetoutmuch/random - commit: 86e06b8902d4d5c32b14b6a5ef44b964280bcc32 -- splitmix-0.1@sha256:d50c4d0801a35be7875a040470c09863342514930c82a7d25780a6c2efc4fda9,5249 +- random-1.3.0@sha256:e5b7016e43a8f4822ebcf8cacaaa737beb62d370b988b5c69e95105d9f0fd582,6004 From 5ec3259c596fc19daefcba5312047d7d99e8c063 Mon Sep 17 00:00:00 2001 From: Alexey Kuleshevich Date: Sun, 29 Oct 2023 14:11:35 +0100 Subject: [PATCH 2/9] Implement `modifyGen` and `ThawedGen` for random-1.3 compatibility --- System/Random/MWC.hs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/System/Random/MWC.hs b/System/Random/MWC.hs index 5cc616b..0190c45 100644 --- a/System/Random/MWC.hs +++ b/System/Random/MWC.hs @@ -469,8 +469,17 @@ instance (s ~ PrimState m, PrimMonad m) => Random.StatefulGen (Gen s) m where -- | @since 0.15.0.0 instance PrimMonad m => Random.FrozenGen Seed m where type MutableGen Seed m = Gen (PrimState m) - thawGen = restore freezeGen = save +#if MIN_VERSION_random(1,3,0) + modifyGen gen@(Gen mv) f = do + seed <- save gen + case f seed of + (a, Seed v) -> a <$ G.copy mv v + overwriteGen (Gen mv) (Seed v) = G.copy mv v + +instance PrimMonad m => Random.ThawedGen Seed m where +#endif + thawGen = restore -- | Convert vector to 'Seed'. It acts similarly to 'initialize' and -- will accept any vector. If you want to pass seed immediately to From 184abc0dd6c3b95059524bf34d67c65616dbb881 Mon Sep 17 00:00:00 2001 From: Alexey Kuleshevich Date: Sun, 29 Oct 2023 15:24:50 +0100 Subject: [PATCH 3/9] Implement new `uniformByteArrayM` --- System/Random/MWC.hs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/System/Random/MWC.hs b/System/Random/MWC.hs index 0190c45..5fb4a5c 100644 --- a/System/Random/MWC.hs +++ b/System/Random/MWC.hs @@ -463,8 +463,13 @@ instance (s ~ PrimState m, PrimMonad m) => Random.StatefulGen (Gen s) m where {-# INLINE uniformWord32 #-} uniformWord64 = uniform {-# INLINE uniformWord64 #-} +#if MIN_VERSION_random(1,3,0) + uniformByteArrayM isPinned n g = stToPrim (Random.fillByteArrayST isPinned n (uniform g)) + {-# INLINE uniformByteArrayM #-} +#else uniformShortByteString n g = stToPrim (Random.genShortByteStringST n (uniform g)) {-# INLINE uniformShortByteString #-} +#endif -- | @since 0.15.0.0 instance PrimMonad m => Random.FrozenGen Seed m where From 4cfc936761bd6a9ce4c2d8b4e58cdd6cbf4ece19 Mon Sep 17 00:00:00 2001 From: Alexey Kuleshevich Date: Fri, 27 Dec 2024 13:11:35 -0700 Subject: [PATCH 4/9] Stop using `liftM` and `ap` in favor of `<$>` and `<*>` GHC versions that could not handle `<$>` and `<*>` without extra `Functor` and `Applicative` constraints are no longer supported. --- System/Random/MWC.hs | 36 +++++++++++++++--------------- System/Random/MWC/Distributions.hs | 11 +++++---- System/Random/MWC/SeedSource.hs | 5 ++--- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/System/Random/MWC.hs b/System/Random/MWC.hs index 5fb4a5c..134bd02 100644 --- a/System/Random/MWC.hs +++ b/System/Random/MWC.hs @@ -158,7 +158,7 @@ module System.Random.MWC #include "MachDeps.h" #endif -import Control.Monad (ap, liftM, unless) +import Control.Monad (unless) import Control.Monad.Primitive (PrimMonad, PrimBase, PrimState, unsafePrimToIO, stToPrim) import Control.Monad.ST (ST,runST) import Data.Bits ((.&.), (.|.), shiftL, shiftR, xor) @@ -310,24 +310,24 @@ instance Variate Word where {-# INLINE uniformR #-} instance (Variate a, Variate b) => Variate (a,b) where - uniform g = (,) `liftM` uniform g `ap` uniform g - uniformR ((x1,y1),(x2,y2)) g = (,) `liftM` uniformR (x1,x2) g `ap` uniformR (y1,y2) g + uniform g = (,) <$> uniform g <*> uniform g + uniformR ((x1,y1),(x2,y2)) g = (,) <$> uniformR (x1,x2) g <*> uniformR (y1,y2) g {-# INLINE uniform #-} {-# INLINE uniformR #-} instance (Variate a, Variate b, Variate c) => Variate (a,b,c) where - uniform g = (,,) `liftM` uniform g `ap` uniform g `ap` uniform g + uniform g = (,,) <$> uniform g <*> uniform g <*> uniform g uniformR ((x1,y1,z1),(x2,y2,z2)) g = - (,,) `liftM` uniformR (x1,x2) g `ap` uniformR (y1,y2) g `ap` uniformR (z1,z2) g + (,,) <$> uniformR (x1,x2) g <*> uniformR (y1,y2) g <*> uniformR (z1,z2) g {-# INLINE uniform #-} {-# INLINE uniformR #-} instance (Variate a, Variate b, Variate c, Variate d) => Variate (a,b,c,d) where - uniform g = (,,,) `liftM` uniform g `ap` uniform g `ap` uniform g - `ap` uniform g + uniform g = (,,,) <$> uniform g <*> uniform g <*> uniform g + <*> uniform g uniformR ((x1,y1,z1,t1),(x2,y2,z2,t2)) g = - (,,,) `liftM` uniformR (x1,x2) g `ap` uniformR (y1,y2) g `ap` - uniformR (z1,z2) g `ap` uniformR (t1,t2) g + (,,,) <$> uniformR (x1,x2) g <*> uniformR (y1,y2) g <*> + uniformR (z1,z2) g <*> uniformR (t1,t2) g {-# INLINE uniform #-} {-# INLINE uniformR #-} @@ -496,12 +496,12 @@ toSeed v = Seed $ I.create $ do { Gen q <- initialize v; return q } -- | Save the state of a 'Gen', for later use by 'restore'. save :: PrimMonad m => Gen (PrimState m) -> m Seed -save (Gen q) = Seed `liftM` G.freeze q +save (Gen q) = Seed <$> G.freeze q {-# INLINE save #-} -- | Create a new 'Gen' that mirrors the state of a saved 'Seed'. restore :: PrimMonad m => Seed -> m (Gen (PrimState m)) -restore (Seed s) = Gen `liftM` G.thaw s +restore (Seed s) = Gen <$> G.thaw s {-# INLINE restore #-} @@ -591,9 +591,9 @@ aa = 1540315826 uniformWord32 :: PrimMonad m => Gen (PrimState m) -> m Word32 -- NOTE [Carry value] uniformWord32 (Gen q) = do - i <- nextIndex `liftM` M.unsafeRead q ioff - c <- fromIntegral `liftM` M.unsafeRead q coff - qi <- fromIntegral `liftM` M.unsafeRead q i + i <- nextIndex <$> M.unsafeRead q ioff + c <- fromIntegral <$> M.unsafeRead q coff + qi <- fromIntegral <$> M.unsafeRead q i let t = aa * qi + c c' = fromIntegral (t `shiftR` 32) x = fromIntegral t + c' @@ -613,11 +613,11 @@ uniform1 f gen = do uniform2 :: PrimMonad m => (Word32 -> Word32 -> a) -> Gen (PrimState m) -> m a uniform2 f (Gen q) = do - i <- nextIndex `liftM` M.unsafeRead q ioff + i <- nextIndex <$> M.unsafeRead q ioff let j = nextIndex i - c <- fromIntegral `liftM` M.unsafeRead q coff - qi <- fromIntegral `liftM` M.unsafeRead q i - qj <- fromIntegral `liftM` M.unsafeRead q j + c <- fromIntegral <$> M.unsafeRead q coff + qi <- fromIntegral <$> M.unsafeRead q i + qj <- fromIntegral <$> M.unsafeRead q j let t = aa * qi + c c' = fromIntegral (t `shiftR` 32) x = fromIntegral t + c' diff --git a/System/Random/MWC/Distributions.hs b/System/Random/MWC/Distributions.hs index 01e7a48..4d81ae5 100644 --- a/System/Random/MWC/Distributions.hs +++ b/System/Random/MWC/Distributions.hs @@ -40,7 +40,6 @@ module System.Random.MWC.Distributions ) where import Prelude hiding (mapM) -import Control.Monad (liftM) import Control.Monad.Primitive (PrimMonad, PrimState) import Data.Bits ((.&.)) import Data.Foldable (foldl') @@ -83,7 +82,7 @@ standard :: StatefulGen g m => g -> m Double standard gen = loop where loop = do - u <- (subtract 1 . (*2)) `liftM` uniformDoublePositive01M gen + u <- subtract 1 . (*2) <$> uniformDoublePositive01M gen ri <- uniformM gen let i = fromIntegral ((ri :: Word32) .&. 127) bi = I.unsafeIndex blocks i @@ -102,8 +101,8 @@ standard gen = loop else loop normalTail neg = tailing where tailing = do - x <- ((/rNorm) . log) `liftM` uniformDoublePositive01M gen - y <- log `liftM` uniformDoublePositive01M gen + x <- (/ rNorm) . log <$> uniformDoublePositive01M gen + y <- log <$> uniformDoublePositive01M gen if y * (-2) < x * x then tailing else return $! if neg then x - rNorm else rNorm - x @@ -257,7 +256,7 @@ bernoulli :: StatefulGen g m -> g -- ^ Generator -> m Bool {-# INLINE bernoulli #-} -bernoulli p gen = ( uniformDoublePositive01M gen -- | Random variate generator for categorical distribution. -- @@ -274,7 +273,7 @@ categorical v gen | G.null v = pkgError "categorical" "empty weights!" | otherwise = do let cv = G.scanl1' (+) v - p <- (G.last cv *) `liftM` uniformDoublePositive01M gen + p <- (G.last cv *) <$> uniformDoublePositive01M gen return $! case G.findIndex (>=p) cv of Just i -> i Nothing -> pkgError "categorical" "bad weights!" diff --git a/System/Random/MWC/SeedSource.hs b/System/Random/MWC/SeedSource.hs index fa4f333..c018999 100644 --- a/System/Random/MWC/SeedSource.hs +++ b/System/Random/MWC/SeedSource.hs @@ -10,7 +10,6 @@ module System.Random.MWC.SeedSource ( , randomSourceName ) where -import Control.Monad (liftM) import Data.Word (Word32,Word64) import Data.Bits (shiftR) import Data.Ratio ((%), numerator) @@ -31,8 +30,8 @@ import System.CPUTime (cpuTimePrecision, getCPUTime) -- Windows system. acquireSeedTime :: IO [Word32] acquireSeedTime = do - c <- (numerator . (% cpuTimePrecision)) `liftM` getCPUTime - t <- toRational `liftM` getPOSIXTime + c <- numerator . (% cpuTimePrecision) <$> getCPUTime + t <- toRational <$> getPOSIXTime let n = fromIntegral (numerator t) :: Word64 return [fromIntegral c, fromIntegral n, fromIntegral (n `shiftR` 32)] From f5f4be095c14dc7d0494a1ab8edb97d3bfb37689 Mon Sep 17 00:00:00 2001 From: Alexey Kuleshevich Date: Fri, 27 Dec 2024 13:13:52 -0700 Subject: [PATCH 5/9] Drop unnecessary `CPP` conditional --- System/Random/MWC/Distributions.hs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/System/Random/MWC/Distributions.hs b/System/Random/MWC/Distributions.hs index 4d81ae5..d2eba5a 100644 --- a/System/Random/MWC/Distributions.hs +++ b/System/Random/MWC/Distributions.hs @@ -1,5 +1,5 @@ {-# LANGUAGE MultiWayIf #-} -{-# LANGUAGE BangPatterns, CPP, GADTs, FlexibleContexts, ScopedTypeVariables #-} +{-# LANGUAGE BangPatterns, GADTs, FlexibleContexts, ScopedTypeVariables #-} -- | -- Module : System.Random.MWC.Distributions -- Copyright : (c) 2012 Bryan O'Sullivan @@ -43,9 +43,6 @@ import Prelude hiding (mapM) import Control.Monad.Primitive (PrimMonad, PrimState) import Data.Bits ((.&.)) import Data.Foldable (foldl') -#if !MIN_VERSION_base(4,8,0) -import Data.Traversable (Traversable) -#endif import Data.Traversable (mapM) import Data.Word (Word32) import System.Random.Stateful (StatefulGen(..),Uniform(..),UniformRange(..),uniformDoublePositive01M) From 939356d2b9518f4927e2e1813d1067ac5fe733d7 Mon Sep 17 00:00:00 2001 From: Alexey Khudyakov Date: Mon, 6 Jan 2025 20:06:15 +0300 Subject: [PATCH 6/9] Bump version & update changelog --- changelog.md | 5 +++++ mwc-random.cabal | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index bb35110..15c1340 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,8 @@ +## Changes in 0.15.2.0 + + * Support for `random-1.3`. + + ## Changes in 0.15.1.0 * Additon of binomial sampler using the rejection sampling method in diff --git a/mwc-random.cabal b/mwc-random.cabal index 3ee8aed..b09ce2d 100644 --- a/mwc-random.cabal +++ b/mwc-random.cabal @@ -1,7 +1,7 @@ cabal-version: 3.0 build-type: Simple name: mwc-random -version: 0.15.1.0 +version: 0.15.2.0 license: BSD-2-Clause license-file: LICENSE copyright: 2009, 2010, 2011 Bryan O'Sullivan From 582ccd8e54234e2f70c5265f6af4a795cb82ce98 Mon Sep 17 00:00:00 2001 From: Alexey Khudyakov Date: Mon, 6 Jan 2025 20:06:53 +0300 Subject: [PATCH 7/9] Update CI - Cabal 3.10 -> 3.12 - GHC 9.10 added --- .github/workflows/ci.yml | 64 ++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5e17be0..83fe986 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,40 +18,40 @@ jobs: matrix: include: ### -- Linux -- - - { cabal: "3.10", os: ubuntu-latest, ghc: "8.0.2" } - - { cabal: "3.10", os: ubuntu-latest, ghc: "8.2.2" } - - { cabal: "3.10", os: ubuntu-latest, ghc: "8.4.4" } - - { cabal: "3.10", os: ubuntu-latest, ghc: "8.6.5" } - - { cabal: "3.10", os: ubuntu-latest, ghc: "8.8.4" } - - { cabal: "3.10", os: ubuntu-latest, ghc: "8.10.7" } - - { cabal: "3.10", os: ubuntu-latest, ghc: "9.0.2" } - - { cabal: "3.10", os: ubuntu-latest, ghc: "9.2.8" } - - { cabal: "3.10", os: ubuntu-latest, ghc: "9.4.8" } - - { cabal: "3.10", os: ubuntu-latest, ghc: "9.6.5" } - - { cabal: "3.10", os: ubuntu-latest, ghc: "9.6.5" } - - { cabal: "3.10", os: ubuntu-latest, ghc: "9.8.2" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "8.0.2" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "8.2.2" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "8.4.4" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "8.6.5" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "8.8.4" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "8.10.7" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "9.0.2" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "9.2.8" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "9.4.8" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "9.6.6" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "9.8.2" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "9.10.1" } ## -- Win -- - - { cabal: "3.10", os: windows-latest, ghc: "8.4.4" } - - { cabal: "3.10", os: windows-latest, ghc: "8.6.5" } - - { cabal: "3.10", os: windows-latest, ghc: "8.8.4" } - - { cabal: "3.10", os: windows-latest, ghc: "8.10.7" } - - { cabal: "3.10", os: windows-latest, ghc: "9.0.2" } - - { cabal: "3.10", os: windows-latest, ghc: "9.2.8" } - - { cabal: "3.10", os: windows-latest, ghc: "9.4.8" } - - { cabal: "3.10", os: windows-latest, ghc: "9.6.5" } - - { cabal: "3.10", os: windows-latest, ghc: "9.6.5" } - - { cabal: "3.10", os: windows-latest, ghc: "9.8.2" } + - { cabal: "3.12", os: windows-latest, ghc: "8.4.4" } + - { cabal: "3.12", os: windows-latest, ghc: "8.6.5" } + - { cabal: "3.12", os: windows-latest, ghc: "8.8.4" } + - { cabal: "3.12", os: windows-latest, ghc: "8.10.7" } + - { cabal: "3.12", os: windows-latest, ghc: "9.0.2" } + - { cabal: "3.12", os: windows-latest, ghc: "9.2.8" } + - { cabal: "3.12", os: windows-latest, ghc: "9.4.8" } + - { cabal: "3.12", os: windows-latest, ghc: "9.6.6" } + - { cabal: "3.12", os: windows-latest, ghc: "9.8.2" } + - { cabal: "3.12", os: windows-latest, ghc: "9.10.1" } # MacOS - - { cabal: "3.10", os: macOS-13, ghc: "8.4.4" } - - { cabal: "3.10", os: macOS-13, ghc: "8.6.5" } - - { cabal: "3.10", os: macOS-13, ghc: "8.8.4" } - - { cabal: "3.10", os: macOS-13, ghc: "8.10.7" } - - { cabal: "3.10", os: macOS-13, ghc: "9.0.2" } - - { cabal: "3.10", os: macOS-latest, ghc: "9.2.8" } - - { cabal: "3.10", os: macOS-latest, ghc: "9.4.8" } - - { cabal: "3.10", os: macOS-latest, ghc: "9.6.5" } - - { cabal: "3.10", os: macOS-latest, ghc: "9.6.5" } - - { cabal: "3.10", os: macOS-latest, ghc: "9.8.2" } + - { cabal: "3.12", os: macOS-13, ghc: "8.4.4" } + - { cabal: "3.12", os: macOS-13, ghc: "8.6.5" } + - { cabal: "3.12", os: macOS-13, ghc: "8.8.4" } + - { cabal: "3.12", os: macOS-13, ghc: "8.10.7" } + - { cabal: "3.12", os: macOS-13, ghc: "9.0.2" } + - { cabal: "3.12", os: macOS-latest, ghc: "9.2.8" } + - { cabal: "3.12", os: macOS-latest, ghc: "9.4.8" } + - { cabal: "3.12", os: macOS-latest, ghc: "9.6.6" } + - { cabal: "3.12", os: macOS-latest, ghc: "9.8.2" } + - { cabal: "3.12", os: macOS-latest, ghc: "9.10.1" } fail-fast: false steps: From 03beb51a614bbdacaa6d342441985e9e8356bacb Mon Sep 17 00:00:00 2001 From: Alexey Kuleshevich Date: Mon, 6 Jan 2025 10:55:00 -0700 Subject: [PATCH 8/9] Add a lower bound for `tasty-quickcheck` --- mwc-random.cabal | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mwc-random.cabal b/mwc-random.cabal index b09ce2d..b49fb5b 100644 --- a/mwc-random.cabal +++ b/mwc-random.cabal @@ -120,9 +120,9 @@ test-suite mwc-prop-tests , QuickCheck >=2.2 , vector >=0.12.1 , tasty >=1.3.1 - , tasty-quickcheck + , tasty-quickcheck >=0.10.2 , tasty-hunit - , random >=1.2 + , random >=1.2 , mtl , math-functions >=0.3.4 From 1dc625696b2a7d678780573b1d6884a4ac828bc4 Mon Sep 17 00:00:00 2001 From: Alexey Kuleshevich Date: Mon, 6 Jan 2025 11:43:12 -0700 Subject: [PATCH 9/9] Add ghc-9.12 to CI and update tested-with in cabal Update upper bound for doctest to include a version that works with ghc-9.12 --- .github/workflows/ci.yml | 9 ++++++--- mwc-random.cabal | 9 +++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 83fe986..ef378aa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,8 +28,9 @@ jobs: - { cabal: "3.12", os: ubuntu-latest, ghc: "9.2.8" } - { cabal: "3.12", os: ubuntu-latest, ghc: "9.4.8" } - { cabal: "3.12", os: ubuntu-latest, ghc: "9.6.6" } - - { cabal: "3.12", os: ubuntu-latest, ghc: "9.8.2" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "9.8.4" } - { cabal: "3.12", os: ubuntu-latest, ghc: "9.10.1" } + - { cabal: "3.12", os: ubuntu-latest, ghc: "9.12.1" } ## -- Win -- - { cabal: "3.12", os: windows-latest, ghc: "8.4.4" } - { cabal: "3.12", os: windows-latest, ghc: "8.6.5" } @@ -39,8 +40,9 @@ jobs: - { cabal: "3.12", os: windows-latest, ghc: "9.2.8" } - { cabal: "3.12", os: windows-latest, ghc: "9.4.8" } - { cabal: "3.12", os: windows-latest, ghc: "9.6.6" } - - { cabal: "3.12", os: windows-latest, ghc: "9.8.2" } + - { cabal: "3.12", os: windows-latest, ghc: "9.8.4" } - { cabal: "3.12", os: windows-latest, ghc: "9.10.1" } + - { cabal: "3.12", os: windows-latest, ghc: "9.12.1" } # MacOS - { cabal: "3.12", os: macOS-13, ghc: "8.4.4" } - { cabal: "3.12", os: macOS-13, ghc: "8.6.5" } @@ -50,8 +52,9 @@ jobs: - { cabal: "3.12", os: macOS-latest, ghc: "9.2.8" } - { cabal: "3.12", os: macOS-latest, ghc: "9.4.8" } - { cabal: "3.12", os: macOS-latest, ghc: "9.6.6" } - - { cabal: "3.12", os: macOS-latest, ghc: "9.8.2" } + - { cabal: "3.12", os: macOS-latest, ghc: "9.8.4" } - { cabal: "3.12", os: macOS-latest, ghc: "9.10.1" } + - { cabal: "3.12", os: macOS-latest, ghc: "9.12.1" } fail-fast: false steps: diff --git a/mwc-random.cabal b/mwc-random.cabal index b49fb5b..f647fff 100644 --- a/mwc-random.cabal +++ b/mwc-random.cabal @@ -45,9 +45,10 @@ tested-with: || ==9.0.2 || ==9.2.8 || ==9.4.8 - || ==9.6.5 - || ==9.6.5 - || ==9.8.2 + || ==9.6.6 + || ==9.8.4 + || ==9.10.1 + || ==9.12.1 source-repository head @@ -141,7 +142,7 @@ test-suite mwc-doctests build-depends: base -any , mwc-random -any - , doctest >=0.15 && <0.23 + , doctest >=0.15 && <0.24 -- , bytestring , primitive