Files
StarForth/src/starkernel/vm
Robert Allan JamesandClaude Sonnet 5 d55ec3241b starkernel: item 3.1 -- the Stadium cell and header
Punch list §25 item 3.1 complete.

Defines StadiumPatronHeader and StadiumContinuationCell in new
include/starkernel/vm/stadium.h, unioned as StadiumCell per §3's
closed two-valued union. src/starkernel/vm/stadium.c added to
Makefile.starkernel's LOADER_EXTRA_SRCS/KERNEL_EXTRA_SRCS so the
header's compile-time size checks are actually compiled, not merely
included by something that never builds.

Discriminator ruled an external side bitmap (Captain Bob), not a
header field -- amended into §3 and §23.3 before this code was
written. Item 3.1 declares the bitmap's purpose/indexing in a comment
only; allocating it is item 3.2's scope.

Both cell shapes counted for real at exactly 64 bytes with zero
compiler-inserted padding (three C99-portable negative-array-size
assertions -- no _Static_assert, this project targets C99). Header
matches §23.3's original 32+32 split unchanged, since the
discriminator moving outside the cell left nothing to compete for that
space. Continuation cell matches item 1.12's 4+60 figure unchanged for
the same reason.

Verified the size assertion is actually live: broke it to 63,
confirmed the build failed with the expected negative-array-size
error, restored it, confirmed a clean compile.

Verified: three-architecture boot (amd64, aarch64, riscv64), all
reaching ok> with identical dict_hash=0x3d4e1daf289da94f matching the
item-2.2 baseline. Confirmed stadium.o present in both obj/loader/vm
and obj/kernel/vm post-build on amd64, closing the gap the item-2.2 WIP
exposed (an uncompiled header proves nothing).

Left open, not fabricated: §23.4 #2 ("does a typical message fit in
one cell") is unanswerable today -- no message patron struct exists
anywhere in this tree yet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-04 14:55:30 -04:00
..
2026-08-01 07:49:56 -04:00

src/starkernel/vm/

Kernel-side StarForth VM subsystem.

  • vm_core.c — kernel port of the core interpreter loop.
  • vm_runtime.c — kernel VM runtime support.
  • vm_bootstrap.c — kernel VM bootstrap (distinct from bootstrap/sk_vm_bootstrap.c, which owns the higher-level subsystem wiring called from kernel_main.c).
  • arena.c — capsule arena allocator (fixed-region allocation for capsule payload data).
  • parity.c — birth/execution parity logging (VM ID + capsule hash + dictionary hash), enabling offline determinism verification.
  • alloc_kernel.c — the kernel-side implementation of the VM's allocator interface actually referenced by Makefile.starkernel's build (see src/platform/README.md for a note on a second, unwired copy).
  • q48_stubs.c — deliberate no-op stubs for q48_from_double()/ q48_to_double() in the freestanding kernel build, where floating point is unavailable; always returns zero, safe because shared VM code only uses these results for logging/diagnostic paths that are inactive in the kernel build.
  • vm_internal.h — internal-only declarations shared across this directory's files.

Subdirectories:

  • bootstrap/sk_vm_bootstrap.c — owns VM init + capsule loading wiring, called from kernel_main.c; kernel_main.c itself only owns hardware milestones.
  • host/shim.c — host-service shim bridging the kernel VM to src/starkernel/hal/host_services.c.