Tags: jvz-devx/nntp-rs
Tags
Release v0.3.0: fix binary data corruption, harden PAR2/CRC verificat… …ion, propagate decompression errors Breaking changes: - YencDecoded::verify_crc32() returns Option<bool> (None = no CRC available) - NntpClient::maybe_decompress() returns Result<Vec<u8>> instead of silently falling back to raw data on decompression failure Bug fixes: - Binary reader now strips NNTP line terminators before appending to payload - PAR2 slices with missing IFSC checksums reported as damaged instead of skipped - PAR2 verification with no IFSC packet and failed MD5 now marks all slices damaged - ArticleAssembler avoids unnecessary clone for multipart decoded data Safety hardening: - 64 MB limit on compressed blocks (prevents OOM) - PAR2 packet length validation (prevents arithmetic underflow) - PAR2 zero slice_size rejection (prevents division-by-zero) - BandwidthLimiter panics on zero rate (prevents division-by-zero) - LruHeaderCache uses wrapping_add for access counter See CHANGELOG.md for full details.
Set minimum dependency versions to fix -Z minimal-versions CI Bump floor versions for all dependencies to prevent resolution to ancient crates that don't compile on modern stable Rust (e.g., flate2 1.0.0 pulling in gcc 0.3.3 with #![feature(convert)]). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>