packages feed

rcu 0.2.5 → 0.2.6

raw patch · 9 files changed

+72/−38 lines, 9 filesdep ~transformers

Dependency ranges changed: transformers

Files

.hlint.yaml view
@@ -1,4 +1,4 @@-- arguments: [--cpp-define=HLINT, --cpp-ansi]+- arguments: [-XCPP, --cpp-define=HLINT, --cpp-ansi]  - ignore: {name: Reduce duplication} - ignore: {name: Redundant lambda}
CHANGELOG.markdown view
@@ -1,3 +1,7 @@+## 0.2.6 [2022.05.18]+---------------------+* Make the `IncCounterExperiment` benchmark compile with GHC 9.4.+ ## 0.2.5 [2021.02.17] --------------------- * The build-type has been changed from `Custom` to `Simple`.
examples/IncCounterExperiment.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE MagicHash #-} {-# LANGUAGE UnboxedTuples #-} -----------------------------------------------------------------------------@@ -54,15 +55,25 @@ incCounterAtomic :: Counter -> IO Word64 incCounterAtomic (Counter (MutableByteArray c)) = primitive $ \ s ->   case fetchAddIntArray# c 0# 2# s of-       (# s', r #) -> (# s', W64# (int2Word# r) #)+       (# s', r #) ->+#if MIN_VERSION_base(4,17,0)+         (# s', W64# (wordToWord64# (int2Word# r)) #)+#else+         (# s', W64# (int2Word# r) #)+#endif {-# INLINE incCounterAtomic #-}  incCounterNonAtomicFancy :: Counter -> IO Word64 incCounterNonAtomicFancy (Counter (MutableByteArray c)) = primitive $ \ s ->   case readWord64Array# c 0# s of-       (# s', r #) -> case plusWord# r (int2Word# 2#) of-                           r' -> case writeWord64Array# c 0# r' s' of-                                      s'' -> (# s'', W64# r' #)+       (# s', r #) ->+#if MIN_VERSION_base(4,17,0)+         case plusWord64# r (wordToWord64# 2##) of+#else+         case plusWord# r 2## of+#endif+              r' -> case writeWord64Array# c 0# r' s' of+                         s'' -> (# s'', W64# r' #) {-# INLINE incCounterNonAtomicFancy #-}  incCounterNonAtomic :: Counter -> IO Word64
examples/TimeSynchronize.hs view
@@ -77,9 +77,9 @@ writer n m = do #if MEASURE_SYNCHRONIZE   helper n m timeZero-  where helper 0  _ !acc = return acc-        helper !n m !acc = do d <- m-                              helper (pred n) m (acc + d)+  where helper 0   _  !acc = return acc+        helper !n' m' !acc = do d <- m'+                                helper (pred n') m' (acc + d) #else   replicateM_ n m   return timeZero@@ -191,7 +191,7 @@   let aud = wtd / fromIntegral nUpdates   putStrLn $ "average writer update time: " ++ show aud #if MEASURE_SYNCHRONIZE-  putStrLn $ "average synchronize time: " ++ show wfrd+  putStrLn $ "average synchronize time: " ++ show _wfrd #endif   where opts = info optsParser              ( fullDesc
rcu.cabal view
@@ -1,6 +1,6 @@ name:          rcu category:      Data-version:       0.2.5+version:       0.2.6 license:       BSD3 cabal-version: 1.22 license-file:  LICENSE@@ -16,8 +16,10 @@              , GHC == 8.2.2              , GHC == 8.4.4              , GHC == 8.6.5-             , GHC == 8.8.3-             , GHC == 8.10.1+             , GHC == 8.8.4+             , GHC == 8.10.7+             , GHC == 9.0.2+             , GHC == 9.2.2 synopsis:      Read-Copy-Update for Haskell description:   Read-Copy-Update for Haskell. @@ -50,7 +52,7 @@     ghc-prim >= 0.3,     parallel >= 3.2 && < 3.3,     primitive >= 0.6,-    transformers >= 0.4 && < 0.6+    transformers >= 0.4 && < 0.7    exposed-modules:     Control.Concurrent.RCU.Class@@ -132,7 +134,7 @@     primitive >= 0.6,     rcu,     rdtsc >= 1.3.0.1,-    transformers >= 0.4 && < 0.6+    transformers >= 0.4 && < 0.7    if flag(measure-synchronize)     cpp-options: -DMODE=QSBR -DBENCHMARKS -DMEASURE_SYNCHRONIZE@@ -159,7 +161,7 @@     primitive >= 0.6,     rcu,     rdtsc >= 1.3.0.1,-    transformers >= 0.4 && < 0.6+    transformers >= 0.4 && < 0.7    if flag(measure-synchronize)     cpp-options: -DMODE=GC -DBENCHMARKS -DMEASURE_SYNCHRONIZE@@ -186,7 +188,7 @@     primitive >= 0.6,     rcu,     time >= 1.5.0.1,-    transformers >= 0.4 && < 0.6+    transformers >= 0.4 && < 0.7    if flag(measure-synchronize)     cpp-options: -DMODE=QSBR -DBENCHMARKS -DUNBOUND -DMEASURE_SYNCHRONIZE@@ -213,7 +215,7 @@     primitive >= 0.6,     rcu,     time >= 1.5.0.1,-    transformers >= 0.4 && < 0.6+    transformers >= 0.4 && < 0.7    if flag(measure-synchronize)     cpp-options: -DMODE=GC -DBENCHMARKS -DUNBOUND -DMEASURE_SYNCHRONIZE@@ -240,7 +242,7 @@     primitive >= 0.6,     rcu,     time >= 1.5.0.1,-    transformers >= 0.4 && < 0.6+    transformers >= 0.4 && < 0.7    if flag(measure-synchronize)     cpp-options: -DMODE=QSBR -DBENCHMARKS -DUNBOUND -DMEASURE_SYNCHRONIZE@@ -267,7 +269,7 @@     primitive >= 0.6,     rcu,     time >= 1.5.0.1,-    transformers >= 0.4 && < 0.6+    transformers >= 0.4 && < 0.7    if flag(measure-synchronize)     cpp-options: -DMODE=GC -DBENCHMARKS -DUNBOUND -DMEASURE_SYNCHRONIZE@@ -294,7 +296,7 @@     primitive >= 0.6,     rcu,     rdtsc >= 1.3.0.1,-    transformers >= 0.4 && < 0.6+    transformers >= 0.4 && < 0.7    if flag(measure-synchronize)     cpp-options: -DMODE=QSBR -DBENCHMARKS -DMEASURE_SYNCHRONIZE@@ -321,7 +323,7 @@     primitive >= 0.6,     rcu,     rdtsc >= 1.3.0.1,-    transformers >= 0.4 && < 0.6+    transformers >= 0.4 && < 0.7    if flag(measure-synchronize)     cpp-options: -DMODE=GC -DBENCHMARKS -DMEASURE_SYNCHRONIZE@@ -348,7 +350,7 @@     primitive >= 0.6,     rcu,     rdtsc >= 1.3.0.1,-    transformers >= 0.4 && < 0.6+    transformers >= 0.4 && < 0.7    if flag(measure-synchronize)     cpp-options: -DMODE=QSBR -DBENCHMARKS -DMEASURE_SYNCHRONIZE@@ -375,7 +377,7 @@     primitive >= 0.6,     rcu,     rdtsc >= 1.3.0.1,-    transformers >= 0.4 && < 0.6+    transformers >= 0.4 && < 0.7    if flag(measure-synchronize)     cpp-options: -DMODE=GC -DBENCHMARKS -DMEASURE_SYNCHRONIZE@@ -402,7 +404,7 @@     primitive >= 0.6,     rcu,     rdtsc >= 1.3.0.1,-    transformers >= 0.4 && < 0.6+    transformers >= 0.4 && < 0.7    if flag(measure-synchronize)     cpp-options: -DMODE=QSBR -DBENCHMARKS -DMEASURE_SYNCHRONIZE@@ -429,7 +431,7 @@     primitive >= 0.6,     rcu,     rdtsc >= 1.3.0.1,-    transformers >= 0.4 && < 0.6+    transformers >= 0.4 && < 0.7    if flag(measure-synchronize)     cpp-options: -DMODE=GC -DBENCHMARKS -DMEASURE_SYNCHRONIZE
src/Control/Concurrent/RCU/Class.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE Safe #-} {-# LANGUAGE Rank2Types #-} {-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE DefaultSignatures #-}
src/Control/Concurrent/RCU/GC/Internal.hs view
@@ -47,7 +47,7 @@ import Control.Parallel import Data.Atomics import Data.IORef-import Data.List+import qualified Data.List as L import Data.Primitive import Prelude hiding (Read(..)) import System.Mem@@ -135,10 +135,12 @@   ReadingRCU mf <*> ReadingRCU ma = ReadingRCU $ \ s -> mf s <*> ma s  instance Monad (ReadingRCU s) where-  return a = ReadingRCU $ \ _ -> pure a   ReadingRCU m >>= f = ReadingRCU $ \ s -> do     a <- m s     runReadingRCU (f a) s+#if !(MIN_VERSION_base(4,11,0))+  return a = ReadingRCU $ \ _ -> pure a+#endif #if !(MIN_VERSION_base(4,13,0))   fail = Fail.fail #endif@@ -174,10 +176,12 @@   WritingRCU mf <*> WritingRCU ma = WritingRCU $ \ s -> mf s <*> ma s  instance Monad (WritingRCU s) where-  return a = WritingRCU $ \ _ -> pure a   WritingRCU m >>= f = WritingRCU $ \ s -> do     a <- m s     runWritingRCU (f a) s+#if !(MIN_VERSION_base(4,11,0))+  return a = WritingRCU $ \ _ -> pure a+#endif #if !(MIN_VERSION_base(4,13,0))   fail = Fail.fail #endif@@ -258,11 +262,13 @@   deriving Functor  instance Applicative (RCU s) where-  pure = return+  pure a = RCU $ \ _ -> return a   (<*>) = ap  instance Monad (RCU s) where+#if !(MIN_VERSION_base(4,11,0))   return a = RCU $ \ _ -> return a+#endif   RCU m >>= f = RCU $ \s -> do     a <- m s     unRCU (f a) s@@ -289,7 +295,7 @@     tid <- forkIO $ do       x <- m $ s { rcuStateMyCounter = threadCounter }       putMVar result x-      modifyMVar_ (rcuStateThreadCountersV s) $ return . delete threadCounter+      modifyMVar_ (rcuStateThreadCountersV s) $ return . L.delete threadCounter     return (RCUThread tid result)   {-# INLINE forking #-} 
src/Control/Concurrent/RCU/QSBR/Internal.hs view
@@ -50,7 +50,7 @@ import Control.Parallel import Data.Atomics import Data.IORef-import Data.List+import qualified Data.List as L import Data.Primitive import Foreign import qualified Control.Monad.Fail as Fail@@ -146,10 +146,12 @@   ReadingRCU mf <*> ReadingRCU ma = ReadingRCU $ \ s -> mf s <*> ma s  instance Monad (ReadingRCU s) where-  return a = ReadingRCU $ \ _ -> pure a   ReadingRCU m >>= f = ReadingRCU $ \ s -> do     a <- m s     runReadingRCU (f a) s+#if !(MIN_VERSION_base(4,11,0))+  return a = ReadingRCU $ \ _ -> pure a+#endif #if !(MIN_VERSION_base(4,13,0))   fail = Fail.fail #endif@@ -185,10 +187,12 @@   WritingRCU mf <*> WritingRCU ma = WritingRCU $ \ s -> mf s <*> ma s  instance Monad (WritingRCU s) where-  return a = WritingRCU $ \ _ -> pure a   WritingRCU m >>= f = WritingRCU $ \ s -> do     a <- m s     runWritingRCU (f a) s+#if !(MIN_VERSION_base(4,11,0))+  return a = WritingRCU $ \ _ -> pure a+#endif #if !(MIN_VERSION_base(4,13,0))   fail = Fail.fail #endif@@ -265,11 +269,13 @@   deriving Functor  instance Applicative (RCU s) where-  pure = return+  pure a = RCU $ \ _ -> return a   (<*>) = ap  instance Monad (RCU s) where+#if !(MIN_VERSION_base(4,11,0))   return a = RCU $ \ _ -> return a+#endif   RCU m >>= f = RCU $ \s -> do     a <- m s     unRCU (f a) s@@ -310,7 +316,7 @@       -- and remove this counter from the list writers poll.       writeBarrier       writeCounter threadCounter offline-      withMVar rcuStateThreadCountersLockV $ \ _ -> writeSRefIO rcuStateThreadCountersR . delete threadCounter =<< readSRefIO rcuStateThreadCountersR+      withMVar rcuStateThreadCountersLockV $ \ _ -> writeSRefIO rcuStateThreadCountersR . L.delete threadCounter =<< readSRefIO rcuStateThreadCountersR     return (RCUThread tid result)   {-# INLINE forking #-} 
unstable/Control/Concurrent/RCU/STM/Internal.hs view
@@ -80,7 +80,9 @@   WritingRCU mf <*> WritingRCU ma = WritingRCU $ \c -> mf c <*> ma c  instance Monad (WritingRCU s) where-  return a = WritingRCU $ \ _ -> pure a+#if !(MIN_VERSION_base(4,11,0))+  return = pure+#endif   WritingRCU m >>= f = WritingRCU $ \ c -> do     a <- m c     runWritingRCU (f a) c@@ -122,11 +124,13 @@   deriving Functor  instance Applicative (RCU s) where-  pure = return+  pure a = RCU $ \ _ -> pure a   (<*>) = ap  instance Monad (RCU s) where-  return a = RCU $ \ _ -> return a+#if !(MIN_VERSION_base(4,11,0))+  return = pure+#endif   RCU m >>= f = RCU $ \s -> do     a <- m s     unRCU (f a) s