Skip to content

[tmp] openkal 0.16 draft: least stack size, PASS_INPUT, enumeration release (verification only) - #31

Closed
Sunrisepeak wants to merge 10 commits into
mainfrom
tmp/three-reports
Closed

Sunrisepeak wants to merge 10 commits into
mainfrom
tmp/three-reports

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

Temporary draft for cross-platform verification. Not for merge.

One branch name, tmp/three-reports, across openkal, openkal-linux, openkal-macos, openkal-windows, openkal-emscripten and openkal-musl, so that each CI builds the others at the same branch. The commits are checkpoints; the final change will be one PR per repository after the design (.agents/docs/2026-10-25-three-reports-optimisation-design.md in openkal) is reviewed, and this draft will be closed.

What it carries: kal_task_start_sized (a least stack size), KAL_TERM_PASS_INPUT (whether input is altered), and what closing a directory does to its enumerations.

…rectory is refused by kal_fs_list_next

The shape openkal-linux#34 measured was here too. Listings not yet read to the
end are kept on a list under a slim lock with their directory's handle, the
close ends them, a listing another context is reading is released by that
context on its way out (clause 6.6), and the iterator is found among the open
listings rather than read through.
…sk_start_sized asks

A reservation, as the other two implementations give, so a program that asks
for nothing has the same room on all three. The reservation exceeds the request
by the pages this environment keeps for its guard, so the context is told at
least what it asked for.
This environment alters what is typed only while it assembles lines, and has no
switch of its own for the alteration; the position is reported as it stands and
a request for it is neither refused nor composed.
The leak is counted in this environment's table of the process's handles; a
closed directory and a mismatched one are refused, and a close racing a read
ends it. A console allocated by the test is given the return key and Ctrl+J as
key events, and what arrives under each mode is printed beside the position's
read-back. A least stack size is room, and asking for nothing gives 8 MiB.
The call that maps a key to one is user32's, which a test linked as this
package's are does not reach; a key event written by a program carries none.
…the position states: the return key is 0x0d, and Ctrl+J is not it
…es a byte, so a key that produces none is measured rather than waited for
… measured

With line input off and virtual terminal input off, the console delivered the
return key as 0x0d and consumed Ctrl+J without a byte, which alters what was
typed; with virtual terminal input on it delivered 0x0d and 0x0a, the bytes the
other two implementations deliver with the position set. The position is read
from both flags and established by the second; with line input on it reads
clear and a request leaves it so. A console that refuses virtual terminal input
is written again without it.
@Sunrisepeak

Copy link
Copy Markdown
Member Author

Temporary verification draft; carried into #32.

@Sunrisepeak
Sunrisepeak deleted the tmp/three-reports branch October 24, 2026 21:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant