This overhauls how announcements are handled, removing Infos and a lot of related code, in favor of smart buffers within classification containers, and an almost lock-free Store controller that manages the incoming announcements, splits them by block height and work done, and implements a buffer stealing algorithm that automatically retrieves buffers from the worst effective work.
There are also a lot of related improvements in how the Merkle tree is computed, some unrelated optimizations like using parallel and unstable sorts throughout the code, and some instrumentation improvements like displaying the time spent in several steps of the mining preparation process.
This overhauls how announcements are handled, removing Infos and a lot of related code, in favor of smart buffers within classification containers, and an almost lock-free Store controller that manages the incoming announcements, splits them by block height and work done, and implements a buffer stealing algorithm that automatically retrieves buffers from the worst effective work. There are also a lot of related improvements in how the Merkle tree is computed, some unrelated optimizations like using parallel and unstable sorts throughout the code, and some instrumentation improvements like displaying the time spent in several steps of the mining preparation process.