consistent 0.0.1 → 0.1.0
raw patch · 3 files changed
+16/−14 lines, 3 filesdep ~basedep ~monad-controldep ~transformersPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, monad-control, transformers, transformers-base
API changes (from Hackage documentation)
- Control.Concurrent.Consistent: instance Applicative m => Applicative (CTMT m)
- Control.Concurrent.Consistent: instance Applicative m => Applicative (ConsistentT m)
- Control.Concurrent.Consistent: instance Functor m => Functor (CTMT m)
- Control.Concurrent.Consistent: instance Functor m => Functor (ConsistentT m)
- Control.Concurrent.Consistent: instance Monad m => Monad (CTMT m)
- Control.Concurrent.Consistent: instance Monad m => Monad (ConsistentT m)
- Control.Concurrent.Consistent: instance MonadBase IO m => MonadBase IO (ConsistentT m)
- Control.Concurrent.Consistent: instance MonadBaseControl IO m => MonadBaseControl IO (ConsistentT m)
- Control.Concurrent.Consistent: instance MonadIO m => MonadIO (CTMT m)
- Control.Concurrent.Consistent: instance MonadIO m => MonadIO (ConsistentT m)
+ Control.Concurrent.Consistent: instance Control.Monad.Base.MonadBase GHC.Types.IO m => Control.Monad.Base.MonadBase GHC.Types.IO (Control.Concurrent.Consistent.ConsistentT m)
+ Control.Concurrent.Consistent: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Concurrent.Consistent.CTMT m)
+ Control.Concurrent.Consistent: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Concurrent.Consistent.ConsistentT m)
+ Control.Concurrent.Consistent: instance Control.Monad.Trans.Control.MonadBaseControl GHC.Types.IO m => Control.Monad.Trans.Control.MonadBaseControl GHC.Types.IO (Control.Concurrent.Consistent.ConsistentT m)
+ Control.Concurrent.Consistent: instance GHC.Base.Applicative m => GHC.Base.Applicative (Control.Concurrent.Consistent.CTMT m)
+ Control.Concurrent.Consistent: instance GHC.Base.Applicative m => GHC.Base.Applicative (Control.Concurrent.Consistent.ConsistentT m)
+ Control.Concurrent.Consistent: instance GHC.Base.Functor m => GHC.Base.Functor (Control.Concurrent.Consistent.CTMT m)
+ Control.Concurrent.Consistent: instance GHC.Base.Functor m => GHC.Base.Functor (Control.Concurrent.Consistent.ConsistentT m)
+ Control.Concurrent.Consistent: instance GHC.Base.Monad m => GHC.Base.Monad (Control.Concurrent.Consistent.CTMT m)
+ Control.Concurrent.Consistent: instance GHC.Base.Monad m => GHC.Base.Monad (Control.Concurrent.Consistent.ConsistentT m)
Files
- Control/Concurrent/Consistent.hs +6/−6
- consistent.cabal +8/−8
- test/main.hs +2/−0
Control/Concurrent/Consistent.hs view
@@ -4,6 +4,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} @@ -49,12 +50,11 @@ liftBase b = ConsistentT $ liftBase b instance MonadBaseControl IO m => MonadBaseControl IO (ConsistentT m) where- newtype StM (ConsistentT m) a =- StMConsistentT (StM (ReaderT ConsistentState m) a)- liftBaseWith f =- ConsistentT $ liftBaseWith $ \runInBase -> f $ \k ->- liftM StMConsistentT $ runInBase $ getConsistentT k- restoreM (StMConsistentT m) = ConsistentT . restoreM $ m+ type StM (ConsistentT m) a =+ StM (ReaderT ConsistentState m) a+ liftBaseWith f = ConsistentT $ liftBaseWith $ \runInBase ->+ f $ \k -> runInBase $ getConsistentT k+ restoreM = ConsistentT . restoreM newtype CTMT m a = CTMT (WriterT [STM (Maybe (STM ()))] (ConsistentT m) a) deriving (Functor, Applicative, Monad, MonadIO)
consistent.cabal view
@@ -1,5 +1,5 @@ Name: consistent-Version: 0.0.1+Version: 0.1.0 Synopsis: Eventually consistent STM transactions. License-file: LICENSE License: MIT@@ -10,10 +10,10 @@ Category: System Description: Eventually consistent STM transactions.- \+ . Consistent provides eventually consistent atomic transactions, by delaying updates until no threads is mutating a shared variable.- \+ . This comes at a cost of having a separate TVar for every thread, but has the advantage that no thread will ever lock or retry except for the manager actor responsible for performing the updates.@@ -26,10 +26,10 @@ default-language: Haskell98 ghc-options: -Wall build-depends:- base >= 3 && < 5- , monad-control >= 0.3.2.3- , transformers >= 0.3.0.0- , transformers-base >= 0.4.1+ base >= 4.9 && < 4.10+ , monad-control >= 1.0.1+ , transformers >= 0.5+ , transformers-base >= 0.4 , lifted-base >= 0.2.2.0 , lifted-async >= 0.1.1 , unordered-containers >= 0.2.3.0@@ -46,5 +46,5 @@ build-depends: base , consistent- , transformers >= 0.3.0.0+ , transformers >= 0.4 , lifted-async >= 0.1.1
test/main.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE FlexibleContexts #-}+ module Main where import Control.Concurrent