ghostty-next: pin 850bb9849 (fork PR #84): a reflow preview frame re-wraps off the terminal lock
Summary
cmux-ad m18 (T-REWRAP). GhosttyNextKit and the ghostty-next gitlink move together from 383b27d73 (fork main, the upstream sync) to 850bb9849 (fork main + fork PR #84):
- manaflow-ai/ghostty-next#84 ports manaflow-ai/ghostty-next#83 to main (the source is byte-identical to #83's reviewed head
79d62f7c5). A reflow preview frame whose only change is the grid (each frame of a key resize or a divider drag) re-wraps a kept copy of the terminal with no terminal lock held. The live terminal is copied under the lock only when it changed (a dirty flag, a color epoch, its cursor or colors, a new live grid, or the history a new grid needs). Before, the preview's watch never reset its dirty state, so every preview frame copied the live terminal under the terminal lock (0.43-0.55 ms p50 at 200x60) and blocked the output parser and the main thread's lock users. Now 1 copy serves 800 frames of a drag.
No C API change: the app keeps ghostty_surface_set_size each frame with ghostty_surface_set_reflow_preview(true). No change in the present path.
The release: xcframework-850bb98497044f6632310c303a68974b6289af4b-apple-v6 (run 42047067774), zip sha256 f8b0c65707292cce8fa34fa195b529206a45b6f2b53b187c5b401339e233006f. The release's SHA256SUMS, the GitHub asset digest and the manifest commit agree. The changed fork files are not in the libghostty-vt link graph, so vt-link-graph.json changes only its commit.
This branch was first opened on the release line (510ca45ff, fork #83); feat moved to fork main (#35478) during its checks, so it was re-pinned to the main port. The branch now differs from feat only in the 5 pin files.
Testing
- Fork:
reflow preview:tests (6). Reds: run 42018811302 ("a frame whose only change is the grid copies nothing under the terminal lock", expected 1, found 7) and run 42024684069 (stale cursor, expected x 1, found 2). On main (Zig 0.17): tests + bench 42040022802 (84/84; 1 copy for 800 frames), PR build 42040024043 (224/224, lib-vt 481/481). - Fork reviews: independent SHIP at
79d62f7c5(#83, after one BLOCK fixed), delta SHIP atf9048ee65(#84). - Here:
check_ghostty_vt_notices.py --check-link-graphandpackage_notices.py check-datapass;prepush-gate.pypasses. - Fleet, exact head
469d944007c: Mac DEV build26cfebb8ed2e47e8598139e8(aws-m4pro-4, tag t-rewrap-pin-v4); launch smoke PASS on macOS 14.8.7 and 15.7.7 (os-matrix stepd4c5cd6146f51695570c508c, 0 crashes, 0 hangs, 0 faults). Its split screenshot shows the left terminal's command line re-wrapped at the narrower pane.
Observed / Not run
- Observed: everything above.
- Not run: films and the STRESS gate (owned by T-KEYS and T-DRAGS); the display resize suites at this head. The earlier Linux-pool build failed only in the import-set infra red (STATUS 14391), and an earlier Mac build only in the acpmux base red fixed by #36647.
No capture: the change is the cost and the lock time of each resize frame; what a frame shows does not change.
Changelog
none