[LLVMdev] Erlang

Jonathan S. Shapiro shap at eros-os.com
Fri Jul 25 10:31:00 PDT 2008


On Fri, 2008-07-25 at 09:19 +0200, Simon Ask Ulsnes wrote:
> 2008/7/24 Owen Anderson <resistor at mac.com>:
> >> * They are isolated and the only way to exchange information is
> >> message passing
> >>
> > This one is hard to guarantee in a compiled context, unless you
> > implement a lot of stuff to track pointer values.  Remember, all of
> > these threads will be sharing an address space.  If you want true
> > protection, you'll want something more like fork(), but that defeats
> > your other two goals.
> 
> Couldn't this also be semi-guaranteed by the design of the language?
> For instance, if you completely disallow pointer arithmetics and
> always pass by value when passing messages....

This is excessively conservative. Any state that is deeply
"pure" (therefore constant) *can* be shared, and at least some type
systems are strong enough to tell you this. This potentially includes a
lot of internal representation data, which significantly alters the
performance trade-offs here.

It is also possible to bring linear typing into messaging, as
Singularity did. Where that works, no copy is required. That said, the
singularity design is open to resource denial of service on the heap
because they didn't get the pragmatic details of linear-typed messaging
quite right.

shap




More information about the llvm-dev mailing list