Parity
Python is the reference implementation; every other port tracks how much of its public surface it covers.
How each port is built
| Port | Package | Reference host | Renderer | Generator |
|---|---|---|---|---|
| Python | libtmux | libtmux.org | sphinx | Sphinx + sphinx-gp-theme |
| Ruby | libtmux | libtmux.org | astro | public inventory + YARD JSON + RBS |
| Lua | libtmux | libtmux.org | astro | LuaLS JSON |
| PowerShell | LibTmux | libtmux.org | astro | PowerShell command metadata, manifests, PlatyPS and C# source |
| Julia | LibTmux | libtmux.org | astro | Julia syntax, native methods and documentation |
| TypeScript | libtmux | libtmux.org | astro | @microsoft/api-extractor JSON |
| Rust | libtmux | docs.rs | Not applicable | Not applicable |
| Go | github.com/libtmux/libtmux-go/tmux | pkg.go.dev | Not applicable | Not applicable |
| Java | io.github.libtmux:libtmux | javadoc.io | Not applicable | Not applicable |
| Kotlin | io.github.libtmux:libtmux-kotlin | Dokka | Not applicable | Not applicable |
| Scala | io.github.libtmux:libtmux-scala_3 | Scaladoc | Not applicable | Not applicable |
| C# | LibTmux | libtmux.org | astro | docfx metadata (--outputFormat markdown) |
| F# | LibTmux.FSharp | libtmux.org | Not applicable | Not applicable |
| C++ | libtmux-cxx | libtmux.org | sphinx | Doxygen XML to Breathe to Sphinx |
| Swift | libtmux-swift | libtmux.org | native-skinned | DocC (swift-docc-plugin) |
Per-symbol parity
Four ports publish a per-symbol Python-parity ledger, each in its own format (Rust, C++ and TypeScript keep trackers too, in three more shapes not sampled here). Every cell below is marked according to the evidence found in its source checkout during the build:
- test-verified
- The cited test file (.NET) or function (Go) exists. This does not mean the test was run.
- claimed
- The ledger asserts an implementation or test without a resolvable citation.
- unknown
- The ledger records no implementation status for this row.
Per-port summary
| Port | Ledger format | Python revision | Rows | Test-verified | Claimed | Unknown |
|---|---|---|---|---|---|---|
| C# | JSON entries map Python public symbols to approved C# destinations, exclusions with reasons, or internal implementations without a public equivalent. | c4a980b | 626 | 626 | 0 | 0 |
| Go | JSON entries cover Python symbols and parameter branches. Each records a source path and test-function citations, which this site checks for existence. | not recorded | 1588 | 1588 | 0 | 0 |
| Java | python-api.md inventories 889 Python symbols; test-map.md inventories 1458 test cases. These Markdown tables describe planned Java treatments and tests, rather than completed implementations. | c4a980b | 892 | 0 | 3 | 889 |
| Swift | JSON inventories Python APIs, behavior, formats, queries, and source fingerprints. swiftAdaptation describes a planned translation strategy; the files record no Swift implementation status. | 988b02a | 1326 | 0 | 0 | 1326 |
C# and Go publish per-symbol ledgers that are entirely pre-triaged; on this build, all 626 C# rows and all 1588 Go rows resolve as test-verified: the cited evidence (a test file for C#, a test function for Go) exists in that port's checkout. Java's and Swift's ledgers carry no per-symbol implementation-status field at all: Java's by explicit disclaimer in its own source files ("a row's presence says Python has it, not that Java does" / "a catalogue, not a status report"), confirmed here by checking that the contract-test classes those files cite (not found / not found) don't exist in the checkout; Swift's by the absence of any Swift-side status field across all five of its parity files.
By Python module
Rows are the union of modules across all four ledgers. Only C#'s ledger has its own module
field, used directly; Go, Java and Swift have none, so their rows are derived mechanically
from each entry's source-file path instead using the same mapping as C#'s module field. “No rows” means the
ledger has no entries for that module; for C#, most of the
_internal/_vendor rows are that by declared scope
(public-API-only), not by omission.
| Python module | C# | Go | Java | Swift |
|---|---|---|---|---|
| libtmux | 14 verified | 14 verified | 13 unknown | 14 unknown |
| libtmux.__about__ | No rows | 12 verified | No rows | No rows |
| libtmux._compat | No rows | 18 verified | 5 unknown | No rows |
| libtmux._internal.constants | No rows | 242 verified | 237 unknown | No rows |
| libtmux._internal.control_mode | No rows | 10 verified | 5 unknown | No rows |
| libtmux._internal.dataclasses | No rows | 2 verified | 1 unknown | No rows |
| libtmux._internal.env | No rows | 10 verified | 5 unknown | No rows |
| libtmux._internal.query_list | 27 verified | 57 verified | 28 unknown | No rows |
| libtmux._internal.sparse_array | No rows | 6 verified | 8 unknown | No rows |
| libtmux._internal.types | No rows | 1 verified | 1 unknown | No rows |
| libtmux._vendor._structures | No rows | 1 verified | 4 unknown | No rows |
| libtmux._vendor.version | No rows | 1 verified | 25 unknown | No rows |
| libtmux.client | 9 verified | 7 verified | 8 unknown | 8 unknown |
| libtmux.common | 30 verified | 48 verified | 30 unknown | 37 unknown |
| libtmux.constants | 25 verified | 24 verified | 24 unknown | 25 unknown |
| libtmux.exc | 28 verified | 53 verified | 27 unknown | 28 unknown |
| libtmux.formats | 6 verified | 5 verified | 5 unknown | 6 unknown |
| libtmux.hooks | 13 verified | 54 verified | 12 unknown | 38 unknown |
| libtmux.neo | 190 verified | 197 verified | 191 unknown | 899 unknown |
| libtmux.options | 23 verified | 69 verified | 22 unknown | 29 unknown |
| libtmux.pane | 58 verified | 285 verified | 56 unknown | 56 unknown |
| libtmux.pytest_plugin | 14 verified | 16 verified | 13 unknown | 13 unknown |
| libtmux.server | 72 verified | 232 verified | 66 unknown | 65 unknown |
| libtmux.session | 43 verified | 71 verified | 39 unknown | 39 unknown |
| libtmux.test | 1 verified | No rows | No rows | 1 unknown |
| libtmux.test.constants | 4 verified | 3 verified | 3 unknown | 4 unknown |
| libtmux.test.environment | 4 verified | 10 verified | 3 unknown | 4 unknown |
| libtmux.test.random | 5 verified | 10 verified | 4 unknown | 4 unknown |
| libtmux.test.retry | 2 verified | 4 verified | 1 unknown | 2 unknown |
| libtmux.test.temporary | 3 verified | 8 verified | 2 unknown | 3 unknown |
| libtmux.window | 55 verified | 118 verified | 51 unknown | 51 unknown |
Per-ledger notes
- C#: Covers the public API extracted in python-public-api.json. Python's _internal and _vendor modules are outside this ledger's scope.
- Java: Module counts use python-api.md. test-map.md identifies pytest cases and doctest chunks instead of symbols, so its counts are reported separately: 1458 rows, with statuses {"planned parity":1454,"source-declared partial non-execution":1,"deliberate Java correction":3}. Its 3 "deliberate Java correction" rows assert implementation but cite methods on the missing PythonBehaviorParityTest class. They count as claimed in the port total only. Server.attached_sessions has two evidence entries, so row counts can exceed the number of distinct corrections.
- Swift: 712 of this ledger's 1326 entries are inherited dataclass fields, counted once for each inheriting subclass, mostly in libtmux.neo. These repeated entries increase row counts without increasing the number of distinct Python symbols.
- Go: the "Python revision" column above reads "not recorded". See the revision-skew note above for what Go's manifest records instead.