You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bring Background (curs_bkgd) and Terminal queries (curs_termattrs) to 100%
Two more groups fully resolved (eight total).
curs_bkgd 5/5: bkgd/bkgdset/wbkgd/wbkgdset set a window's background in memory
and emit no immediate bytes -> deferred, proven by NCURSES.BKGD.NOOUTPUT;
getbkgd is a pure query -> n/a.
curs_termattrs 17/17: longname/termname/has_ic/has_il reconstructed on the
terminfo substrate (has_ic/has_il derived from the insert/delete caps) and
matched against ncurses across 9 terminals (NCURSES.TERMATTRS, admitted_match).
termattrs (SCREEN-level mask, 0 without a screen), baudrate/erasechar/killchar
(tty/termios state), and curses_version (library identity) have no terminfo-only
contract -> n/a, classified with reasons.
Overall 97/481 (20.2%): 30 full, 16 partial, 16 scaffold, 4 divergent, 14
deferred, 17 n/a. Two new no-output/query courts. README/gate green.
Copy file name to clipboardExpand all lines: docs-src/models/parity.model.json
+132Lines changed: 132 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -137,6 +137,74 @@
137
137
"NCURSES.MOVE.NOOUTPUT"
138
138
],
139
139
"note": "Sets the window's logical cursor position; emits no immediate terminal bytes (the position is consumed by a later add/refresh). Proven empty-output."
140
+
},
141
+
"bkgd": {
142
+
"status": "deferred",
143
+
"courts": [
144
+
"NCURSES.BKGD.NOOUTPUT"
145
+
],
146
+
"note": "Sets a window's background char+attribute in memory; emits no immediate terminal bytes (shown by a later refresh). Proven empty-output."
147
+
},
148
+
"bkgdset": {
149
+
"status": "deferred",
150
+
"courts": [
151
+
"NCURSES.BKGD.NOOUTPUT"
152
+
],
153
+
"note": "Sets a window's background char+attribute in memory; emits no immediate terminal bytes (shown by a later refresh). Proven empty-output."
154
+
},
155
+
"wbkgd": {
156
+
"status": "deferred",
157
+
"courts": [
158
+
"NCURSES.BKGD.NOOUTPUT"
159
+
],
160
+
"note": "Sets a window's background char+attribute in memory; emits no immediate terminal bytes (shown by a later refresh). Proven empty-output."
161
+
},
162
+
"wbkgdset": {
163
+
"status": "deferred",
164
+
"courts": [
165
+
"NCURSES.BKGD.NOOUTPUT"
166
+
],
167
+
"note": "Sets a window's background char+attribute in memory; emits no immediate terminal bytes (shown by a later refresh). Proven empty-output."
168
+
},
169
+
"getbkgd": {
170
+
"status": "n_a",
171
+
"note": "Pure query returning a window's background char+attribute; no terminal-output contract."
172
+
},
173
+
"termattrs": {
174
+
"status": "n_a",
175
+
"note": "Supported-video-attributes mask computed at the SCREEN(SP) level (0 without a screen); requires the screen model not present in the terminfo-only substrate."
176
+
},
177
+
"termattrs_sp": {
178
+
"status": "n_a",
179
+
"note": "Supported-video-attributes mask computed at the SCREEN(SP) level (0 without a screen); requires the screen model not present in the terminfo-only substrate."
180
+
},
181
+
"baudrate": {
182
+
"status": "n_a",
183
+
"note": "Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction."
184
+
},
185
+
"baudrate_sp": {
186
+
"status": "n_a",
187
+
"note": "Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction."
188
+
},
189
+
"erasechar": {
190
+
"status": "n_a",
191
+
"note": "Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction."
192
+
},
193
+
"erasechar_sp": {
194
+
"status": "n_a",
195
+
"note": "Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction."
196
+
},
197
+
"killchar": {
198
+
"status": "n_a",
199
+
"note": "Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction."
200
+
},
201
+
"killchar_sp": {
202
+
"status": "n_a",
203
+
"note": "Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction."
204
+
},
205
+
"curses_version": {
206
+
"status": "n_a",
207
+
"note": "Returns the curses library identity/version string; not a terminal capability and no terminal-output contract."
140
208
}
141
209
},
142
210
"groups": [
@@ -2339,6 +2407,70 @@
2339
2407
"rust": "screen::single_field_repaint",
2340
2408
"status": "scaffold",
2341
2409
"note": "Same single-shape repaint seed as doupdate; the _sp screen-pointer variant is not modelled."
Copy file name to clipboardExpand all lines: docs/generated/port-parity-functions.md
+31-3Lines changed: 31 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,27 +19,28 @@ C function's signature, return values, or window semantics -- ncurses-native is
19
19
byte-output reconstruction, not a C API. Credit is withheld from every function
20
20
that is neither reconstructed nor classified with evidence.
21
21
22
-
**Overall: 75 / 481 C functions are resolved (15.6%). The other 406 are gaps.**
22
+
**Overall: 97 / 481 C functions are resolved (20.2%). The other 384 are gaps.**
23
23
24
24
Legend: `*` full = every function in the group reconstructed and admitted by a court · `~` partial = some behavior reconstructed with an executable court (byte/terminfo oracle) · `o` scaffold = a byte-producing stand-in exists, not yet pinned by its own court · `!` divergent = a counterpart exists but a court records a measured divergence from the in-repo oracle · `>` deferred = no immediate terminal output; the function's effect is realized later by refresh/doupdate, proven by an empty-output court · `n` n_a = no terminal-output contract (pure query or state); nothing for a byte-output reconstruction to emit · `.` none = no counterpart.
25
25
26
26
## Per-group coverage
27
27
28
28
| ncurses API group | fns | resolved | gap | parity % |
@@ -65,6 +65,14 @@ Every function in a group that has at least one resolution is listed; gaps are
65
65
shown explicitly. Groups with zero resolutions are omitted (see the table above
66
66
for their totals).
67
67
68
+
### Background (curs_bkgd) — 5/5 (100.0%)
69
+
70
+
-`>``bkgd` (deferred) [NCURSES.BKGD.NOOUTPUT] — Sets a window's background char+attribute in memory; emits no immediate terminal bytes (shown by a later refresh). Proven empty-output.
71
+
-`>``bkgdset` (deferred) [NCURSES.BKGD.NOOUTPUT] — Sets a window's background char+attribute in memory; emits no immediate terminal bytes (shown by a later refresh). Proven empty-output.
72
+
-`n``getbkgd` (n_a) — Pure query returning a window's background char+attribute; no terminal-output contract.
73
+
-`>``wbkgd` (deferred) [NCURSES.BKGD.NOOUTPUT] — Sets a window's background char+attribute in memory; emits no immediate terminal bytes (shown by a later refresh). Proven empty-output.
74
+
-`>``wbkgdset` (deferred) [NCURSES.BKGD.NOOUTPUT] — Sets a window's background char+attribute in memory; emits no immediate terminal bytes (shown by a later refresh). Proven empty-output.
75
+
68
76
### Bell (curs_beep) — 4/4 (100.0%)
69
77
70
78
-`*``beep` (full) → `bell::beep`[NCURSES.CAP.BEL] — Emits the bel capability (xterm: 0x07); a pure output cap with no window state.
@@ -108,6 +116,26 @@ for their totals).
108
116
-`>``wredrawln` (deferred) [NCURSES.REFRESH.NOOUTPUT] — Marks a window/line range for full repaint on the next refresh; emits no immediate terminal bytes (proven empty-output).
109
117
-`o``wrefresh` (scaffold) → `screen::single_field_repaint` — Same single-shape repaint seed; no WINDOW model.
-`n``baudrate` (n_a) — Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction.
122
+
-`n``baudrate_sp` (n_a) — Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction.
123
+
-`n``curses_version` (n_a) — Returns the curses library identity/version string; not a terminal capability and no terminal-output contract.
124
+
-`n``erasechar` (n_a) — Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction.
125
+
-`n``erasechar_sp` (n_a) — Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction.
126
+
-`*``has_ic` (full) → `terminfo::Terminfo::has_ic`[NCURSES.TERMATTRS] — Insert-character capability derived from terminfo; matches ncurses across 9 terminals.
127
+
-`*``has_ic_sp` (full) → `terminfo::Terminfo::has_ic`[NCURSES.TERMATTRS] — Insert-character capability derived from terminfo; matches ncurses across 9 terminals.
128
+
-`*``has_il` (full) → `terminfo::Terminfo::has_il`[NCURSES.TERMATTRS] — Insert/delete-line capability derived from terminfo; matches ncurses across 9 terminals.
129
+
-`*``has_il_sp` (full) → `terminfo::Terminfo::has_il`[NCURSES.TERMATTRS] — Insert/delete-line capability derived from terminfo; matches ncurses across 9 terminals.
130
+
-`n``killchar` (n_a) — Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction.
131
+
-`n``killchar_sp` (n_a) — Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction.
-`n``termattrs` (n_a) — Supported-video-attributes mask computed at the SCREEN(SP) level (0 without a screen); requires the screen model not present in the terminfo-only substrate.
135
+
-`n``termattrs_sp` (n_a) — Supported-video-attributes mask computed at the SCREEN(SP) level (0 without a screen); requires the screen model not present in the terminfo-only substrate.
136
+
-`*``termname` (full) → `terminfo::Terminfo::termname`[NCURSES.TERMATTRS] — Primary terminal name (first alias, <=14 bytes); matches ncurses across 9 terminals.
137
+
-`*``termname_sp` (full) → `terminfo::Terminfo::termname`[NCURSES.TERMATTRS] — Primary terminal name (first alias, <=14 bytes); matches ncurses across 9 terminals.
-`n``del_curterm` (n_a) — Manages/frees the global cur_term; ncurses-native uses owned Terminfo values, so there is no global pointer to set/delete/free and no terminal output to emit.
0 commit comments