# Changelog
## format-bytes 0.4.0
### Breaking
- Rust 1.85 is required (since it's the lowest that supports edition 2024).
- Escaping of brackets with `{{` and `}}` now works properly.
- A lone `}` is now also an error.
- Format strings must now be valid UTF-8.
### Added
- String literals are supported as format strings.
- `{name}` placeholders, filled by `name = value` arguments or by the variable
`name` in the caller's scope.
- `Sink`, which `write_bytes!` writes to, to keep the format string's text
apart from its arguments. Every `std::io::Write` is a `Sink`.
- `DisplayBytes::visit` and `Visit`, for values to describe themselves with
their type to structured sinks.
- `message!`, which keeps its format string and arguments in a `Message`, to be
written later.
### Changed
- Arguments are evaluated once, before anything is written.
- `join()` collects its items when called, and can be formatted more than once.
### Fixed
- Arguments named `output` are no longer shadowed by the output stream.
- The macros work when `format-bytes` is renamed or re-exported.