rumpk/core
Markus Maiwald 5c3a8e3713 feat(rumpk): Pure Zig libc stubs - Freestanding Doctrine
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
2025-12-31 20:18:47 +01:00
..
include feat(rumpk): First successful Zig+Nim boot on QEMU ARM64 2025-12-31 20:18:47 +01:00
cstubs.c feat(rumpk): First successful Zig+Nim boot on QEMU ARM64 2025-12-31 20:18:47 +01:00
kernel.nim feat(rumpk): Pure Zig libc stubs - Freestanding Doctrine 2025-12-31 20:18:47 +01:00
panicoverride.nim feat(rumpk): First successful Zig+Nim boot on QEMU ARM64 2025-12-31 20:18:47 +01:00
ring.nim feat: Initialize Rumpk Modular Unikernel 2025-12-31 20:18:47 +01:00