cobs_codec_rs 1.3.0

Consistent Overhead Byte Stuffing (COBS) and COBS/R codec: no_std, zero-dependency, for zero-free framing of serial and packet byte streams.
Documentation
# Changelog

All notable changes to this crate are documented here. This project adheres to
[Semantic Versioning](https://semver.org).

## 1.3.0

### Added

- **COBS/R in-place decoding**: `decode_in_place` and
  `decode_in_place_with_sentinel` for the reduced codec, decoding within the
  caller's buffer and returning the decoded length (COBS/R decoding never
  expands the data).
- **Optional `serde` and `defmt` derives** for `DecodeError`, behind the new
  `serde` and `defmt` feature flags, for serialising or logging decode errors on
  hosts and embedded targets.

### Tooling & tests

- Added a `criterion` throughput benchmark (`benches/throughput.rs`).
- Added fuzzing: `cargo-fuzz` targets plus a stable, dependency-free robustness
  test that runs in ordinary CI.
- Added a Protobuf + COBS framing example (`examples/protobuf_cobs.rs`).
- Extended the conformance suite to also check the configurable-sentinel and
  decode-error vectors from firechip/cobs-conformance.

## 1.2.0

### Changed

- Adopted **Rust edition 2024**; the minimum supported Rust version is now
  **1.85** (required by the edition). No API changes.
- Modernised CI: bumped `actions/checkout` to v7 and pinned the MSRV job's
  toolchain to Rust 1.85.

### Documentation

- The Cheshire & Baker (1999) overhead bounds now render as math on docs.rs (via
  KaTeX): the encoded length is at most $n + \lceil n/254 \rceil$ bytes, and
  `max_encoded_len` / `encoding_overhead` document their closed forms.

## 1.1.0

### Added

- **Configurable sentinel**: `encode_with_sentinel` / `decode_with_sentinel`
  (and `*_to_vec_with_sentinel`) on both `cobs` and `cobsr`, for framing with a
  delimiter other than `0x00`.
- **In-place decoding**: `cobs::decode_in_place` and
  `cobs::decode_in_place_with_sentinel`, which decode without a second buffer.
- **`framing::StreamDecoder`**: an allocation-free streaming frame decoder that
  reassembles delimited packets into a caller-provided buffer — the pure
  `no_std` counterpart of `FrameDecoder`, with `reduced` and `sentinel` options.

All additions are backward compatible.

## 1.0.0

Initial release.

### Added

- `#![no_std]`, dependency-free **basic COBS** and **COBS/R** encode/decode over
  caller-provided slices (`cobs`/`cobsr` modules).
- `alloc`-gated `*_to_vec` conveniences and a streaming `framing::FrameDecoder`
  with a `max_frame_len` bound.
- `const fn` size helpers `max_encoded_len` and `encoding_overhead`.
- `DecodeError` implementing `core::error::Error`.
- Golden-vector tests plus a conformance test against
  [firechip/cobs-conformance]https://github.com/firechip/cobs-conformance
  (2261 vectors, byte-identical to the reference).