QJAB-014: io.fork() and io.exit() — a child that inherits the runtime's open state

Now
OPEN
Sev
MED
Ask
gritzko
Rep
///quickjab
See
BEE-072
See
QJAB-013

io runs a child only through spawnFds (fork + exec of another binary) and reaps it with reap. BEE-072 wants a plain fork(): a child that KEEPS the parent's memory — the ODB handle, the open abc.index lanes, the parsed trees, the list of blobs to index — and does a stripe of the work before leaving, the spot --fork N shape (beagle/spot/CAPO.exe.c:806). Two leaves: io.fork() -> pid (0 in the child) and io.exit(code), an _exit that skips every parent-side teardown, since the child's copies of the handles are not its to close. The runtime is single-threaded, so a fork without an exec is safe here on every platform quickjab builds for.

Input

Context

Goals

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome