donglora-cobs
Minimal COBS (Consistent Overhead Byte Stuffing) encoder/decoder.
no_std, zero-alloc, zero dependencies at runtime- Spec-compliant: implements Cheshire & Baker (IEEE/ACM 1999)
- Exhaustively tested: 39 tests including cross-validation against
corncobs
Why our own crate?
DongLoRa is an embedded firmware project. We want:
- Zero runtime dependencies (just 130 lines of code)
- Complete control over the implementation
- Spec compliance verified against both the canonical Wikipedia vectors
AND a battle-tested third-party crate (
corncobs)
For higher-throughput use cases, consider corncobs which has been benchmark-optimized for streaming applications.
Testing
# Unit tests + property tests + interop
cargo test -p donglora-cobs
# Fuzz testing (requires cargo-fuzz: cargo install cargo-fuzz)
cd crates/donglora-cobs
cargo +nightly fuzz run fuzz_decode -- -max_total_time=60
cargo +nightly fuzz run fuzz_roundtrip -- -max_total_time=60
Tests include:
- 18 canonical COBS vectors (Wikipedia / IEEE/ACM spec)
- Round-trip verification for various payload sizes
- 8 interop tests cross-validating against
corncobs - 500 randomized round-trip payloads verified against
corncobs - 5 proptest properties (~1280 random inputs): round-trip, interop encode/decode both directions, length bounds, decode-never-panics
- 2 fuzz targets:
fuzz_decode(arbitrary bytes → must not panic) andfuzz_roundtrip(encode→decode must match)