# Changelog

## v0.2.21 - 2026-05-19

- Enabled deprecation warnings for `from_inner()` and `from_inner_unchecked()`.
- Refactored `from_str_lossy()` to eliminate redundant array initialization.
- Refactored `from_fmt()` to simplify unsafe operations.
- Added CHANGELOG.md to the repository.

## v0.2.20 - 2026-05-17

### New features

- Added `fstr!` convenience macro for easier creation of `FStr` values with
  formatted content.
- Implemented `TryFrom<&str>` for `FStr` to improve ergonomics when converting
  from string literals.

### Renamings

- The following constant and methods of `FStr` are renamed for better
  readability and consistency. Old names are kept as deprecated synonyms for
  backward compatibility:
  - `LENGTH` -> `LEN`
  - `into_inner()` -> `into_bytes()`
  - `from_inner()` -> `from_bytes()`
  - `from_inner_unchecked()` -> `from_bytes_unchecked()`
  - `from_str_unwrap()` -> `from_str_const()`
  - `slice_to_terminator()` -> `slice_up_to()`

### Other

- Refactored tests requiring `std` into the `tests/` directory.
- Other minor refactoring and documentation adjustments.

## v0.2.19 - 2026-05-07

- Added `#[track_caller]` to improve panic diagnosis.
- Minor refactoring.

## v0.2.18 - 2026-04-24

- Added `actual()` and `expected()` to `LengthError`.
- Other minor refactoring.

## v0.2.17 - 2026-02-21

- Migrated to Edition 2024 and upgraded MSRV to 1.85.
- Marked `FStr::as_mut_str()` as const.
- Implemented `core::error::Error` for `LengthError` and `FromSliceError` in
  `no_std` environments.
- Other minor refactoring.

## v0.2.16 - 2026-02-21

- Minor refactoring.

## v0.2.15 - 2025-10-15

- Added `alloc` crate feature and moved the integration with `String` from
  `std`.
- Added `FStr::as_mut_str()`.
- Other minor refactoring.

## v0.2.14 - 2025-10-03

- Added `rust-version = "1.63"` key to Cargo.toml.

## v0.2.13 - 2025-02-23

- Deprecated `FStr::writer` to simplify API; use `writer_at(0)`.
- Updated Cargo.lock.
- Updated documents.

## v0.2.12 - 2024-10-13

- Added `FStr::from_fmt()`.
- Published `Cursor`, the return type of `FStr::writer()`.
- Renamed `FStr::repeat()` to `FStr::from_ascii_filler()`, leaving the old name
  as a deprecated alias to maintain backward compatibility.
- Made minor refactoring and code reorganization.

## v0.2.11 - 2024-08-17

- Minor refactoring.

## v0.2.10 - 2023-11-20

- Fixed #1 Soundness issue: writing to an `as_ptr` pointer is UB.

## v0.2.9 - 2023-10-03

- Minor refactoring and test case improvements.

## v0.2.8 - 2023-10-02

- Exposed `Debug` implementation of struct returned by `writer()`.
- Refactored `from_str_lossy()` to lower minimum compatible Rust version.

## v0.2.7 - 2023-09-16

- Removed redundant #[inline] attributes.

## v0.2.6 - 2023-09-16

### Added

- `TryFrom<&[u8]>` implementation.
- `FromSliceError`.

### Maintenance

- Other refactoring and internal improvements.

## v0.2.5 - 2023-09-11

- Removed `Hash` and `Default` implementations from `LengthError` as they might
  cause nonsensical consequences.

## v0.2.4 - 2023-07-10

- Changed `fmt::Debug` implementation to present the length of inner array.

## v0.2.3 - 2023-06-11

- Added `impl TryFrom<[u8; N]>` and `impl TryFrom<&[u8; N]>` that allow
  `FStr::try_from(b"foo")?` syntax.

## v0.2.2 - 2023-04-06

- Refactored internal structure.

## v0.2.1 - 2023-04-05

- Refactored internal structure.

## v0.2.0 - 2023-04-01

### Changed

- `fmt::Display` implementation; it now supports width, fill/align, and
  precision flags (e.g., `{:5}`, `{:^7.3}`), which used to be ignored.
- `fmt::Debug` representation.

### Added

- `repeat`.
- Deserialization support from byte slice.

## v0.1.6 - 2023-03-30

- Added `writer_at()`.

## v0.1.5 - 2023-03-28

- Added `writer()` to support `fmt::Write` operations.

## v0.1.4 - 2022-12-21

- Added `LENGTH` type constant.
- Added `#[repr(transparent)]` guarantee.

## v0.1.3 - 2022-12-09

- Added `from_str_lossy()` and `slice_to_terminator()`.

## v0.1.2 - 2022-12-06

- Added #[inline] attribute to some functions.

## v0.1.1 - 2022-11-23

- v0.1.1 Released
