ron-0.8: CHANGELOG.md
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0)
and this project adheres to
[Compatible Versioning](https://github.com/staltz/comver).
## [Unreleased]
## [0.8] - 2019-08-10
### Added
- Associated type `ReplicatedAsObject.Rep`
- Function `correct`
### Changed
- Renamed `ObjectState` to `ObjectFrame`.
- Simplified `Error` type
- Type `StateChunk` is split into two new:
- `StateChunk` is tagged on Haskell-type-level with its RDT
- `WireStateChunk` has RDT as a field, isomorphic to the old `StateChunk`
### Removed
- Method `ReplicatedAsObject.objectOpType`
## [0.7] - 2019-07-26
### Added
- Instance `ReplicaClock WriterT`.
- Instance `MonadFail ReplicaSimT`.
- Module `RON.Semilattice`:
- Class `Semilattice`.
- Class alias `BoundedSemilattice`.
### Changed
- Now `ObjectState` keeps a typed reference to an object with state frame
attached,
and `Object` is just a typed UUID --
a typed reference to an object in a state frame passed in MonadState context.
### Removed
- `ObjectPart` as not used in RON-RDT 2.1.
- Support of space inside text UUID, as removed in RON 2.1.
## [0.6] - 2019-03-01
### Added
- `RON.Error`:
- `liftEither`
- `liftEitherString`
## [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
[Unreleased]: https://github.com/ff-notes/ron/compare/ron-0.8...HEAD
[0.8]: https://github.com/ff-notes/ron/compare/ron-0.7...ron-0.8
[0.7]: https://github.com/ff-notes/ron/compare/ron-0.6...ron-0.7
[0.6]: https://github.com/ff-notes/ron/compare/v0.5...ron-0.6
[0.5]: https://github.com/ff-notes/ron/compare/v0.4...v0.5
[0.4]: https://github.com/ff-notes/ron/compare/v0.3...v0.4
[0.3]: https://github.com/ff-notes/ron/compare/v0.2...v0.3
[0.2]: https://github.com/ff-notes/ron/compare/v0.1...v0.2
[0.1]: https://github.com/ff-notes/ron/tree/v0.1