  This paper introduces a new communication abstraction, called Set-Constrained
Delivery Broadcast (SCD-broadcast), whose aim is to provide its users with an
appropriate abstraction level when they have to implement objects or
distributed tasks in an asynchronous message-passing system prone to process
crash failures. This abstraction allows each process to broadcast messages and
deliver a sequence of sets of messages in such a way that, if a process
delivers a set of messages including a message m and later delivers a set of
messages including a message m ' , no process delivers first a set of messages
including m ' and later a set of message including m. After having presented an
algorithm implementing SCD-broadcast, the paper investigates its programming
power and its computability limits. On the "power" side it presents
SCD-broadcast-based algorithms, which are both simple and efficient, building
objects (such as snapshot and conflict-free replicated data), and distributed
tasks. On the "computability limits" side it shows that SCD-broadcast and
read/write registers are computationally equivalent.
