[PR #10099] Introduce til::rle - a run length encoded vector #27893

Open
opened 2026-01-31 09:24:55 +00:00 by claunia · 0 comments
Owner

Original Pull Request: https://github.com/microsoft/terminal/pull/10099

State: closed
Merged: Yes


Summary of the Pull Request

Introduces til::rle, a vector-like container which stores elements of
type T in a run length encoded format. This allows efficient compaction
of repeated elements within the vector.

References

  • #8000 - Supports buffer rewrite work. A re-use of til::rle will be
    useful as a column counter as we pursue NxM storage and presentation.
  • #3075 - The new iterators allow skipping forward by multiple units,
    which wasn't possible under TextBuffer-/OutputCellIterator.
    Additionally it also allows a bulk insertions.
  • #8787 and #410 - High probability this should be pmr-ified
    like bitmap for things like chafa and cacafire
    which are changing the run length frequently.

PR Checklist

Validation Steps Performed

  • Ran cacafire in OpenConsole.exe and it looked beautiful
  • Ran new suite of RunLengthEncodingTests.cpp

Co-authored-by: Michael Niksa miniksa@microsoft.com

**Original Pull Request:** https://github.com/microsoft/terminal/pull/10099 **State:** closed **Merged:** Yes --- ## Summary of the Pull Request Introduces `til::rle`, a vector-like container which stores elements of type T in a run length encoded format. This allows efficient compaction of repeated elements within the vector. ## References * #8000 - Supports buffer rewrite work. A re-use of `til::rle` will be useful as a column counter as we pursue NxM storage and presentation. * #3075 - The new iterators allow skipping forward by multiple units, which wasn't possible under `TextBuffer-/OutputCellIterator`. Additionally it also allows a bulk insertions. * #8787 and #410 - High probability this should be `pmr`-ified like `bitmap` for things like `chafa` and `cacafire` which are changing the run length frequently. ## PR Checklist * [x] Closes #8741 * [x] I work here. * [x] Tests added. * [x] Tests passed. ## Validation Steps Performed * [x] Ran `cacafire` in `OpenConsole.exe` and it looked beautiful * [x] Ran new suite of `RunLengthEncodingTests.cpp` Co-authored-by: Michael Niksa <miniksa@microsoft.com>
claunia added the pull-request label 2026-01-31 09:24:55 +00:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#27893