- omnivox::server::<T>()/client::<T>() builders; plain closures, enum in,
match in the callback — the original C++ UX with the ceremony removed
- serde + bincode replace the hand-rolled Cereal codec (vectors.rs still
governs the crypto leaves via the C++ golden oracles)
- v2.1 frames: u32 len | type | ct | tag; nonce derived from the sequence
counter (no wire nonce), type byte authenticated as AAD; any frame-level
failure is fatal, authenticated-but-undecodable payloads are skipped
- stream lane: send_stream/on_stream, 1 MiB frames, shared sequence with
messages (exact sender interleaving preserved); see dump-agent/viewer
- per-connection bounded queues + writer tasks; reply/reply_stream are
non-blocking try_send lanes for callbacks
- benches: seal/open criterion group + transport harness (spray msg/s,
stream GiB/s, raw loopback baseline)
- profile.dev.package scrypt/pbkdf2 opt-level 3: golden-vector scrypt at
N=2^17 was unusable in debug builds
- PROTOCOL-V2.md and README rewritten for v2.1