I’m working on a project tentatively called Bubbles. This is going to be a framework for writing multiprocessing applications.<p/>

The motivation from this derives from trying to write threaded or multiprocessed code in the past. I like the concept of multiprocessing, but programmers have to think really hard about it in current languages. You have to use spinlocks, mutexes and other synchronization devices, when all you really want to do is add a number to a counter, or something silly like that. If you use separate UNIX processes, you have a separate problem – it’s very hard to communicate with the other process when you need to.<p/>

I’m proposing to make it easy and useful to write efficient multiprocessed programs without thinking too hard about these issues. Bubbles is a library for C/C++/Python/(whatever else you want to port it to) which makes it easy to communicate with other processes on the system through the controlled use of certain data structures – ones that you want to read and write, and not worry about the memory allocations behind the scenes.<p/>

What data structures are these? The most important ones are queues of all shapes and sizes. FIFO queues, priority queues, producer-consumer structures – it’ll all be there and work properly. <p/>

Anyway, this post is getting long. I have a long design document if you want to read it (send me an IM or something, LincolnQ, or I’m sure you can derive my Brown email address from “Lincoln Quirk”). There’s one more killer feature, though – the long-term plan for this project is to have the ability to run processes over the network on separate machines, without additional thought from the programmer. He just calls ‘spawn()’ (from python), and doesn’t have to care whether the process is running on the same machine on a different processor, or on a different machine, nor does it care whether the process is python, c++ or something completely different. It’s gonna be awesome. :)<p/>