UNRELEASED
in development — as of 2026-06-06
DEV
// ADDED — NETSURF WEB BROWSER
- The NetSurf web browser vendored and built as part of
bmake world — it renders real HTML/CSS pages on the framebuffer, in-OS
- JavaScript via Duktape (nsgenbind-generated DOM bindings):
createElement / appendChild / textContent and control flow execute under QEMU
- PNG and JPEG images decoded through stb_image (no libpng/libjpeg dependency)
- HTTP/HTTPS fetcher, pointer + keyboard input (opt-in pointer-motion delivery), and an Applications start-menu entry
- Eight browser core libraries vendored —
libnsfb on a uBixOS objGFX surface backend, plus libnsutils, libutf8proc, and more
// ADDED — TLS, CRYPTO & SECURE PASSWORDS
- BearSSL 0.6 vendored (
libbearssl.so), constant-time scalar build for the -mno-sse tree
libhttp — reusable HTTP/1.0 + HTTPS client with a 121-CA trust store and 3xx redirect following; httpsget rides on it
- Kernel ChaCha20 fast-key-erasure CSPRNG stirred with RDTSC jitter; exposed via
getrandom(2) / getentropy()
- Passwords are now salted PBKDF2-HMAC-SHA256 hashes (50,000 iterations) —
authd retired plaintext comparison; the image ships no plaintext credentials
- X.509 certificate validation with real wall-clock time — an
https:// fetch completes DNS → TCP → TLS 1.2 → chain/hostname/expiry checks end-to-end
// ADDED — NETWORKING
- NE2000 / RTL8029 NIC driver rewritten on the newbus device model + lwIP (IRQ-driven RX thread), mirroring the e1000
- e1000 is now IRQ-driven with real sleep/wakeup and a kernel idle task (no busy-poll)
- Socket
close() tears down the lwIP netconn; gettimeofday returns true wall-clock time
- DNS resolution wired up —
ping <hostname> resolves via gethostbyname()
- One-shot callout timer subsystem; timed sleep rides it
// ADDED — SMP (MULTI-CORE BRING-UP)
- LAPIC mapped and the BSP registered at boot; application processors brought up (proof of life)
- APs adopt the kernel address space and run per-CPU idle loops in parallel
- Per-CPU state (
struct pcpu, curcpu()) via a per-CPU GDT segment loaded into %gs
- True spinning locks (
spinLockIrq / spinUnlockIrq); software task-switch path (cpu_switch saves/restores segment registers)
// ADDED — MODERN UI & ANTIALIASED FONTS
- Windows 11-flat window chrome: shadows, rounded corners, taller title bars, hand-rasterized minimize/maximize/restore/close glyphs
- Flat modern taskbar + start menu with a start icon, date clock, volume tray, and hover feedback
- Window maximize / edge-snap / double-click-title, minimize-to-taskbar, and resizable windows
- Scalable antialiased TrueType fonts (
ogScalableFont via stb_truetype, DejaVuSans/Mono) across window titles, taskbar, Settings, login, terminal, and Tessera
- Compositor performance: desktop caching + repaint of only the dragged region; VESA prefers a 32bpp LFB mode
// ADDED — DISPLAY, SOUND & SETTINGS
- Runtime resolution switching — Settings → Display enumerates VBE modes and changes resolution live (persisted to
/display/mode)
- Settings Sound pane: master-volume slider + mute, wired to AC97 mixer ioctls and persisted
- Settings General / About pane with live Uptime and Memory rows via a new
sysinfo syscall (slot 62)
- Per-user wallpaper seeding;
vlogin uses the system-default desktop wallpaper
// ADDED — VMM
- Demand-paged file-backed
mmap (VMM Phase 2.2) with MAP_FIXED overlap trimming; read-only library pages shared
msync writeback for writable MAP_SHARED file mappings (Phase 2.3)
madvise — MADV_DONTNEED reclaim (Phase 3.3)
/proc/meminfo (total / free physical pages); shared-region refcounting fixes a physical use-after-free / frame leak
// ADDED — USERLAND & TERMINAL
- busybox 1.36.1:
sed, top, ps, env, sleep, date, basename, dirname, which
- Resizable pseudo-terminal — live grid resize +
SIGWINCH; the VT100 engine is parameterized on per-TTY rows/cols
- Damage-tracked terminal rendering (only changed cells redraw) with an antialiased DejaVuSansMono font
- Kernel:
sys_rename (fat_dir_rename), utimensat, mkdir -p/umask, unlink return propagation, bin/hello reference app + views developer docs
// CHANGED — BUILD & ARCH
TARGET_ARCH build abstraction introduced; i386 ISA flags lifted into a per-target make snippet
- Cross-architecture plan retargeted to arm64; VMM address-space layout extracted into
machine/vmm_layout.h
- NetSurf host build deps documented (bison ≥ 3, libpng); legacy struct-device model fully removed (newbus is the only device model)
// FIXED
- FAT random access:
cur_cluster kept consistent after boundary-ending reads and writes
open(O_RDWR) no longer truncates an existing file
- Software task switch saves/restores segment registers (fixes a GUI/TLS crash)
- views reaps windows whose client process has died;
vlogin tears down the session process group and unmaps the shared buffer on logout
- Ctrl-C works in the GUI terminal; FPU corruption from the per-CPU
_current macro fixed
v2.3.0-BETA
2026-05-31
BETA
// ADDED — DESKTOP ENVIRONMENT & THEMING
- Selectable desktop background with three modes:
image (stretched wallpaper), solid (flat color), and jailbars (four brightness shades from one base), with a click-to-set RGB picker
- Original procedural wallpapers (no third-party assets): an 80s synthwave family (miami / outrun / mountains / road / vapor) and a tropical set, 1024×768
- Per-user accent theming — focused window title bars and the entire taskbar palette (bar, buttons, start-menu flyout) are derived from one accent color via
scale_color
- Per-user settings layering over the registry: each login resolves its own desktop and accent, falling back to the machine default
- Live wallpaper Preview thumbnail (decoded + downscaled) and an Apply button in the Desktop pane
- New default boot: the synthwave "miami" wallpaper with a matching magenta-purple accent (
0xC0308C); ttyv0 boots straight into /bin/views
// ADDED — SETTINGS APP
- macOS-style single-window Settings app with a category sidebar: General, Desktop, Appearance, Network
- Desktop pane: background-mode tabs, wallpaper dropdown picker (keyboard navigable), live preview
- Appearance pane: accent RGB picker that writes the per-user override and re-themes views + taskbar live
- Network pane: DHCP/Static toggle with editable IP / netmask / gateway / DNS fields
// ADDED — UBISTRY REGISTRY
- The 2004-era flat key/value ubistry rewritten as a hierarchical typed-tree registry: path-addressed string/int/bool leaves + ordered containers
- Persisted as text to
/var/db/ubistry.db (load at boot, dirty-flag coalesced flush); served over MPI with a real GET/SET/ENUM/DEL request/reply protocol
ubix_api client (ubistry_get/set/enum/del, plus per-user get_for/set_user) so any app can read/write config
ulog()/ulogf() system-log wrapper (klog_write → logd → /var/log/messages) for background-service diagnostics
- Data-driven cascading start menu loaded from
/views/startmenu (top-level categories + one submenu level, dispatched by exec path or @action)
// ADDED — NETWORKING
net_configure() syscall (slot 59) pushes a network config into the in-kernel lwIP stack on the tcpip thread
- DHCP and static configuration:
bin/netcfg reads /net/* from the registry and applies it; runs at boot and is re-run by Settings
- Kernel still auto-DHCPs at boot, so networking works even if userland config fails
// ADDED — BUSYBOX 1.36.1 USERLAND
- Replaced UbixOS stub utilities (
cat, ls, uname, stat) with busybox 1.36.1
- Text processing:
grep, find, less, more, wc, head, tail, sort, cut, tr, uniq
- File operations:
cp, mkdir, rm, mv, touch
vi — busybox vi 1.36.1 ported to uBixOS
// ADDED — GRAPHICS & TTY
- objgfx PNG support:
ogImage::Load() sniffs file magic and decodes PNG (any depth/color type) via vendored stb_image v2.30, alongside BMP
- Pseudo-terminal pool: graphical terminals run the user's interactive shell over a pty
// FIXED
- Pipe refcount + EOF handling corrected (no more
0xBEBEBEBE reads)
- Kernel now actually closes fd < 3 and allocates from the lowest free slot
- FAT
ftruncate now shrinks the cluster chain instead of leaking clusters
v2.2.0-BETA
2026-05-24
BETA
// ADDED — C++ STANDARD LIBRARY
contrib/libcxxabi/ — minimal Itanium C++ ABI: new/delete, construction guards, pure virtual, __dso_handle
contrib/libcxx/ — LLVM libc++ 18.1.8 subset: <string>, <vector>, <map>, <memory>, <algorithm>, <optional>, <variant>, charconv/ryu
ubix.musl.cxx.prog.mk BSD make snippet for C++ programs with STL: -std=c++20 -fno-rtti -fno-exceptions
- C++ RAII wrappers:
ubix::Mailbox, ubix::Shell, ubix::yield(), ubix::pid()
bin/views, bin/taskbar, bin/term — migrated to STL (std::vector, std::string)
// ADDED — SCHEDULER PHASE 3 (QoS + AGING)
- QoS classes:
SCHED_CLASS_RT, SCHED_CLASS_INTERACTIVE, SCHED_CLASS_NORMAL, SCHED_CLASS_BATCH
- I/O completion boost: tasks unblocked from I/O wait receive a transient priority increase
- CPU decay: long-running CPU-bound tasks shift down one QoS band automatically
- Starvation aging: tasks not scheduled for
AGING_THRESHOLD ticks are promoted one band
// ADDED — POSIX SIGNALS (PHASES 1–5)
sigaction, sigprocmask, sigpending, sigsuspend fully implemented
SA_SIGINFO frames with 128-byte musl-layout siginfo_t; SA_RESTART, SA_RESETHAND
- Process groups:
setpgid, tcsetpgrp, Ctrl-C targets foreground pgrp
SIGCHLD on child death; SIGSTOP/SIGCONT pause and resume
- AST delivery in timer ISR for SIG_DFL/SIG_IGN signals at user-mode preemption points
// ADDED — VMM PHASE 3 (SWAP)
- Swap partition integration — 64 MB, clock-algorithm eviction (
swap.c)
- Background pageout daemon — polls every 100 ticks, proactive reclaim (
pageout.c)
PAGE_SWAPPED PTE encoding; page fault handler restores from swap on fault
// ADDED — VMM PHASES 1–2 (RB-TREE + DEMAND-ZERO)
- Intrusive red-black tree (
rbtree.c) replaces flat VMA array — O(log n) lookup
vm_map_t embedded in kTask_t; fork copies, exec frees
- Demand-zero anonymous pages:
mmap(MAP_ANON) reserves VMA only; fault backs
MAP_FIXED and non-fixed anonymous mappings both supported
// ADDED — PROCFS & MISC
/proc/mounts — walks mounted filesystem list; bin/mount rewritten to use it
FD_TYPE_* and VFS_TYPE_* constants canonicalized across headers
- Ring-0 kernel stack enlarged from 4096 to 8192 bytes
// FIXED
- Fork now propagates pipe file descriptors with correct
fd_type; pipe reads no longer block forever after fork
- FAT
chdir deep-path stack overflow corrupting sig_pending — fixed by enlarging ring-0 stack
- Taskbar MPI wait retries on
EINTR instead of treating signal interruption as error
v2.1.0-BETA
2026-05-13
BETA
// ADDED — VIEWS COMPOSITOR (C++ REWRITE)
- Full composited window system:
Framebuffer, Window, WindowManager C++ classes
- Server-side decorations: title bar, close button, drag, Z-order, focus-follows-click
bin/taskbar — taskbar ported to C++ with flyout launcher menu and clock
bin/term — windowed VT100 terminal emulator using ogSurface and ogBitFont
include/views/display_proto.h — MPI display protocol with DISPLAY_QUERY/DISPLAY_INFO
- Doom running windowed (
vdoom) inside the compositor
- Tessera (Tetris clone) running as a windowed Views application
// REMOVED
bin/launcher/ — dead pre-2019 application, never integrated with MPI display stack
lib/objgfx40/ — older objgfx fork, superseded by lib/objgfx/
sys/sde/ — kernel-side Software Display Environment retired; replaced by userland compositor
v2.0.1-BETA
2026-05-13
BETA
// ADDED
bin/ed/ — POSIX ed line editor: full address forms, all standard commands
- Syscall 42
sys_ttyctrl — kernel TTY raw/echo mode toggle
- TTY line discipline in
atkbd.c: canonical mode, backspace, echo; raw mode for password masking
// FIXED
fgetc returned 0 at EOF instead of -1 — fgets loops never terminated on short files
- Double-echo removed: echo now owned exclusively by keyboard ISR line discipline
- Login password prompt uses
tty_setraw to mask input correctly
v2.0.0-BETA
2026-04-12
BETA
// ADDED
- musl libc 1.2.5 ported to uBixOS; replaces hand-rolled libc
- ELF dynamic linker —
libexec/ld; PT_LOAD, PLT/GOT, RELA relocations
- tcsh 6.24.16 as default login shell
- FreeBSD syscall ABI compatibility layer (slot 0–500)
- AC97 audio codec driver with DMA ring-buffer playback
- DOOM port (vdoom) — fullscreen and windowed via SDE
- USB UHCI host controller — HID keyboard + mass storage
v1.1.0-CURRENT
2025
LEGACY
// HIGHLIGHTS
- O(1) priority bitmap scheduler (Phase 1 — 32-level bitmask, constant-time dequeue)
- procfs:
/proc/<pid>/status, maps, cmdline
- FAT16/FAT32 VFS with LFN support
- IDE (ATA) driver with DMA
- Initial Views compositor (C-based, SDE-backed)
- MPI inter-process messaging system