The current compressor implements a single strategy based on sampling. But it's a bit of a hammer. Encodings have to decide themselves, in isolation, whether they should or shouldn't be included in the search space.
Instead, I think we want these broader compression strategies to be aware of the codecs they can run over. We could explicitly implement BtrBlocks, using their chosen set of encodings. Or we could implement a configurable statistical strategy, or anything else.
As part of this, we should pull the strategy implementations into a trait. The API for encodings to implement could be stripped down, or even removed entirely and left up to the strategy.
The current compressor implements a single strategy based on sampling. But it's a bit of a hammer. Encodings have to decide themselves, in isolation, whether they should or shouldn't be included in the search space.
Instead, I think we want these broader compression strategies to be aware of the codecs they can run over. We could explicitly implement BtrBlocks, using their chosen set of encodings. Or we could implement a configurable statistical strategy, or anything else.
As part of this, we should pull the strategy implementations into a trait. The API for encodings to implement could be stripped down, or even removed entirely and left up to the strategy.