[e-lang] Proposal: E / Erlang integration

Eric Northup digitale@REDACTED
Fri Jun 9 07:23:32 CEST 2006


On Thu, 2006-06-08 at 20:34, Mark S. Miller wrote:
> > I am thinking about a setup where an "e-process" is actually composed
> > from several erlang processes: one for receiving events, one to do the
> > actual job, and maybe some more.
> 
> 
> On practicality, perhaps I am underestimating how lightweight Erlang processes 
> are. If they are lightweight enough, then this approach would work. To whit:
> 
> When Erlang process X wishes to make a request and receive a response from 
> process Y, X would make a new use-once process X2 which knows X's pid. X would 
> then include X2's pid in the message to Y. When Y responds to X2, X2 would 
> then wrap Y's response with a tag and send this response to X.
> 
> Either these tags can themselves be unforgeable, or X's clients would also 
> need to go through a tagging intermediate process so that a client couldn't 
> send a message that X would mistake for Y's tagged response. I think it works 
> for X2 to tag the message with X2's (presumed unforgeable) pid, since anyone 
> who has that pid can respond on behalf of Y anyway.
> 
> With enough care, X could reuse X2 for successive requests to Y. But if X 
> wants to make requests of Z, it would need a separate X3 for that purpose. 
> Otherwise, it enables Y to issues Z's response, and vice versa.
> 
> The above scheme would meet the hard requirements. But how practical would it be?

Coyotos will be using essentially this scheme, so I sure hope it's
practical ;-).  It is not difficult for an IDL compiler to emit the
appropriate routines in C; for a more dynamic language, a
session-wrapper factory would be feasible.  Coyotos introduces a new
primitive object - the First Class Receive Buffer - whose behavior is a
hard-coded implementation of the forwarding-and-tagging process X2, and
Erlang could implement the same optimization.

So if by "practical", you mean "fast", then the design you describe
seems plausible.

-Eric



More information about the erlang-questions mailing list