Sorry for the hasty overview, I was trying to squeeze my request in under the 
wire
(and failed).

My previous system (Dendrite) was a D1/Tango implementation of flow-based
programming environment similar to the BBC Kamaelia/Axon system implemented in
Python.  It was moderately challenging and fun, but really hard to avoid the
Turing Tarpit of a universal programming system.

I used the Tango Fibers implementation (thanks Sean Kelly I believe) and various
reactor libraries to implement the actor engine.

After I finished 0.9, one of the chat members (mwarning maybe?) asked me if it 
was
multicore. (It wasn't).  This seemed like such an obvious and straight forward
addition that (like a fool) I set about implementing it.  (Tarpit 2)

Last time I finished something on that branch it was a high-speed lock-free
message FIFO so the Fiber Cores could communicate easily.  I achieved about 
50-60
MT/s and figured I needn't go any further on that. I also integrated the 
portable
hwloc library so I could introspect the runtime multicore topology and set the
Thread affinity.

In any case, the system basically allows you to define pipe-like (and simple
mailbox msg transfer) systems that process data by having concurrent actors
reading from their inputs, processing them and writing to their outputs.  Fun 
for
the whole family.

So this is nothing tremendously new, flow-based actor systems are implemented 
in a
number of languages and libraries.  Higher level concurrency systems like LINDA
can be built from actor systems etc.

After I came up for air after implementing the multicore flow-based components 
D2
had really come into it's own.  I read TDPL (yea!) with special attention to the
concurrency system and I'm really excited to see how I can improve on my 
Dendrite
system using D2-supported constructs (I know Fiber is in Phobos2 so that's 
good).
 Elegant mailbox support and lock-free patterns are built right into the
concurrency system so that makes my life a lot easier if I can use them.  
(Thanks
Andrei et al)

Right now I'm trying to port to ldc2/phobos2.  As soon as I get a working build
things will go a lot better.

That's basically the idea.  There's a lot more that I haven't mentioned, like 
the
fact that the reactor, scheduler and other engines are starting to take on 
aspects
of an operating system or virtual machine.  Am I re-inventing Mach? Poorly?

That's the "overview".

eris




So, I started working back up my list of outstanding multicore patches

Reply via email to