CRDT

Conflict-free Replicated Data Types in Swift

MIT License

Stars
146
Committers
3

Bot releases are visible (Hide)

CRDT - Initial API release Latest Release

Published by heckj about 2 years ago

Initial API Release

  • Multiple well-known CRDT types included:
    • GCounter, PNCounter, GSet, ORSet, ORMap, and List
  • Documentation hosted at Swift Package Index
  • All included CRDT implementations support whole-instance merging and delta-state replication and merging.
  • APIs for merging include merged(:_) which implicitly makes a copy, and merging(:_) which modifies an in-place struct.
  • Corrupted history is identifier and thrown as an error, relevant for ORSet, ORMap, and List types.
  • Project includes basic benchmarks, with results available through the GitHub repo.
  • extended conformances for CRDT types, when underlying (and ActorID) types support it: Codable, Hashable, Equatable, and Sendable

What's Changed since the pre-release (0.5.0-alpha1)

New Contributors

Full Changelog: https://github.com/heckj/CRDT/compare/0.5.0-alpha1...0.5.0

CRDT - Initial release

Published by heckj about 2 years ago

Initial alpha release.

The pre-release includes an initial implementation, API, and documentation for the raw CRDT data types:

  • GCounter
  • PNCounter
  • LWWRegister
  • GSet
  • ORSet

The pre-release is intended for feedback on API usage, and should not be considered stable.
The delta-state merge methods are set to asynchronous, and both an ORMap and an actor-based replicator wrapper is still pending as of this release.

To use this release, add the following dependency to your Package.swift:

.package(url: "https://github.com/heckj/CRDT.git", from:"0.5.0-alpha1")