Changelog for ron-rdt-0.9
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.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
toreadObject
0.8 - 2019-08-10
Added
- Function
reduceState
- Function
reduceObjectStates
- Checking type field and correcting object reduce
- Function
stateFromWireChunk
- Function
stateToWireChunk
Changed
Reducible
depends onBoundedSemilattice
.ReplicatedAsObject
depends onReplicatedBoundedSemilattice
.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
- Removed method
Option
encoding: for availability, anything exceptsome
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
returnsMaybe
readField
returnsMaybe
assignField
takesMaybe
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 typeMaybe
) - 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
forORSet
. ORSetItem
type.- Methods
findAnyAlive
,findAnyAlive'
,zoom
.
- Instances
ORSetMap
type.
Changed
ReplicatedAsObject.newObject
now has more specific type, and implementation doesn't need to callcollectFrame
.- Method
ReplicatedAsObject.newObject
is now a functionnewObject
with the same type. - Now
ObjectState
keeps a typed reference to an object with state frame attached, andObject
is just a type UUID -- a typed reference to an object in a state frame passed inMonadObjectState
context. Object is now passed as an explicit argument. ORSet
now can contain objects.ORSet.addValue
now accepts objects.- Renamed
LwwPerField
toLwwRep
. - Renamed
RgaRaw
toRgaRep
. - Renamed
ORSetRaw
toORSetRep
.
Removed
ObjectORSet
merged intoORSet
.ORSet.addNewRef
merged intoaddValue
.
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
, andReplicatedAsObject
in class hierarchy. - Add
ORSet.removeValue
andremoveRef
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
toMonadError 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
toClosedOp
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
methodslist...
->get...
- Renamed
RON.Storage.saveDocument
->createDocument
Removed
RON.Storage.uuidToFileName
as it has no sense as an abstractionRON.Storage.IO.runStorageT
withStorageT
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