[PEAK] A taxonomy of event sources: designing the events API

Phillip J. Eby pje at telecommunity.com
Wed Jan 7 18:50:10 EST 2004

At 03:49 PM 1/7/04 -0500, Bob Ippolito wrote:

>Well, here's an idea.. I'm not an expert on Communicating Sequential 
>Processes, but maybe you should be before writing the events API.

I don't know what you'd define as 'expert', but I can certainly map CSP to 
Linda and vice versa, and both of those to the model used by peak.events.

In rough terms, the peak.events core is a subset of the CSP model that 
prevents livelock (but not deadlock), and a subset of Linda/JavaSpaces that 
does not guarantee that tuples are preserved in tuplespace if there are no 
immediate readers or takers, and does not provide pattern matching.

events.AnyOf maps to an ALT construct (unprioritized and unfair).  Most of 
the other 'IEventSource' types can be compared to combination 
channels/guards, but are more accurately viewed in terms of tuplespace 

Personally, I find the Linda model of ensemble computation to be much 
simpler and far more practical than the CSP model.  All of the CSP concepts 
can be implemented in terms of tuplespace concepts, and tuplespaces have 
far fewer fundamental concepts and constructs.  The CSP concepts are 
buildable from peak.events, too, with some being easier than others.

Following "practicality beats purity", though, peak.events emphasizes 
commonly used constructs and allows you to create others as needed.  It 
does not build up from trivial CSP objects like Skip and Stop, but jumps 
directly to a handful of useful guard/channel types.

>   It's the model that Christian Tismer has settled on for the next 
> version of Stackless.  There's been a lot of discussion about it on the 
> stackless list lately.  There's books and papers on CSP that are 
> available free online, but I have not had time to read and absorb enough 
> of it yet to talk confidently about it.

"""Two things I learned for sure during a particularly intense acid trip
in my own lost youth: (1) everything is a trivial special case of
something else; and, (2) death is a bunch of blue spheres.
                                       --- Tim Peters, 1 May 1998"""

By that, I mean that CSP, Linda, peak.events, and at least half a dozen 
other things in this space are trivial special cases of each other, and not 
entirely unlike a bunch of blue spheres.  :)

More information about the PEAK mailing list