Commit Graph

1 Commits

Author SHA1 Message Date
Markus Maiwald b8da01d879 feat(rumpk): Phase 3 - Cooperative Fiber Scheduling
TIME HAS BEEN INVENTED
======================

Rumpk now has cooperative multitasking with Fibers.

BOOT OUTPUT
-----------
[Fiber A] I am alive! Yielding to B...
[Fiber B] Hello from B! Yielding to A...
[Fiber A] I am back! Yielding to B...
[Fiber B] Returned! Yielding to A...
[Fiber A] Final return. Halting.

IMPLEMENTATION
--------------
hal/switch.S:
- ARM64 context switch (96-byte frame, 16-byte aligned)
- Saves x19-x28, x29 (FP), x30 (LR)
- Stack pointer swap between fibers

core/fiber.nim:
- FiberObject with state (sp, entry)
- fiber_trampoline() - entry point for new fibers
- init_fiber() - sets up initial stack frame
- switch() - cooperative yield to another fiber

BUILD FIXES
-----------
- Added -fno-sanitize=all to prevent ubsan interference
- Added --checks:off --assertions:off to Nim
- Fixed stack alignment (104 -> 96 bytes)

PHASES COMPLETED
----------------
 Phase 1: Documentation (SPEC-008/009/010)
 Phase 2: Pure Zig libc (Freestanding Doctrine)
 Phase 3: Cooperative Fibers (Ping Pong)
→ Phase 4: NPL loading + Ed25519
→ Phase 5: VisionFive 2 RISC-V

The unikernel can now multiplex execution.
POSIX threads are optional. We own the scheduler.
2025-12-31 20:18:47 +01:00