All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Compatible Versioning.
10.7 - 2021-01-30
- Support for GHC 8.10/base-4.14
10.6 - 2020-12-26
- Updated Diff dependency.
- Simplified LwwElementSet implementation. We know for sure the new item is happened-after all existing items, so we can use unconditional insert.
- Dropped support of GHC < 8.8, since this package is for experiments only.
10.5 - 2019-09-22
- Diff dependency bounds
10.4 - 2019-02-27
- Support for GHC 8.6
- Use IORef as a container for local time instead of TVar.
10.3 - 2018-08-03
- Instance Semilattice (CvRDT) for Maybe
10.2 - 2018-06-08
- Building with GHC 8.0
10.1 - 2018-06-08
- Support for GHC 8.4
4.0 - 2017-11-30
3.0 - 2017-11-25
2.1 - 2017-10-08
2.0 - 2017-10-08
1.0 - 2017-10-03
- CRDTs:
CRDT.Cm.Counter
for the op-based counter.- Law test.
CRDT.Cm.GSet
for the op-based G-set.- Op-based LWW with
Assign
op. CRDT.Cm.TPSet
for the op-based 2P-set.- Law test.
CRDT.Cv.Max
.- Law test.
- Class
Observe
. - Module
LamportClock
to work with Lamport clock simulation:- Types
Time
,Timestamp
,Pid
,LamportClock
,Process
. - Class
Clock
. - Functions
barrier
,runLamportClock
,runProcess
.
- Types
- Module
Lens.Micro.Extra
with lens helpers.
- Reorganized modules:
- Grouped into two groups:
CRDT.Cm
for Cm types andCRDT.Cv
for Cv ones. - Removed
Internal
submodules; all guts are exported until it will become an issue.
- Grouped into two groups:
CmRDT
class:- Made it parameterized by 3 types: payload, op and update.
- Used
PartialOrd
(fromlattices:Algebra.PartialOrd
) of ops as a prerequisite. - Used
Observe
to compare only user-visible parts of CmRDT payload. - Renamed
update
toupdateDownstream
to be closer to the paper. - Added
updateAtSource
as written in the paper.- Added its precodition as the separate method
updateAtSourcePre
.
- Added its precodition as the separate method
- Allowed updates to be run in a
Clock
-constrained monad to get timestamps.
- LWW:
- Cv variant:
- Made
initial
andassign
dependent onClock
monad since they need timestamps and cannot rely on user-provided timestamps.
- Made
- Cv variant:
- Module
Data.Semilattice
:- Renamed Semilattice specialization of Semigroup's
(<>)
fromslappend
tomerge
to show symmetry.
- Renamed Semilattice specialization of Semigroup's
- Moved
Arbitrary
orphan instances fromInstances
module intoArbitraryOrphans
module. - CmRDT law test:
- Used Lamport clock to check ops and update payloads at source.
0.5 - 2017-09-26
- Exported
GSet
type.
- Cabal-file:
- Shorten
copyright
section.
- Shorten
0.4 - 2017-09-26
- Travis config.
- HLint config.
- README.
- CRDTs:
GSet
for G-set.
Timestamp
type for simple natural timestamps.- In module
CRDT.LWW
:- Functions for LWW:
point
.write
.query
.
- Functions for LWW:
- Nikolay Loginov as an author.
- Tests:
GCounter
:- CmRDT variant:
- Law.
- Increment.
- CvRDT variant:
- Laws.
- Increment.
- CmRDT variant:
GSet
:- CvRDT laws.
- Add.
LWW
:- CmRDT instance:
- Law.
- Write latter.
- Write former.
- CvRDT instance:
- Laws.
- Write latter.
- Write former.
- CmRDT instance:
PNCounter
:- CmRDT variant:
- Law.
- Increment.
- Decrement.
- CvRDT variant:
- Laws.
- Increment.
- Decrement.
- CmRDT variant:
- Module
Data.Semilattice
:- Renamed Semilattice specialization of Semigroup's
(<>)
from(<>)
toslappend
.
- Renamed Semilattice specialization of Semigroup's
- Moved law tests to the module
Test.Laws
.
- Common CmRDT
query
function.
0.3 - 2017-09-24
- Changed implemetation of
GCounter
fromVector
toIntMap
.
0.2 - 2017-05-15
- Module
Data.Semilattice
:- Class
Semilattice
, the same asCvRDT
was earlier.
- Class
- Renamed
CvRDT
class toSemilattice
. Re-addedCvRDT
as an alias toSemilattice
. - Renamed tests to reflect that CvRDT = Semilattice.
0.1 - 2017-05-15
- Hackage package
crdt
. - Classes:
CmRDT
CvRDT
- CRDTs:
GCounter
for G-counter:- Cm variant.
- Cv variant.
LWW
.PNCounter
for PN-counter:- Cm variant.
- Cv variant.
- Tests:
- CmRDT law.
- CvRDT laws.
GCounter
:- increment
LWW
.PNCounter
:- Increment.
- Decrement.
- Stylish-haskell config.