You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A register is a data structure that holds a single value. Its update semantic is that the last write wins, with "last" being defined by the usual Atom ordering (first by priority, then timestamp, then site).
Data structures
typeRegisterstruct{}
typeValuestruct { Valueany }
A Register atom may only accept Value or Delete atoms as children.
A Value atom may not have any children.
Their priorities are arbitrary.
A Register should report as its value the most recent Value child.
Currently, a Register can only be a child of the root atom. A Value cannot be a child of the root atom.
Open questions
What if we allow a value to be deleted? What should be the semantics - leaving the register empty, or restoring the previous value, if it exists?
Should a Register only allow "atomic" types wrapped in a Value, or should it also allow that a CRDT be stored?
Build tasks
Create data structure in crdt/rlist.go
Create associated operation in crdt/rlist_operation_test.go
Create manual tests in crdt/rlist_test.go
Run go test -fuzz FuzzList and fix any errors found
Demo tasks
Allow user to create a register in cmd/demo/static/js/crdt_controller.js (or: create one for them)
Allow user to modify register value
Detect register value change and POST it to the server
Create POST handler in cmd/demo/demo.go
(bonus) Allow user to delete register
The text was updated successfully, but these errors were encountered:
A register is a data structure that holds a single value. Its update semantic is that the last write wins, with "last" being defined by the usual Atom ordering (first by priority, then timestamp, then site).
Data structures
Register
atom may only acceptValue
orDelete
atoms as children.Value
atom may not have any children.Register
should report as its value the most recentValue
child.Currently, a
Register
can only be a child of the root atom. AValue
cannot be a child of the root atom.Open questions
Build tasks
crdt/rlist.go
crdt/rlist_operation_test.go
crdt/rlist_test.go
go test -fuzz FuzzList
and fix any errors foundDemo tasks
cmd/demo/static/js/crdt_controller.js
(or: create one for them)cmd/demo/demo.go
The text was updated successfully, but these errors were encountered: