# Changelog
## Changelog
Releases from 0.2.0 onward are generated by release-please from conventional
commits. The crate's first feature surface (M1 through M10) predates that: it
landed across roughly fifty commits written in this repository's checklist style
(`Completed item: ...`, `Address PR #NN review: ...`) rather than as conventional
commits, so release-please could not attribute any of it and the generated
entries below do not describe it.
What shipped before 0.2.0, for the record:
- An encoding-generic core, `WtfString<E>` / `WtfStr<E>`, with always-terminated
storage whose content spans exclude only the hidden trailing NUL.
- Both encoding arms: `Wtf16` (`Wtf16String` / `Wtf16Str`, native `u16`) and
`Wtf8` (`Wtf8String` / `Wtf8Str`, matching `OsString`'s WTF-8 layout).
- Portable `str` / `String` conversions, `Display` (lossy), escaped `Debug`, and
`Ord` / `Eq` / `Hash` over units with cross-type `str` comparison.
- The Win32 FFI pointer surface: counted and terminated input, buffer-fill
output (`with_capacity` / `as_mut_ptr` / `set_len_from_ffi`), and
callee-allocated output (`from_wide_ptr`).
- Windows-only lossless `OsStr` / `OsString` interop.
- A safe `OsString`-parity mutation surface.
- Optional `windows`-crate interop: `Param<PCWSTR>` behind the `windows-core`
feature.
- A `no_std` / `alloc`-only baseline, proven against a bare-metal target, with
zero dependencies in the default build.