I work with PD when I want to make music more than I want to do advanced CS. And then there's the question of the marginal utility of PD having its own implementation of a ringbuffer, but I will leave that for all of you who have dedicated far more time than I to the maintenance of this project.
To be more specific: the libpd ringbuffer uses atomic read-modify-writeoperations (with dummy arguments) instead of atomic loads and stores.Again, these are hacks from pre-C11 times. Unfortunately, the C11version follows this pattern instead of using the more appropriateatomic_load[_explicit] and atomic_store_[explicit] functions. Also, itimplicitly uses the default memory ordering (memory_order_seq_cst) forall atomic operations, which is much stronger than what we actually need.