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.Counterfor the op-based counter.- Law test.
CRDT.Cm.GSetfor the op-based G-set.- Op-based LWW with
Assignop. CRDT.Cm.TPSetfor the op-based 2P-set.- Law test.
CRDT.Cv.Max.- Law test.
- Class
Observe. - Module
LamportClockto work with Lamport clock simulation:- Types
Time,Timestamp,Pid,LamportClock,Process. - Class
Clock. - Functions
barrier,runLamportClock,runProcess.
- Types
- Module
Lens.Micro.Extrawith lens helpers.
- Reorganized modules:
- Grouped into two groups:
CRDT.Cmfor Cm types andCRDT.Cvfor Cv ones. - Removed
Internalsubmodules; all guts are exported until it will become an issue.
- Grouped into two groups:
CmRDTclass:- Made it parameterized by 3 types: payload, op and update.
- Used
PartialOrd(fromlattices:Algebra.PartialOrd) of ops as a prerequisite. - Used
Observeto compare only user-visible parts of CmRDT payload. - Renamed
updatetoupdateDownstreamto be closer to the paper. - Added
updateAtSourceas 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
initialandassigndependent onClockmonad since they need timestamps and cannot rely on user-provided timestamps.
- Made
- Cv variant:
- Module
Data.Semilattice:- Renamed Semilattice specialization of Semigroup's
(<>)fromslappendtomergeto show symmetry.
- Renamed Semilattice specialization of Semigroup's
- Moved
Arbitraryorphan instances fromInstancesmodule intoArbitraryOrphansmodule. - CmRDT law test:
- Used Lamport clock to check ops and update payloads at source.
0.5 - 2017-09-26
- Exported
GSettype.
- Cabal-file:
- Shorten
copyrightsection.
- Shorten
0.4 - 2017-09-26
- Travis config.
- HLint config.
- README.
- CRDTs:
GSetfor G-set.
Timestamptype 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
queryfunction.
0.3 - 2017-09-24
- Changed implemetation of
GCounterfromVectortoIntMap.
0.2 - 2017-05-15
- Module
Data.Semilattice:- Class
Semilattice, the same asCvRDTwas earlier.
- Class
- Renamed
CvRDTclass toSemilattice. Re-addedCvRDTas an alias toSemilattice. - Renamed tests to reflect that CvRDT = Semilattice.
0.1 - 2017-05-15
- Hackage package
crdt. - Classes:
CmRDTCvRDT
- CRDTs:
GCounterfor G-counter:- Cm variant.
- Cv variant.
LWW.PNCounterfor PN-counter:- Cm variant.
- Cv variant.
- Tests:
- CmRDT law.
- CvRDT laws.
GCounter:- increment
LWW.PNCounter:- Increment.
- Decrement.
- Stylish-haskell config.