We're currently using the StdRng for the random engine. Under the hood, this is chacha12, which is overkill for purposes of generating random inputs. This change switches the RNG implementation to use Xoshiro256PlusPlus, which is covered in the rand guide to have a good tradeoff of speed and quality.
Additionally, I simplified the bolero_generator::uniform::Uniform trait implementations a bit, which should hopefully result in better coverage. Before we were branching on if we were in direct mode or not. In practice, coverage-based fuzzing engines spend a lot of time generating inputs rather than executing the tests and direct mode makes that even worse. As such, the uniform impls now always ignore the mode and behave as if forced. In various testing, this improves testing throughput rates.
We're currently using the
StdRng
for the random engine. Under the hood, this is chacha12, which is overkill for purposes of generating random inputs. This change switches the RNG implementation to use Xoshiro256PlusPlus, which is covered in the rand guide to have a good tradeoff of speed and quality.Additionally, I simplified the
bolero_generator::uniform::Uniform
trait implementations a bit, which should hopefully result in better coverage. Before we were branching on if we were in direct mode or not. In practice, coverage-based fuzzing engines spend a lot of time generating inputs rather than executing the tests and direct mode makes that even worse. As such, the uniform impls now always ignore the mode and behave as if forced. In various testing, this improves testing throughput rates.