I’m essentially done with this rather large and presumptuous set of changes to astrid’s inter-process communication plumbing. Four months in the making, I guess? I lost track. There’s at least still some issue with trigger generation, and I’m surprised my shared memory pickling hack seems to be working, but the new IPC lifecycle interfaces are chugging along pretty well so far. What’s really exciting is this makes a lot of tricky things pretty easy, and while I’m sure more bugs lurk beneath the changes it will give python instruments a very flexible way to build shared sampling systems, custom message passing and instrumentalized processes based around state races, shared mutated states of all sorts…
I plan to work on adapting the get interface to be a faster path for resources whose values are small enough to be stored directly in the LMDB header – allowing them to be read without acquiring locks, look ma! – at the moment it just wraps the acquire/release interfaces which always use locks.
I’m possibly doing a kind of meditation zone / installation thing in the park here in Winona for this year’s pride, so I’m pretty glad astrid is making sound again. :-) My cousins are hopefully joining in as well, and I think it’ll be a chance to try out the resonator trees somewhere besides across from the kitchen in my apartment.
Edit: well, yup! There is certainly something fishy with the pickling IPC shenanegans. It’s probably best to do it properly and make a serializer for each type – there aren’t that many required, really.
Happy astrid is making sound again tho. :-D