Changelog of @hackage/ron-rdt 0.10

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.

Unreleased

0.10 - 2019-10-08

Added

  • RGA.toList
  • RGA.toText

Fixed

  • Cabal-file: Diff dependency bounds

0.9 - 2019-09-06

Added

  • Function ORSet.getFieldObject
  • Export ORSetRep constructor
  • Extend error reporting
  • ORSet.removeObjectIf
  • ORSet.addFieldValue
  • ORSet.removeFieldValue
  • ORSet.removeFieldValueIf

Changed

  • Renamed getObject to readObject

0.8 - 2019-08-10

Added

  • Function reduceState
  • Function reduceObjectStates
  • Checking type field and correcting object reduce
  • Function stateFromWireChunk
  • Function stateToWireChunk

Changed

  • Reducible depends on BoundedSemilattice.
  • ReplicatedAsObject depends on ReplicatedBoundedSemilattice.
  • ReplicatedAsObject:
    • Removed method objectOpType
    • Added associated type alias Rep -- untyped RON-RDT representation of a typed RDT.
    • Behavior: referencing Rep type instead of duplicating type UUID
  • Option encoding: for availability, anything except some means None. None is encoded as empty payload.
  • Renamed ORSet.zoom -> zoomItem.
  • Renamed LWW.newObject -> newStruct.
  • Event simulation: decreased max event leap from 2³² to 2¹⁶
  • Text serialization: changed chunk sort order from (type, id) to just id
  • ORSet: keep payload on removal
  • LWW
    • fields are always optional
    • viewField returns Maybe
    • readField returns Maybe
    • assignField takes Maybe

Fixed

  • Causality: an object happens-before its ops (in ORSet, RGA, LWW)
  • Tombstone creation in ORSet

Removed

  • Function mkStateChunk.
  • RON type Option (instances for Haskell type Maybe)
  • Class ReplicatedBoundedSemilattice
  • Function objectRconcat (rconcat took its place)

0.7 - 2019-07-26

Added

  • newObjectState
  • ObjectState "monad":
    • ObjectStateT, MonadObjectState
    • evalObjectState
    • evalObjectState_
    • execObjectState
    • execObjectState_
    • newObjectState
    • newObjectStateWith
    • runObjectState
    • runObjectState_
  • ORSet:
    • Instances Eq, Show for ORSet.
    • ORSetItem type.
    • Methods findAnyAlive, findAnyAlive', zoom.
  • ORSetMap type.

Changed

  • ReplicatedAsObject.newObject now has more specific type, and implementation doesn't need to call collectFrame.
  • Method ReplicatedAsObject.newObject is now a function newObject with the same type.
  • Now ObjectState keeps a typed reference to an object with state frame attached, and Object is just a type UUID -- a typed reference to an object in a state frame passed in MonadObjectState context. Object is now passed as an explicit argument.
  • ORSet now can contain objects.
  • ORSet.addValue now accepts objects.
  • Renamed LwwPerField to LwwRep.
  • Renamed RgaRaw to RgaRep.
  • Renamed ORSetRaw to ORSetRep.

Removed

  • ObjectORSet merged into ORSet.
  • ORSet.addNewRef merged into addValue.

0.6 - 2019-04-25

Added

  • RON.Data.RGA:
    • getAliveIndices
    • insert
    • insertAfter
    • insertAtBegin
    • insertText
    • insertTextAfter
    • insertTextAtBegin
    • remove

0.5 - 2019-02-04

Added

  • RON.UUID.liftName function to create name UUIDs in compile time.
  • RON.Util.ByteStringL type.
  • RON.Error module with unified pretty errors.
  • Organize Replicated, ReplicatedAsPayload, and ReplicatedAsObject in class hierarchy.
  • Add ORSet.removeValue and removeRef implementation.
  • Op "patterns" and patterns.

Removed

  • Type alias ObjectId since objects are identified by UUID.

Changed

  • Extracted ron-storage package.
  • Extracted ron-schema package.
  • Extracted ron-rdt package.
  • Switched from Either String a to MonadError String m => m a in failable procedures.
  • ORSet.addRef now adds item's frame, too.
  • ORSet.addNewRef now returns the reference to the freshly created object.
  • Change StateFrame key to UUID since objects are identified by UUID.
  • Renamed RawOp to ClosedOp according to the fresh spec.

Fixed

  • Error handling in Boole decoder.

0.4 - 2019-01-09

Added

  • Schema enum declaration.
  • docIdFromUuid.
  • OnDocumentChanged is called each time when any document is changed.

Changed

  • Made GHC 8.6 default.

Removed

  • Schema embedded DSL helpers: atomInteger, atomString, boole, char, field, option, orSet, rgaString, structLww, versionVector.

Fixed

  • RGA.edit bug with re-adding deleted items (#39).

0.3 - 2018-12-05

Added

  • Encode/decode EpochTime.
  • EDN-based schema DSL.

Removed

  • RON.Storage.createVersion from public API.
  • NFData instances.

0.2 - 2018-11-20

Added

  • Schema boole type.
  • RON.Storage and submodules are moved from ff project.
  • RON.Schema is now re-exported via RON.Schema.TH.

Changed

  • Renamed UUID field "schema" to "version", according to changes in the specification.
  • RGA: sequential UUIDs on initialization.
  • Optimized Base64.isLetter.
  • Extend UUID.mkName to accept any monad.
  • Renamed MonadStorage methods list... -> get...
  • Renamed RON.Storage.saveDocument -> createDocument

Removed

  • RON.Storage.uuidToFileName as it has no sense as an abstraction
  • RON.Storage.IO.runStorageT with StorageT

0.1 - 2018-11-08

Added

  • Package ron
    • RON-text format
    • RON-binary format
    • RON-RDT:
      • LWW
      • RGA
      • OR-Set
      • VersionVector
    • RON-Schema
    • RON-Schema TemplateHaskell code generator