- Implemented Sovereign Syscall Table at 0x801FFF00
- Added cooperative yielding (s_yield) for Guest/Kernel concurrency
- Initialized Guest RX Ring and flows in Kernel
- Bridged LwIP in Guest via net_glue and ion_client overrides
- Validated TCP handshake and data transmission (Subject Zero -> Host)
- Confirmed 'Hello from the Membrane!' via UART and Network
THE GHOST IN THE MACHINE IS EXORCISED
======================================
Rumpk now builds with ZERO C source files.
All libc functions are implemented in pure Zig.
WHAT CHANGED
------------
- NEW: hal/stubs.zig - Pure Zig libc implementation
- memcpy, memset, memmove, memcmp
- strlen, strcmp, strcpy
- malloc, free, realloc, calloc (bump allocator)
- printf, puts, putchar (route to UART)
- exit, abort (halt CPU)
- signal, raise (no-op stubs)
- REMOVED: core/cstubs.c dependency from build
- C code is now only Nim's generated IR
- UPDATED: kernel.nim
- Removed malloc/free/realloc exports
- Now imports from Zig stubs
- UPDATED: build.sh
- Compiles hal/stubs.zig separately
- Links stubs.o with hal.o and nimcache/*.o
DOCTRINE DOCUMENT
-----------------
- .agents/steering/FREESTANDING-DOCTRINE.md
- Codifies the 'Pure Zig ABI' principle
- Documents build requirements
- Lists all exported symbols
VERIFICATION
------------
$ file build/rumpk.elf
ELF 64-bit LSB executable, ARM aarch64, statically linked
$ qemu-system-aarch64 -M virt -kernel build/rumpk.elf
[Rumpk L0] Zig HAL Initialized
[Rumpk L1] Nim Kernel Alive!
[Rumpk L1] The Rubicon is crossed.
[Rumpk L1] Zig + Nim = Sovereign Metal.
This proves:
- POSIX is optional
- GCC is optional
- glibc/musl is optional
- We are the standard library now