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.

SMP — Multi-Core Scheduler IN PROGRESS

The LAPIC is mapped, the application processors are brought up, and they idle in parallel with per-CPU state via %gs and true spinlocks. The active work: stabilizing per-CPU current-task handling and adding a parallel run queue so the scheduler actually dispatches across cores.

Cross-Architecture Portability (→ arm64) IN PROGRESS

A TARGET_ARCH build abstraction now isolates i386 ISA flags, and the VMM address-space layout has moved into machine/vmm_layout.h. The cross-arch plan has been retargeted to arm64 / AArch64; each phase still ends in a bootable i386 kernel.

⏳ PLANNED
arm64 / AArch64 Port PLANNED

Long-form goal: boot uBixOS on 64-bit ARM. Prerequisites are the cross-arch portability restructuring (now underway) and a working AArch64 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.

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 lwIP stack now does DHCP/static, DNS, and HTTP/HTTPS (the NetSurf browser and libhttp already ride on it). Next: expose a full POSIX BSD socket API to userland and port more network tools (wget, SSH) — 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)
NetSurf web browser (render + input)
JavaScript in-browser (Duktape)
TLS 1.2 / HTTPS (BearSSL) + libhttp
Kernel CSPRNG + getrandom(2)
PBKDF2-SHA256 password hashing
DNS resolution + real wall clock
NE2000 / RTL8029 NIC (newbus + lwIP)
SMP — application processors brought up
Demand-paged file-backed mmap
msync writeback + madvise(DONTNEED)
/proc/meminfo + sysinfo syscall
Modern flat window chrome
Antialiased TrueType fonts (stb_truetype)
Window maximize / snap / minimize / resize
Runtime resolution switching (VBE)
Settings Sound pane (AC97 mixer)
Resizable PTY + SIGWINCH
Boot modes — graphical + headless