Skip to content

Commit 9f13041

Browse files
committed
docs(CHANGES): Note experimental operations and engines
why: Record the experimental operations/engines layer for the upcoming release so the unreleased section tracks what landed. what: - Add a "What's new" deliverable under the unreleased 0.59.x section for the experimental operations and engines layer (#690) - Defer the release lead paragraph until the version is cut
1 parent f24e78f commit 9f13041

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

CHANGES

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,34 @@ $ uvx --from 'libtmux' --prerelease allow python
4545
_Notes on the upcoming release will go here._
4646
<!-- END PLACEHOLDER - ADD NEW CHANGELOG ENTRIES BELOW THIS LINE -->
4747

48+
### What's new
49+
50+
#### Experimental operations and engines (#690)
51+
52+
Operations describe tmux commands as data. Each renders its argv against a tmux
53+
version (dropping flags an older tmux cannot accept), adapts raw output into a
54+
typed result, and serializes to and from plain dicts -- all without a running
55+
tmux server. The set spans the read seam (``list-*``, ``has-session``,
56+
``display-message``, ``show-options``, ``show-buffer``) and the
57+
mutating/creating surface for panes, windows, the server, options, environment,
58+
hooks, and paste buffers. A registry-generated catalog on the {ref}`experimental`
59+
page always matches the code.
60+
61+
Engines run those operations behind one protocol, so the same operation returns
62+
the same typed result whether it goes through a subprocess (the classic path
63+
that reproduces today's libtmux behavior), an in-memory simulator for tests and
64+
dry runs, a persistent ``tmux -C`` control connection, an async transport, or
65+
tmux's native binary peer protocol. Results never raise on construction;
66+
raising is opt-in via ``raise_for_status()``, and how a failed result is handled
67+
is each engine's policy.
68+
69+
A {class}`~libtmux.experimental.ops.plan.LazyPlan` records operations and yields
70+
forward references so a later operation can target an object that does not exist
71+
yet, resolved against captured ids at execution time. How a plan becomes tmux
72+
dispatches is a pluggable {class}`~libtmux.experimental.ops.planner.Planner`
73+
(sequential, ``;``-folding, or ``{marked}``-folding), so dispatch strategies can
74+
be A/B tested against the same plan with identical results.
75+
4876
## libtmux 0.61.0 (2026-07-04)
4977

5078
libtmux 0.61.0 hardens support for the tmux 3.7 patch line. It fixes

0 commit comments

Comments
 (0)