Oh, I neglected to log the clarifications to feed operators to make
it clear that their intent is to allow for massive parallelism with
a minimum of sharing, more on the Unix pipe model than the "share
everything" model.  Some implicit sharing is possible via lexical
closure at thread creation time, but globals and package variables
are specifically not shared unless declared with "our" prior to
the "fork".

This decoupling is also part of why they were hoisted out of operator
precedence operators into statement separators, more like Unix shell.
We want to more easily be able to take advantage of new parallel
architectures such as the Cell.  This view of feeds is also much
more in line with the event model view of reality as espoused by
languages like Tcl and Erlang.  (We have also the async {} block for
more traditional shared-data threads.  For an interesting read on
combining traditional threading and event models in the same process,
see http://www.seas.upenn.edu/~lipeng/homepage/unify.html.)


Reply via email to