BOP, behavior oriented parallelization, is a safe parallelization framework implemented in C and tied into Ruby. BOP monitors a programs read and write sets and, at runtime, checks to ensure that there are no race conditions. When a race condition is detected, the parallel work is abort. The work is then done by a sequential run of the program which ignores all parallelization code. The end result is that BOP eliminates the need for parallel debugging with stronger guarantees than even transactional memory systems. TM systems place no ordering among the tasks resulting in a linearizable execution as apposed to BOP’s sequential execution.

BOP gives a global order to each piece of parallel work, called a speculative (or spec) task, which is the same as the sequential order of the program with all parallelization code removed. Partially due to this global order, we can allow for partial commits of the total set of spec tasks. This helps increase the chance of work actually being done in parallel.

BOP is open source on GitHub. The allocator used by the library (being worked on as of this writing) currently lives on this Github repo.