|0.0.3||May 18, 2023|
|0.0.2||May 18, 2023|
|0.0.1||May 18, 2023|
#1527 in Encoding
Helper utilities for ensuring that musli is safe to use and behaves as expected.
This does include a fairly sophisticated benchmarking suite.
Now this includes the
extra category, which requires
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
cargo bench --no-default-features --features musli,full,extra,model_minimal,simdutf8
To run benchmarks for serialization suites which do support all features, do:
cargo bench --features full
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 fuzz
Run 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 -- --random
Note you can add the running of optional crates by enabling its corresponding feature, such as
Potential security issues discovered by this crate
dlhn: Allocating and initializing large arrays based on untrusted input (DoS): dlhn#11.
To perform a one-off size comparison:
cargo run --bin fuzz -- --size
This 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.