monocoque 0.3.0: pure-Rust ZeroMQ over io_uring, tokio, smol
monocoque 0.3.0 brings pure-Rust ZeroMQ (ZMTP 3.1) with a compio 0.19/io_uring upgrade, SO_REUSEPORT, zero-alloc hot path, and CI-enforced performance and security guarantees.
monocoque is a pure-Rust ZeroMQ-compatible library implementing ZMTP 3.1 from scratch, interoperable with existing libzmq peers, defaulting to io_uring via compio with optional tokio and smol backends. The 0.2.0 I/O core rework consolidated buffer handling so the single-frame PUSH/PULL path allocates nothing per message, and this is enforced in CI via a counting allocator, an idle-memory bound, and callgrind instruction-count checks rather than just claimed in docs.
0.3.0 upgrades the io_uring runtime from compio 0.10 to 0.19 (MSRV bumps to 1.95), which is the main breaking change for anyone using #[compio::main] directly, since networking now sits behind a net feature. New capabilities include SO_REUSEPORT for per-core accept loops and async, jittered reconnect backoff to avoid stampedes after shared outages. Two real correctness bugs were fixed: a routing id not being sent in the ZMTP READY until after reconnect, and a broken bidirectional inproc reply channel that silently broke end-to-end PLAIN authentication.
Security hardening removes the ability to distinguish unknown usernames from bad passwords in PLAIN auth failures and zeroizes passwords after use, alongside new fuzz targets, Miri, loom, and ThreadSanitizer coverage in CI. On performance, all three backends beat libzmq on PUSH/PULL throughput with coalescing enabled (~3x on compio at small sizes) and REQ/REP latency drops to ~9µs versus libzmq's ~36µs, though libzmq's internal batching still wins in eager mode for bulk one-way traffic at small message sizes.