  In order to converge in the presence of concurrent updates, modern eventually
consistent replication systems rely on causality information and operation
semantics. It is relatively easy to use semantics of high-level operations on
replicated data structures, such as sets, lists, etc. However, it is difficult
to exploit semantics of operations on registers, which store opaque data. In
existing register designs, concurrent writes are resolved either by the
application, or by arbitrating them according to their timestamps. The former
is complex and may require user intervention, whereas the latter causes
arbitrary updates to be lost. In this work, we identify a register construction
that generalizes existing ones by combining runtime causality ordering, to
identify concurrent writes, with static data semantics, to resolve them. We
propose a simple conflict resolution template based on an
application-predefined order on the domain of values. It eliminates or reduces
the number of conflicts that need to be resolved by the user or by an explicit
application logic. We illustrate some variants of our approach with use cases,
and how it generalizes existing designs.
