# Changelog
## 0.2.0
Breaking.
- `Unterminated` is `#[non_exhaustive]`, which `Options` and `Stripped` already were. `strip`
builds it and callers read its fields, so adding a field later is not a breaking change. Code
that built one with a struct expression can no longer do so.
Other changes.
- `Mode`, `Language`, and `UnterminatedKind` derive `PartialOrd` and `Ord`, so they can sit in a
sorted collection. The order is the order the variants are declared in.
- `include` in the manifest lists what the package ships: source, tests, README, the licenses,
and this file. The package no longer carries `.gitignore`.
- `rust-version` reads 1.81.0, the same string the README states.
- A CI job builds the library and runs the doctests at the 1.81.0 floor. The full test suite,
clippy, and rustfmt run on stable.
- Dual licensed under MIT OR Apache-2.0. `LICENSE` is now `LICENSE-MIT` and `LICENSE-APACHE`
sits beside it. 0.1.0 stays MIT only.
- README states the MSRV in a `## Requirements` section.
## 0.1.0
First release.
- `strip` removes comments from source text in one pass and returns a `Stripped` holding the
output and an optional diagnostic. It cannot fail and cannot panic, so there is no `Result`.
- `Language` covers C, C++, C#, CSS, Go, HTML, Java, JavaScript, Python, Rust, SQL, Swift, and
TypeScript. Strings, templates, and regex literals are scanned, so a comment marker inside one
is left alone.
- `Mode` picks what to remove, with `All`, `Line`, `Block`, and `First`.
- `preserve_newlines` writes back the line terminators that sat inside removed text, byte for
byte. `keep_bang_comments` keeps a comment whose body starts with `!`.
- `Unterminated` and `UnterminatedKind` report a construct left open at end of input.
`Unterminated` implements `core::error::Error`.
- `#![no_std]` with `extern crate alloc`. No dependencies and no cargo features.