Expand description
Helper utilities for ensuring that musli is safe to use and behaves as expected.
This does include a fairly sophisticated benchmarking suite.
§Benchmarking
Now this includes the extra category, which requires model_minimal. This
is not exactly a fair comparison, because it compares serialization formats
which were designed to model data that others are not capable off.
The exact tradeoff can be seen by comparing the feature model_full with
model_minimal.
cargo bench --no-default-features --features musli,full,extra,model_minimal,simdutf8To run benchmarks for serialization suites which do support all features, do:
cargo bench --features full§Fuzz testing
This comes with the fuzz binary which can do the following things.
Run serialization for a long time against a lot of random data. Both with and without miri. When run with miri, the size of the datasets is drastically reduced.
cargo run --bin fuzz
cargo +nightly miri run --bin fuzzRun deserialization against randomly generated bytes. Both with and without miri. When run with miri, the size of the datasets is drastically reduced.
cargo run --bin fuzz -- --random
cargo +nightly miri run --bin fuzz -- --randomNote you can add the running of optional crates by enabling its corresponding feature, such as
--features bincode.
§Potential security issues discovered by this crate
dlhn: Allocating and initializing large arrays based on untrusted input (DoS): dlhn#11.
§Size comparison
To perform a one-off size comparison:
cargo run --bin fuzz -- --sizeThis will for now just take the first generated field of a given type, serialize it, and print out its size. In the future it will perform an average over the entire set with more statistics.
Modules§
Macros§
- benchmarker
- Super macro to help build benchmarkers without too much of a fuzz.
- check_
length - feature_
matrix - Call the given macro with the existing feature matrix.
- if_
supported - Only expand
$blockif the given test is supported by this framework. - miri
- musli_
zerocopy_ call - rt
- Roundtrip the given expression through all supported formats.
- types
Functions§
- rng
- Build common RNG.