Skip to content

Latest commit

 

History

History
233 lines (188 loc) · 5.67 KB

CHANGELOG.md

File metadata and controls

233 lines (188 loc) · 5.67 KB

Changelog

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

Added

  • Support for GHC 8.10/base-4.14

10.6 - 2020-12-26

Changed

  • 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.

Removed

  • Dropped support of GHC < 8.8, since this package is for experiments only.

10.5 - 2019-09-22

Fixed

  • Diff dependency bounds

10.4 - 2019-02-27

Added

  • Support for GHC 8.6

Changed

  • Use IORef as a container for local time instead of TVar.

10.3 - 2018-08-03

Added

  • Instance Semilattice (CvRDT) for Maybe

10.2 - 2018-06-08

Fixed

  • Building with GHC 8.0

10.1 - 2018-06-08

Added

  • 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

Added

  • 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.
  • Module Lens.Micro.Extra with lens helpers.

Changed

  • Reorganized modules:
    • Grouped into two groups: CRDT.Cm for Cm types and CRDT.Cv for Cv ones.
    • Removed Internal submodules; all guts are exported until it will become an issue.
  • CmRDT class:
    • Made it parameterized by 3 types: payload, op and update.
    • Used PartialOrd (from lattices:Algebra.PartialOrd) of ops as a prerequisite.
    • Used Observe to compare only user-visible parts of CmRDT payload.
    • Renamed update to updateDownstream to be closer to the paper.
    • Added updateAtSource as written in the paper.
      • Added its precodition as the separate method updateAtSourcePre.
    • Allowed updates to be run in a Clock-constrained monad to get timestamps.
  • LWW:
    • Cv variant:
      • Made initial and assign dependent on Clock monad since they need timestamps and cannot rely on user-provided timestamps.
  • Module Data.Semilattice:
    • Renamed Semilattice specialization of Semigroup's (<>) from slappend to merge to show symmetry.
  • Moved Arbitrary orphan instances from Instances module into ArbitraryOrphans module.
  • CmRDT law test:
    • Used Lamport clock to check ops and update payloads at source.

0.5 - 2017-09-26

Added

  • Exported GSet type.

Changed

  • Cabal-file:
    • Shorten copyright section.

0.4 - 2017-09-26

Added

  • 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.
  • Nikolay Loginov as an author.
  • Tests:
    • GCounter:
      • CmRDT variant:
        • Law.
        • Increment.
      • CvRDT variant:
        • Laws.
        • Increment.
    • GSet:
      • CvRDT laws.
      • Add.
    • LWW:
      • CmRDT instance:
        • Law.
        • Write latter.
        • Write former.
      • CvRDT instance:
        • Laws.
        • Write latter.
        • Write former.
    • PNCounter:
      • CmRDT variant:
        • Law.
        • Increment.
        • Decrement.
      • CvRDT variant:
        • Laws.
        • Increment.
        • Decrement.

Changed

  • Module Data.Semilattice:
    • Renamed Semilattice specialization of Semigroup's (<>) from (<>) to slappend.
  • Moved law tests to the module Test.Laws.

Removed

  • Common CmRDT query function.

0.3 - 2017-09-24

Changed

  • Changed implemetation of GCounter from Vector to IntMap.

0.2 - 2017-05-15

Added

  • Module Data.Semilattice:
    • Class Semilattice, the same as CvRDT was earlier.

Changed

  • Renamed CvRDT class to Semilattice. Re-added CvRDT as an alias to Semilattice.
  • Renamed tests to reflect that CvRDT = Semilattice.

0.1 - 2017-05-15

Added

  • 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.