commonware-coding 2026.10.0

Encode data to enable recovery from a subset of fragments.
Documentation
use crate::{
    bench_decode_generic, bench_encode_generic,
    shard_selection::ShardSelection::{Best, Interleaved, Worst},
};
use commonware_coding::ReedSolomon;
use commonware_cryptography::Sha256;
use criterion::{Criterion, criterion_group};

fn bench_encode(c: &mut Criterion) {
    bench_encode_generic::<ReedSolomon<Sha256>>("reed_solomon::encode", c);
}

fn bench_decode(c: &mut Criterion) {
    // Payload bytes, total shards, worker count, and shard selection.
    let cases = [
        (1 << 12, 20, 1, Interleaved),
        (1 << 20, 20, 1, Interleaved),
        (1 << 20, 20, 4, Interleaved),
        (1 << 23, 20, 1, Interleaved),
        (1 << 23, 20, 4, Interleaved),
        (1 << 20, 100, 4, Interleaved),
        (1 << 20, 250, 4, Interleaved),
        (1 << 20, 500, 4, Interleaved),
        (1 << 20, 20, 4, Best),
        (1 << 20, 20, 4, Worst),
    ];
    bench_decode_generic::<ReedSolomon<Sha256>>("reed_solomon::decode", c, &cases);
}

criterion_group! {
    name = benches;
    config = Criterion::default().sample_size(10);
    targets = bench_encode, bench_decode
}