New Features
- Integrated esctest test suite — Ported and automated the esctest suite (previously Python 2.7-based) to work on modern macOS, improving test coverage and catching regressions
Performance Improvements
-
Major Kitty image scrolling fix — Resolved a significant performance regression introduced with Kitty image support. Scrolling now tracks which lines contain images and only performs expensive operations when necessary
-
Inlined EscapeSequenceParser — Replaced configurable parser with expensive hash table lookups with direct method calls, yielding 1–4% performance improvements on escape sequence processing (#436)
-
Optimized dirty line flagging — Using borrows for buffer operations provides a 4.1% throughput improvement
-
General throughput gains — Combined optimizations deliver up to 58% throughput improvement on VteBench and 20% on raw feeding tests
Bug Fixes
- Fixed DECSLRM margin handling — scroll(), cmdIndex, and reverseIndex now properly respect left/right margins. This fixes display corruption in applications like tmux when using side-by-side panes (#434)
- Fixed color parsing — Corrected escape sequence terminator handling to use the current terminator rather than hardcoding to BEL
- Fixed macOS esctest compatibility — Resolved SIGCHLD signal handling conflict with Swift Subprocess
- Fixed missing version specification — Package now includes a fixed version so dependents can properly resolve it (#438)
Thread Safety
Eliminated global state in CharSets — Character set data is now local to each Terminal instance, continuing the effort to make Terminals fully thread-safe