# Changelog
## v0.2.0
This release brings `prettier-bytes` fully into the embedded Rust ecosystem by introducing optional, zero-allocation logging support via the `defmt` framework.
### Added
- **`defmt` Integration:** Added an optional `defmt` feature flag to `Cargo.toml`.
- **Deferred Logging:** Implemented `defmt::Format` for `FormattedBytes`. When the `defmt` feature is enabled, developers can pass formatted byte strings directly into macros like `defmt::info!("{=str}", size.as_str().unwrap())`. This securely transmits the stack-allocated string slice over the wire (UART/RTT) directly to the host machine, completely bypassing standard `core::fmt` bloat and maintaining the crate's strict zero-cost philosophy on the microcontroller.
## v0.1.0
Initial public release. A blazingly fast and safe, zero-allocation, `no_std`-compatible byte formatter.
### Added
- **`ByteFormatter`:** Core builder API to configure byte formatting options.
- **Standards & Units:** Support for Base 1000 (SI / `kB`, `MB`) and Base 1024 (Binary / `KiB`, `MiB`) standards, as well as Bytes (`B`) vs Bits (`b`).
- **Zero-Cost Math:** Implemented pure static `match` statements, bitwise shifts for Binary parsing, and compile-time reciprocal multiplication for SI parsing to completely bypass 64-bit dynamic hardware division.
- **Safety Guarantees:** Shipped with a `#![forbid(...)]` linting regime, entirely forbidding `unsafe`, slice indexing, and `unwrap`/`expect` panic branches.
- **Traits:** Implemented `core::fmt::Display` for seamless standard logging.