mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-07-31 20:59:02 +00:00
PageList nodes previously exposed Page directly, so introducing a compressed representation would require every consumer to understand its state and ownership. Add resident and compressed node states behind a page access boundary. Content access transparently recommits and restores retained mappings, while metadata traversal stays compressed and lifecycle paths can discard encoded contents without decoding. Compression borrows pool memory for standard scratch and uses temporary aligned storage for oversized pages. Migrate terminal, rendering, search, formatting, and C API consumers to the new boundary. Hot grow, scroll, and print paths reuse resolved pages, with an explicit resident-only accessor where live cursor pointers prove that the page cannot be compressed. The compression entry point remains private with no production callers, so normal terminal behavior and scrollback accounting are unchanged. ReleaseFast terminal-stream comparisons across bulk output, scrolling, redraw, and erase workloads remain within 2% of the parent revision.