packages feed

crdt 10.2 → 10.3

raw patch · 5 files changed

+15/−9 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- CRDT.Cv.GCounter: instance GHC.Classes.Ord a => Data.Semigroup.Semigroup (CRDT.Cv.GCounter.GCounter a)
- CRDT.Cv.LwwElementSet: instance GHC.Classes.Ord a => Data.Semigroup.Semigroup (CRDT.Cv.LwwElementSet.LwwElementSet a)
- CRDT.Cv.ORSet: instance GHC.Classes.Ord a => Data.Semigroup.Semigroup (CRDT.Cv.ORSet.ORSet a)
- CRDT.Cv.PNCounter: instance GHC.Classes.Ord a => Data.Semigroup.Semigroup (CRDT.Cv.PNCounter.PNCounter a)
- CRDT.Cv.RGA: instance (GHC.Classes.Eq a, Data.Empty.AsEmpty a) => Data.Semigroup.Semigroup (CRDT.Cv.RGA.RGA a)
- CRDT.Cv.TwoPSet: instance GHC.Classes.Ord a => Data.Semigroup.Semigroup (CRDT.Cv.TwoPSet.TwoPSet a)
- CRDT.LWW: instance GHC.Classes.Eq a => Data.Semigroup.Semigroup (CRDT.LWW.LWW a)
- Data.MultiMap: instance (GHC.Classes.Eq v, GHC.Classes.Eq k) => GHC.Classes.Eq (Data.MultiMap.MultiMap k v)
- Data.MultiMap: instance (GHC.Show.Show v, GHC.Show.Show k) => GHC.Show.Show (Data.MultiMap.MultiMap k v)
+ CRDT.Cv.GCounter: instance GHC.Classes.Ord a => GHC.Base.Semigroup (CRDT.Cv.GCounter.GCounter a)
+ CRDT.Cv.LwwElementSet: instance GHC.Classes.Ord a => GHC.Base.Semigroup (CRDT.Cv.LwwElementSet.LwwElementSet a)
+ CRDT.Cv.ORSet: instance GHC.Classes.Ord a => GHC.Base.Semigroup (CRDT.Cv.ORSet.ORSet a)
+ CRDT.Cv.PNCounter: instance GHC.Classes.Ord a => GHC.Base.Semigroup (CRDT.Cv.PNCounter.PNCounter a)
+ CRDT.Cv.RGA: instance (GHC.Classes.Eq a, Data.Empty.AsEmpty a) => GHC.Base.Semigroup (CRDT.Cv.RGA.RGA a)
+ CRDT.Cv.TwoPSet: instance GHC.Classes.Ord a => GHC.Base.Semigroup (CRDT.Cv.TwoPSet.TwoPSet a)
+ CRDT.LWW: instance GHC.Classes.Eq a => GHC.Base.Semigroup (CRDT.LWW.LWW a)
+ CRDT.LamportClock.Simulation: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (CRDT.LamportClock.Simulation.LamportClockSimT m)
+ CRDT.LamportClock.Simulation: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (CRDT.LamportClock.Simulation.ProcessSimT m)
+ Data.MultiMap: instance (GHC.Classes.Eq k, GHC.Classes.Eq v) => GHC.Classes.Eq (Data.MultiMap.MultiMap k v)
+ Data.MultiMap: instance (GHC.Show.Show k, GHC.Show.Show v) => GHC.Show.Show (Data.MultiMap.MultiMap k v)
+ Data.Semilattice: instance Data.Semilattice.Semilattice a => Data.Semilattice.Semilattice (GHC.Base.Maybe a)
- CRDT.Cv.Max: newtype Max a :: * -> *
+ CRDT.Cv.Max: newtype Max a

Files

crdt.cabal view
@@ -1,5 +1,5 @@ name: crdt-version: 10.2+version: 10.3           -- ^ ComVer category: Distributed Systems copyright:
lib/CRDT/Cm/RGA.hs view
@@ -84,8 +84,7 @@             case Map.lookupMax vertexIxs of                 Just (LamportTime maxKnownTime _, _) -> advance maxKnownTime                 Nothing                              -> pure ()-            newId <- getTime-            pure $ OpAddAfter mOldId atom newId+            OpAddAfter mOldId atom <$> getTime      makeOp (Remove w) payload         | lookup w payload = Just . pure $ OpRemove w
lib/CRDT/LamportClock.hs view
@@ -84,8 +84,10 @@         timeVar <- ask         lift $ atomically $ modifyTVar' timeVar $ max time -    getTimes n' = do-        timeRangeStart <- LamportClock $ do+    getTimes n' = LamportTime <$> getTimes' <*> getPid+      where+        n = max n' 1+        getTimes' = LamportClock $ do             timeVar <- ask             lift $ do                 realTime <- getRealLocalTime@@ -94,10 +96,6 @@                     let timeRangeStart = max realTime (timeCur + 1)                     writeTVar timeVar $ timeRangeStart + n - 1                     pure timeRangeStart-        pid <- getPid-        pure $ LamportTime timeRangeStart pid-      where-        n = max n' 1  instance Process m => Process (ReaderT r m) where     getPid = lift getPid
lib/CRDT/LamportClock/Simulation.hs view
@@ -22,6 +22,7 @@                                        throwError) import           Control.Monad.Fail (MonadFail) import qualified Control.Monad.Fail as Fail+import           Control.Monad.IO.Class (MonadIO, liftIO) import           Control.Monad.Reader (ReaderT, ask, runReaderT) import           Control.Monad.State.Strict (StateT, evalState, evalStateT,                                              modify, state)@@ -53,6 +54,9 @@ instance Monad m => MonadFail (LamportClockSimT m) where     fail = throwError +instance MonadIO m => MonadIO (LamportClockSimT m) where+    liftIO io = LamportClockSim $ liftIO io+ type LamportClockSim = LamportClockSimT Identity  -- | ProcessSim inside Lamport clock simulation.@@ -82,6 +86,9 @@         advancePS = \case             Nothing      -> time             Just current -> max time current++instance MonadIO m => MonadIO (ProcessSimT m) where+    liftIO io = ProcessSim $ liftIO io  runLamportClockSim :: LamportClockSim a -> Either String a runLamportClockSim (LamportClockSim action) =
lib/Data/Semilattice.hs view
@@ -36,3 +36,5 @@ instance Ord a => Semilattice (Max a)  instance Ord a => Semilattice (Set a)++instance Semilattice a => Semilattice (Maybe a)