On Mon, Sep 21, 2015 at 10:02 AM, Doug McIlroy <doug@cs.dartmouth.edu> wrote:
Unix was what the authors wanted for a productive computing environment,
not a bag of everything they thought somebody somewhere might want.
One objective, perhaps subliminal originally, was to make program
behavior easy to reason about. Thus pipes were accepted into research
Unix, but more general (and unruly) IPC mechanisms such as messages
and events never were.

The infrastructure had to be asynchronous. The whole point was to
surmount that difficult model and keep everyday programming simple.
User visibility of asynchrony was held to a minimum: fork(), signal(),
wait(). Signal() was there first and foremost to support SIGKILL; it
did not purport to provide a sound basis for asynchronous IPC.
The complexity of sigaction() is evidence that asynchrony remains
untamed 40 years on.

Point of order: Does it really say this, or rather does it say that trying to retrofit it into the Unix model, which was not designed with the sort of thing in mind, has proven to be difficult?

        - Dan C.