[E-Lang] E FAQ

Mark S. Miller markm@caplet.com
Thu, 27 Sep 2001 20:33:22 -0700


At 12:21 PM Thursday 9/27/01, Zooko wrote:
>> What do you mean by "micro-parallelism"?  
>
>If you read my letter to e-lang, [1] [...] you'll see a proposal for computing separate
>E vat ticks in parallel (e.g. to take advantage of a newfangled SMT CPU), while
>still guaranteeing the same semantics.

Thanks for the reminder.  I think techniques like this are interesting.  In 
looking at it again in this context, I wonder in what sense any of this is 
specific to E.  During an individual turn of the vat (event), E is in all 
relevant regards a conventional sequential imperative memory-safe oo 
language.  By the time you could actually make work any of the techniques 
you describe, you could apply it to any other such language as well.

I do see one possible advantage for E (compared to other imperative 
languages that must accommodate concurrency), for this as well as various 
other optimizations.  Other imperative language are generally made to deal 
with concurrency by introducing multiple threads with shared state.  
Compiler optimizations that would have been correctness preserving on a 
truly sequential program are now dangerous.  Such languages have often been 
extended with concepts like "volatile", or forsaken some optimizations, or 
both.

E deals with concurrency without sacrificing true sequentiality.  For a 
hypothetical non-Java E implementation, there is an opportunity to safely 
apply optimizations that might otherwise be tricky -- especially those that 
transparently reorder side effects.  I suspect microparallelism optimization 
may likewise benefit.  (OTOH, many of the optimizations that would be 
newly enabled would also make debugging difficult.)

E avoids threads to help people reason about programs, but unsurprisingly, it 
should also help programs reason about programs.


        Cheers,
        --MarkM