Termy v0.2.17
Performance improvements
This pre-release focuses on reducing allocation, locking, scanning, and idle work across Termy's terminal core and desktop application.
Core runtime
- Added a borrowed fast path for ordinary PTY data in the OSC interceptor, avoiding copies and byte-by-byte parser work when no OSC sequence is present.
- Made empty terminal event drains and no-damage frame snapshots allocation-free.
- Reduced the native event polling scratch capacity from 1024 events to 8, cutting per-pane retained memory.
- Reworked full and partial frame snapshots to build their final cell buffers in one pass.
- Changed OSC 8 hyperlink hit-testing from collecting the visible grid to scanning only the requested row.
- Removed redundant string allocations when building searchable terminal lines.
- Preserved wakeup coalescing semantics while making the empty-drain fast path cheaper.
Desktop application
- Added a terminal layout and resize signature so unchanged renders skip repeated geometry walks, terminal locks, and resize calls.
- Deferred pane ID and active-pane string cloning until a terminal actually yields events.
- Cached alternate-screen state instead of taking an additional terminal lock during rendering.
- Removed render timing calls from normal sessions unless render metrics are enabled.
- Disabled plain wakeup signals for stashed workspace panes, reducing background workspace wake storms while preserving metadata, exit, and damage handling.
- Avoided temporary native-tab allocations during terminal size synchronization.
Validation
- 180
termy_coretests passed. - 628 desktop application tests passed.
- FFI and benchmark-tool test suites passed.
- Clippy passed for all targets with warnings denied.
- Formatting, repository boundary checks, and diff checks passed.
- The steady-scroll benchmark gate passed with unchanged 8.33 ms p50/p95 frame times and zero hitches. The benchmark harness remains noisy, so this release does not claim a synthetic percentage speedup.