packages feed

nano-rope-0.1.0.0: CHANGELOG.md

# Changelog

## 0.1.0.0 — unreleased

Initial release.

- Persistent B-tree rope with UTF-8 chunks up to 512 bytes and structural
  sharing between versions.
- Indexing and conversion in bytes, code points, UTF-16 code units, and lines,
  plus zero-based line-and-column positions.
- Insert, delete, and replace operations, with a single-descent fast path for
  small edits and a bounded buffer for consecutive keystrokes.
- Cached metrics for constant-time length queries, including pending input.
- Line lookup, slicing, chunk folds, and zero-copy chunk views.
- Shared range descent for `slice` and `sliceText`, avoiding tree rebuilding
  above the lowest node containing the range.
- Combined line-start and position lookup with `metricsAtLineAndPosition`,
  for column conversion and detection of clamped or rounded positions.
- Unlifted tree nodes to avoid evaluation checks during traversal. Requires
  GHC 9.4 or later.
- Buffered UTF-8 output through `hPutUtf8` and `writeFileUtf8`.
- Runtime-selected SSE2 and AVX2 chunk scans on supported x86-64 systems,
  with portable C elsewhere and an optional Haskell-only build.
- Direct CPU feature detection without compiler-runtime symbols, supporting
  GHCi and Template Haskell linking on Windows.
- Custom monoidal measures and prefix searches in `Data.Text.NanoRope.Measured`.
- Representation, scan primitives, and invariant checks in
  `Data.Text.NanoRope.Internal`, without API stability guarantees.