-
-
Notifications
You must be signed in to change notification settings - Fork 4
Version History
kazah-png edited this page Jul 11, 2026
·
6 revisions
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 |
Contact: uselessalter on Discord | nyxos@inbox.lv | GitHub