# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.0.0] - 2026-04-24
### Added
- `Error::from_token_stream(tokens: TokenStream) -> Self` to reconstruct an
`Error` from a token stream containing `compile_error!` invocations. Useful
when a nested macro call returns a stream that may already contain errors and
you need to inspect, combine, or suppress them before re-emitting.
- `Error::empty()` constructor for starting an accumulation with no messages.
- `Error::is_empty() -> bool` to check whether any messages have been added.
- `impl Extend<Error> for Error` for pushing multiple errors from an iterator.
- `impl FromIterator<Error> for Error` so errors can be collected with
`.collect::<Error>()`. Collecting an empty iterator produces `Error::empty()`.
- `impl Display for Error`: single errors print their message directly; multiple
errors are joined with newlines.
- `impl std::error::Error for Error`.
- `#[derive(Debug, Clone)]` on `Error`.
- `#[must_use]` on all constructors and functions returning a value.
### Fixed
- Declared MSRV as `rust-version = "1.85"` in `Cargo.toml` (required by the
2024 edition).
- Relaxed `proc-macro2` dependency from `"1.0.106"` to `"1"` to avoid
duplicate compilations in consumer dependency trees.
## [0.2.0] - 2026-04-23
### Breaking
- Switched from `proc_macro` to `proc_macro2` for broader compatibility.
### Added
- `Error::combine(&mut self, other: Error)` to batch multiple errors together.
When `to_compile_error()` is called, all errors will be emitted as separate
`compile_error!` invocations, allowing the compiler to report them all at once.
- Unit tests
### Optimized
- Added `#[inline]` hints to `Error::new`, `Error::combine`, and `error()` for faster
function inlining.
- Replaced `Vec<(Span, String)>` with `Option<(Span, String)>` + `Option<Vec<...>>` to avoid
heap allocation for the common single-error case.
- Added release profile with `lto = true` and `opt-level = "z"` for minimal binary size.
## [0.1.0] - 2026-04-22
### Added
- `Error` struct with `new(span, message)` and `to_compile_error()`.
- `error(span, message)` free function as a one-shot convenience wrapper.
- Span-accurate `compile_error!` emission by constructing tokens manually
and attaching the span to each one via `.set_span()`.