Skip to content

Version History

kazah-png edited this page Jul 11, 2026 · 6 revisions

Version History

See also: Architecture, Building

Version Description
v1.0.0 Base kernel, VGA text mode, GDT/IDT/ISR/IRQ, PIT timer, PS/2 keyboard, serial, bitmap physical allocator, identity paging, shell with basic commands
v1.1.0 Ramdisk VFS + shell commands (ls/cd/cat/touch/mkdir/rm/cp/mv/echo/clear/help)
v1.2.0 Real networking (RTL8139, ARP, IP, UDP, ICMP/ping)
v2.0.0 Clean slate: removed all hacking/offensive code
v2.0.1 DOOM game integration (VGA mode 13h, doomgeneric, shell command)
v2.1.0 Preemptive multitasking, interrupt-driven I/O, pipe support, diff command
v2.1.1 Full TCP stack, RTL8139 fixes, GUI/window compositor, PC speaker, bitmap font
v2.2.0 GUI auto-boot: NyxOS Desktop at startup instead of text shell
v2.3.0 Real EXT2 read support: VFS mount layer, auto-mount at /mnt, ls/cd/cat on ext2
v2.4.0 Sound Blaster 16 DMA/IRQ audio driver (sb16play command)
v3.0.0 ELF userspace loader, initramfs, per-process paging, ring 3 execution, int 0x80 syscalls
v3.1.0 RTC driver, more syscalls, libc, initramfs auto-boot, desktop polish
v4.0.0 Full x86_64 native (long mode, 4-level paging, syscall/sysret, ELF64, ring 3)
v4.1.0 Higher-half kernel mapping, user/kernel page-table isolation, CR3 switching
v4.2.0 NX bit + SMEP, Local APIC + I/O APIC, CPUID, IST for double fault/NMI
v5.0.0 Full GUI suite: Text Editor, Image Viewer, Sound Test. No crashes, 0 warnings
v5.1.0 Stability: TSS alignment fix, GDT limit, APIC/PIC masking, VGA font fix
v5.3.0 Login system: boot animation, EXT2 credential storage, framebuffer login screen
v5.4.0 Security hardening: syscall validation, opaque fds, build warning-free
v5.5.0 Ring-3 runs: ELF loader fix, syscall entry rewrite, copy_from_user, iretq return
v5.6.0 Process reaping fix, heap bug fix (slab fallback), user file I/O
v5.7.0 Per-fd offsets, streaming file I/O
v5.7.1 Fd-based I/O routes to EXT2 mounts (persistent files)
v5.7.2 Fd-based readdir on EXT2 mounts (file-manager can browse disk)
v5.7.3 DHCP networking (7 bugs fixed: IP checksum, ARP, RTL8139 RX, DHCP cookie, poll delay)
v5.7.4 Full network stack: DNS, TCP, HTTP (byte-order fixes, ARP, routing)
v5.7.5 GUI stability: CR3 switch in irq_common fixed, boot stack enlarged
v5.7.6 Preemptive scheduler + timer (PIT via I/O APIC pin 2), mtdemo
v5.7.7 Preemptive ring-3 processes, preempt_disable guards, kernel stack alias fix
v5.7.8 wait()/job control: foreground (exec+kwait) and background (spawn)
v5.7.9 Legacy blocking-exec path (setjmp/longjmp) removed
v5.7.10 Blocked sleep() + safe kill via zombie/wake_waiters
v5.7.11 Shell job control: jobs/wait commands
v5.7.12 Priority scheduling (weighted round-robin)
v5.7.13 VFS re-entrancy guard (preempt_disable)
v5.7.14 Per-process file descriptors
v5.7.15 Idle desktop yields CPU + nice/renice
v5.7.16 File Manager drag-and-drop into folders
v5.7.17 Loopback + ICMP echo replies + real ping
v5.7.18 TCP retransmission (RTO) + robust multi-segment receive
v5.7.19 TCP passive open (listen/accept) + in-guest loopback TCP
v5.7.20 NIC-side TCP listen: NyxOS serves HTTP to real clients
v5.7.21 Per-shell CWD + full-path pwd/prompt
v5.7.22 SMP: multi-core bringup + cpus command
v5.7.23 Demand paging + copy-on-write (PTE_DEMAND, PTE_COW, cowtest)
v5.7.24 GitHub Wiki live (16 pages), repo cleanup, README badge, commit rule
v5.7.25 fork() syscall — COW process clone with refcounted frames, page_directory_cow, do_fork
v5.8.0 Nyx C language runtime — nyxrt.h/nyxrt.c, first .nyx program (hello.nyx) with string interpolation and syscalls, transpiled to C, embedded in initramfs
v5.8.1 waitpid() — ring-3 parent reaps children (SYS_WAITPID, 11). Non-blocking kernel returns -2 (EAGAIN); compositor reaper skips user-parent zombies
v5.8.2 Per-process syscall stacks — waitpid() truly blocks. Each process has its own kernel stack; blocked_in_kernel flag for scheduler CR3 selection
v5.8.3 Anonymous pipes + blocking read()pipe() (SYS_PIPE, 12) with kernel ring buffers, reference-counted ends, IPC via fork()+pipe(). Non-blocking writes
v5.8.4 execve() — replace caller's image in place (same pid, new address space). elf_load split into elf_load_image; do_execve rewrites the syscall's saved user frame. Verified fork→execve→waitpid chain
v5.8.5 dup2() — fd redirection (SYS_DUP2, 14). Per-process fd table re-indexed (0–2 free for dup2); pipe refcounting; enables a | b pipeline wiring from ring 3
v5.8.6 execve() argv passing — programs receive real command-line arguments via SysV entry-stack layout (argc/argv on stack, crt0 reads them). Max 8 args × 63 chars
v5.8.7 Userspace shell with pipelines (/sh.elf). Ring-3 shell built on fork+execve+waitpid+pipe+dup2, up to 4 pipeline stages, sh -c mode, demo script. Zero kernel changes
v5.8.8 Interactive stdin — read(0) on bare fd 0 reads the keyboard with canonical line discipline (echo, backspace, blocking with sti;hlt). Shell becomes a live REPL
v5.8.9 Lazy sbrk — demand-paged heap. SYS_SBRK moves program_break without allocating; pages materialise on first touch via vm_handle_fault. Inherited across fork
v5.8.10 Coreutils (cat/wc/ls) + shell background jobs (&). New SYS_GETDENTS (15) for directory listing; waitpid(WNOHANG) for bg job reaping
v5.8.11 Signals — kill/signal/handlers (SYS_KILL 16, SYS_SIGNAL 17, SYS_SIGRETURN 18). SIG_DFL terminates (128+signo), SIG_IGN drops, user handler via trampoline. Ctrl-C posts SIGINT
v5.8.12 mmap/munmap — anonymous demand-zero mappings (SYS_MMAP 19, SYS_MUNMAP 20). VMAs in [4 GiB, 112 TiB); pages fault in on first touch with prot honored
v5.8.13 Shell I/O redirection (> >> <) + grep/head/tail coreutils. O_TRUNC/O_APPEND flags; dup2 moves VFS handles
v5.8.14 Per-process CWD + shell cd/pwd/export/$VAR. New SYS_CHDIR (21), SYS_GETCWD (22); path_resolve joins relative paths onto CWD
v5.8.15 Userland file tools — mkdir/rm/touch/sort/find. New SYS_MKDIR (23), SYS_UNLINK (24). Fixed two VFS bugs found by wiring them
v5.8.16 Raw tty + shell line editor — arrow-key history (16 entries) and cursor editing. New SYS_TTYMODE (25); keyboard E0-prefix bug fix (arrows never worked system-wide)
v5.8.17 Shell tab completion — commands (builtins + *.elf) and filesystem paths, pure userspace over getdents. Longest common prefix, candidate listing. Zero kernel changes
v5.8.18 File-backed mmap + mprotect. Snapshot file into per-VMA buffer; SYS_MPROTECT (26) rewrites page flags and VMA prot. Deep-copied on fork, freed on execve/munmap/reap
v5.8.19 /dev special files — null/zero/random/urandom as real VFS nodes with dev_type interception in vfs_pread/vfs_pwrite. xorshift64 PRNG. No new syscalls
v5.8.20 6-argument syscalls — mmap gets a real offset. syscall_entry pushes arg6 (user R9) as 7th C param on the stack. Verified with mmap(welcome.txt, offset 5)
v5.8.21 Userspace ps + kill from ring 3. New SYS_GETPROCS (27) snapshots process table into 48-byte records. kill.elf accepts numeric and named signals
v5.8.22 /proc filesystem — live kernel state as files (version, meminfo, uptime, cpuinfo) + per-process /proc/<pid>/status and /proc/<pid>/cmdline. Real process names via proc_set_comm. No new syscalls
v5.8.23 Userspace top — a live process monitor. New SYS_READKEY (28) with timeout (timed-input primitive). Minimal CSI parser in terminal for ESC[2J/ESC[H. First interactive full-screen TUI
v5.8.24 Foreground jobs no longer freeze the desktop — TUIs run live in the GUI. cmd_exec recomposites at ~16 fps while the child runs preemptively. Verified with top refreshing in-window
v5.8.25 edit — a full-screen text editor (terminal cursor addressing + Ctrl keys). Full CSI parser with numeric params; screen mode with block cursor; Ctrl-A..Z mapped to control bytes. edit.elf supports insert/split/join/navigation/Ctrl-O save/Ctrl-X exit

Clone this wiki locally