ROADMAP
// WHERE uBixOS IS GOING
🔄 IN PROGRESS
Scheduler Phase 4 — Threads (kProc_t + kThread_t) IN PROGRESS

Split the current kTask_t monolith into a process descriptor (kProc_t) and a thread descriptor (kThread_t). Enables clone() / rfork(), thread-local storage via the GS register, and eventually libc pthreads wired to clone() + futex.

VMM Phase 2 — File-Backed mmap IN PROGRESS

vm_map_entry already carries vm_vnode + vm_offset. The remaining work: on page fault to a file-backed VMA, allocate a physical page, read PAGE_SIZE bytes from the vnode, and map it. This is the foundation for loading ELF PT_LOAD segments directly from disk instead of copying them into anonymous memory.

Boot Modes & init.d IN PROGRESS

Two runtime-selectable boot modes: Graphical (Views compositor + guilogin) and Headless (serial TTY on COM1, no display). Controlled by which services are enabled in sys:/etc/init.d/ — no kernel rebuild required. Services: logd, ubistry, authd, views, ttyd.

Cross-Architecture Portability IN PROGRESS

Restructuring the source tree to isolate i386-specific code under sys/arch/i386/ and harden build-system abstractions, so a future x86_64 port has a clean place to land without breaking the i386 build. Each phase ends in a bootable i386 kernel.

⏳ PLANNED
x86_64 Port PLANNED

Long-form goal: boot uBixOS in long mode. Prerequisites are the cross-arch portability restructuring and a working 64-bit cross-toolchain. The i386 build will remain the primary target during transition.

Clang Self-Hosting (Stage 0 → Stage 2) PLANNED

Three-stage Clang bootstrap: macOS cross-compiles a Clang binary that runs on uBixOS (Stage 0), uBixOS uses Stage 0 to compile Clang from source (Stage 1), Stage 1 compiles again reproducibly (Stage 2). After Stage 2, the Mac cross-compiler is never needed for Clang again. Apache 2.0 license — compatible with BSD, unlike GCC GPLv3.

UEFI Boot PLANNED

Replace the BIOS/GRUB boot path with a native UEFI application loader. Required for booting on modern hardware without legacy BIOS support.

VMM Phase 3 additions — madvise, msync PLANNED

madvise(MADV_SEQUENTIAL) prefetches ahead on file-backed VMAs. madvise(MADV_DONTNEED) immediately reclaims pages (useful for malloc trim). msync flushes dirty file-backed pages back to the vnode.

pthreads + futex PLANNED

Wire musl's pthread implementation to clone() and a futex syscall. Depends on the Scheduler Phase 4 thread split. Unlocks multi-threaded userland programs and eventually a multi-threaded kernel.

BSD Sockets + Network Tools PLANNED

The in-kernel lwIP stack now does DHCP and static configuration. Next: expose a full BSD socket API to userland and port network tools (wget, SSH) on top of it — the path to network-based package delivery.

sigaltstack / SA_ONSTACK PLANNED

Alternate signal stack for signal handlers that need isolated stack space — required for stack overflow detection (SIGSEGV from stack guard page). Also: full ucontext_t population for SA_SIGINFO handlers.

✅ COMPLETED

A selection of the major milestones already shipped in uBixOS.

O(1) priority bitmap scheduler (3 phases)
POSIX signals — phases 1–5 (SA_SIGINFO, SA_RESTART)
COW VMM + RB-tree VMA lookup (O(log n))
Demand-zero anonymous mmap
Swap daemon + clock-algorithm eviction
musl libc 1.2.5 port
ELF dynamic linker (PLT/GOT, RELA)
tcsh 6.24.16 shell
USB UHCI — HID keyboard + mass storage
AC97 audio codec + DMA playback
Views compositor (C++ rewrite)
DOOM — windowed and fullscreen
Tessera (Tetris clone in Views)
procfs (/proc/<pid>/status, maps, mounts)
FAT16/FAT32 VFS + LFN
IDE (ATA) + DMA driver
MPI inter-process messaging
Process groups + tcsetpgrp
ZOMBIE state + SIGCHLD + wait4
TTY line discipline (canonical + raw)
libc++ 18.1.8 subset (STL containers)
POSIX ed line editor
macOS cross-build (Homebrew + QEMU)
ubistry hierarchical typed registry
Themeable desktop + per-user accent
macOS-style Settings app
lwIP networking — DHCP + static
busybox 1.36.1 userland + vi
objgfx PNG support (stb_image)