Skip to content

Version History

kazah-png edited this page Aug 25, 2026 · 16 revisions

Version History

Every tagged release of NyxOS, oldest first. The authoritative log is the release table in AGENTS.md at the repository root; this page is the reader-facing summary of it.

Current release: v6.4.363. Latest LTS: v5.9.0-LTS.

See also: Home, Architecture, Building

Reading this page

Versions are grouped into the eras below. Development is deliberately incremental — most releases add exactly one capability and verify it, which is why the patch numbers run so high. Releases whose entry names a bug are usually more interesting than the ones that name a feature.

Foundations — v1.0 to v2.4

A 32-bit kernel finds its feet: VGA text, interrupts, a ramdisk VFS, the first network packets, DOOM, and the first window compositor.

Version Change
v1.0.0 Base kernel
v1.1.0 Ramdisk VFS + shell commands
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 launches 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, DMA buffer fix, auto-init)

x86_64 and ring 3 — v3.0 to v4.2

The rewrite to long mode: 4-level paging, ELF64, syscall/sysret, a higher-half kernel, NX and SMEP.

Version Change
v3.0.0 ELF userspace loader, initramfs, per-process paging, ring 3 execution, int 0x80 syscalls
v3.1.0 RTC driver, more syscalls (open/read/close/getpid/sbrk/fsize/exec), libc (printf/malloc/snprintf), initramfs auto-boot, desktop polish (right-click, settings, wallpaper)
v4.0.0 Full x86_64 native (long mode, 4-level paging, syscall/sysret, ELF64, ring 3), clean 32-bit dead code removal, docs corrected
v4.1.0 Higher-half kernel mapping (PML4[256] mirror), user/kernel page-table isolation (user has no identity mapping), CR3 switching in ISR/IRQ/syscall entries, scheduler uses next_cr3
v4.2.0 NX bit (No-Execute) + SMEP (Supervisor Mode Execution Prevention), PAGE_NX added to user stack/heap/data, Local APIC + I/O APIC init, CPUID detection, IST (Interrupt Stack Table) for double fault (#8) and NMI (#2), repo cleanup (README x86_64, .gitignore, AGENTS.md)

Desktop, login and hardening — v5.0 to v5.6

A real GUI application suite, the boot animation and login screen, the syscall-boundary audit, and the first ring-3 programs that actually run.

Version Change
v5.0.0 Full GUI application suite: Text Editor (file open/save, cursor nav), Image Viewer (test pattern, zoom/pan), Sound Test (PC speaker + SB16 sine/square/sweep). Brighter wallpaper gradient (sky-blue + grass). 8 desktop icons. All placeholders replaced with real apps. No crashes, zero warnings in build
v5.1.0 Stability and bugfix release: TSS struct alignment fix (IST pointers shifted 4 bytes early → triple fault on double fault/NMI), GDT limit correction, APIC/PIC IRQ masking fix (PIC left fully masked when APIC active), switch_to_user_process inline asm operand reversal fix, VGA 8x16 font data corruption fix (marker bytes inserted in each glyph → garbage text in GUI). QEMU display changed to sdl for Windows compatibility
v5.3.0 Login system: boot animation (~5s, NyxOS-themed, 23-step progress bar), credential storage on EXT2 (/etc/passwd), framebuffer login screen with keyboard input, default user nyx/nyx, fallback when no EXT2 disk, login failure → reboot, success → launch desktop
v5.4.0 Audit/hardening pass: fixed clean-build break (sha256.h pulled host <stdint.h>, conflicting with kernel int types); build is warning-free again (0 warnings from ~160 — pointer-truncation casts routed through uintptr_t, keyboard keymap over-initializers trimmed, dead code removed). Security: ring-3 syscall boundary hardened — user pointers validated against the canonical user half, and userspace now gets small integer fds via a translation table instead of raw (forgeable) kernel VFS handles (closed an info-leak + arbitrary-kernel-r/w reachable via exec). Panic handler now prints faulting RIP/CS/ring/error
v5.5.0 Ring-3 userspace now actually runs
v5.6.0 Userspace cleanup + heap bug

Scheduling, networking and SMP — v5.7.x

The preemptive scheduler, job control, the network stack made to actually work end to end, demand paging, copy-on-write, and multi-core bringup.

Version Change
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 Networking works — DHCP completes
v5.7.4 Full network stack: DNS + TCP + HTTP work
v5.7.5 GUI stability fixed — the KERNEL_BASE+3 crash is dead
v5.7.6 Preemptive scheduler + timer live
v5.7.7 Preemptive ring-3 processes
v5.7.8 wait() / job control — foreground & background jobs
v5.7.9 Legacy blocking-exec path removed
v5.7.10 Blocked sleep() + safe kill (timer wait queue)
v5.7.11 Shell job control — jobs + wait
v5.7.12 Priority scheduling (weighted round-robin)
v5.7.13 VFS re-entrancy audit + guard
v5.7.14 Per-process file descriptors
v5.7.15 Idle desktop yields CPU + nice/renice
v5.7.16 File manager: real drag-and-drop into folders
v5.7.17 Networking: loopback + ICMP echo replies + a 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 verified + exposed (cpus)
v5.7.23 Demand paging + copy-on-write (serviced from the #PF handler)
v5.7.24 GitHub Wiki + clean up
v5.7.25 Real fork() — copy-on-write process clone (the VM capstone)

Userspace comes alive — v5.8.0 to v5.8.49

fork/execve/pipes/signals/mmap, the ring-3 shell, coreutils, /proc and /dev, the shared libc, and the first TUI applications.

Version Change
v5.8.0 Nyx C language runtime + first .nyx program on NyxOS
v5.8.1 waitpid() — a parent reaps its children from ring 3
v5.8.2 Per-process syscall stacks → waitpid() truly blocks
v5.8.3 Anonymous pipes + blocking read() — real cross-process IPC
v5.8.4 execve() — replace a process image (fork→exec→wait complete)
v5.8.5 dup2() — fd redirection (the shell-pipeline primitive)
v5.8.6 execve() argv passing — programs receive real command-line arguments
v5.8.7 A userspace shell with pipelines — the process-model capstone, zero kernel changes
v5.8.8 Interactive stdin — a live shell you type into
v5.8.9 Lazy sbrk — the demand-paged heap (last VM roadmap item)
v5.8.10 Coreutils (cat/wc/ls) + shell background jobs (&)
v5.8.11 Signals — kill/signal/handlers + Ctrl-C
v5.8.12 mmap/munmap — anonymous demand-zero mappings
v5.8.13 Shell polish — I/O redirection (> >> <) + grep/head/tail
v5.8.14 Shell polish part 2 — cd/pwd/export/$VAR on a per-process CWD
v5.8.15 Userland file tools — mkdir/rm/touch/sort/find (+ a real VFS bug fix)
v5.8.16 Raw tty + shell line editor — arrow-key history and cursor editing (+ a real keyboard-driver bug fix)
v5.8.17 Shell tab completion — commands and paths, zero kernel changes
v5.8.18 File-backed mmap + mprotect
v5.8.19 /dev special files — null/zero/random/urandom, no new syscalls
v5.8.20 6-argument syscalls — mmap gets a real offset
v5.8.21 Userspace ps + kill — process management from ring 3
v5.8.22 /proc filesystem — live kernel state as files (no new syscalls) + real process names
v5.8.23 Userspace top — a live process monitor (+ timed input + terminal clear)
v5.8.24 Foreground jobs no longer freeze the desktop — TUIs run live in the GUI
v5.8.25 edit — a full-screen text editor (terminal cursor addressing + Ctrl keys)
v5.8.26 ANSI colors in the terminal (SGR) — ls --color + a colored editor status bar
v5.8.27 Visual refresh — unified crescent-moon logo (login + nyxfetch) + updated GIFs
v5.8.28 Shared ELF libc — one copy of libc, mapped into every process
v5.8.29 dlopen/dlsym — runtime dynamic loading
v5.8.30 /proc/<pid>/maps — a process's mapped memory regions
v5.8.31 pmap + free — userspace tools over /proc
v5.8.32 env / date / sleep — coreutils + real environment inheritance
v5.8.33 $PATH command resolution — the environment becomes functional
v5.8.34 Terminal scrollback — PgUp/PgDn + mouse wheel + a scrollbar
v5.8.35 More coreutils — cp / mv / uname / whoami / which / clear (+ a real build-system fix)
v5.8.36 Job control — Ctrl-Z stop + jobs/fg/bg with transparent restart
v5.8.37 Shell globbing (*/?) + ~ expansion
v5.8.38 Wallpaper app — a color-picker for the desktop background (purple by default)
v5.8.39 Shell operators — && / || / ; command lists
v5.8.40 Double-buffered compositor — the desktop no longer flickers
v5.8.41 Graphical kernel panic — a visual stop screen instead of a silent freeze
v5.8.42 Shell command substitution $(cmd) (+ two latent kernel bugs it exposed)
v5.8.43 Shell quoting — '...' and "..."
v5.8.44 Ring-3 fault isolation — a crashing program no longer panics the kernel
v5.8.45 Pager — less / more
v5.8.46 Identity map now covers all RAM (was a fixed 64 MB) — fixes the pipeline kernel-panic root cause
v5.8.48 Fix pipeline-corruption root cause #1 — pin the shared-libc master frames un-freeable
v5.8.49 Catchable CPU-exception signals — signal(SIGSEGV/SIGFPE/SIGILL, handler) recovers instead of dying

Sockets, threads and real SMP — v5.8.50 to v5.8.99

BSD sockets from ring 3, poll, alarm, user threads with clone+futex, spinlocks, TLB shootdown, and user processes running on the application processors.

Version Change
v5.8.50 Panic-screen polish + kernel %x de-doubled
v5.8.51 Network byte order consolidated into htons/htonl/ntohs/ntohl + an IP4_OCTETS display macro (hardening refactor — behavior-preserving)
v5.8.52 Userspace TCP sockets — socket()/connect()/read()/write()/close() wired to the real TCP stack, plus a built-in loopback echo service
v5.8.53 Server-side userspace sockets — bind()/listen()/accept() (a userspace program can now run a TCP server)
v5.8.54 Scheduler fix — a process preempted mid-syscall now resumes on the correct CR3 (a latent crash the busy-polling socket syscalls newly exposed)
v5.8.55 Userspace UDP sockets — socket(SOCK_DGRAM) + sendto()/recvfrom() over the existing udp.c
v5.8.56 nc (netcat) — a userspace tool that bridges stdin/stdout to a TCP or UDP socket, plus a UDP echo service to talk to
v5.8.57 sigsetjmp/siglongjmp — multi-fault recovery (finishes the catchable-signals work from v5.8.49)
v5.8.58 alarm() + SIGALRM — timer-driven signals
v5.8.59 Persistent filesystem — verified end-to-end + polished
v5.8.60 poll() — I/O multiplexing over sockets, pipes, and stdin (the full-duplex / multi-fd primitive)
v5.8.61 nc is now full-duplex (built on v5.8.60's poll())
v5.8.62 The GUI file manager can now browse (and edit) the persistent /mnt ext2 filesystem
v5.8.63 The GUI file manager opens files in the Text Editor (cross-app integration)
v5.8.64 Persistent user accounts on the ext2 disk — useradd survives a reboot; the misleading "EXT2 not available" fallback is fixed
v5.8.65 Account security hardening — random per-user salts, a stronger KDF, a password policy, and login lockout
v5.8.66 Create your own account from the login screen, with a profile picture
v5.8.67 Login fixes — a failed login no longer closes the VM, and the create-account panel no longer overflows
v5.8.68 Login create-panel crash fix — repaint only the active field per keystroke, not the whole panel
v5.8.69 Taskbar user menu — click your badge to change your profile picture or log out (back to the login, no reboot)
v5.8.70 Per-user home directories — the Terminal and File Manager start in /home/<user>
v5.8.71 Starter content for a new home directory
v5.8.72 Minesweeper — a GUI game (new app) + a right-click routing fix
v5.8.73 wget — a userspace HTTP client over the TCP sockets, with its own DNS-over-UDP resolver
v5.8.74 exec forwards argv — userspace tools run with arguments straight from the kernel shell
v5.8.75 The kernel shell auto-execs userspace ELFs — run tools by bare name, no exec prefix
v5.8.76 Tab-completion now includes userspace ELFs
v5.8.77 wget follows redirects + an open command = download-and-read
v5.8.78 Concurrent multi-process sockets: hardening + a repro — the "sockets stay single-process" garble no longer reproduces
v5.8.79 Root-caused the v5.8.78 concurrent-socket "Heisenbug": it was a conn-table capacity limit masked by a Makefile stale-build gap — and fixed the Makefile
v5.8.80 Four POSIX file syscalls — stat/fstat/lseek/getppid (SYS 44–47) — plus two Makefile build-correctness fixes that had been silently shipping stale kernels
v5.8.81 VFS hardening — closed a latent heap OOB and raised the capacity caps
v5.8.82 dup + rename syscalls, and shell-spawned tools now inherit the terminal's cwd
v5.8.83 THE pipeline-corruption Heisenbug — root-caused and FIXED after spanning many increments
v5.8.84 Physical allocator now honors the multiboot2 memory map — the principled generalization of the v5.8.83 firmware-hole fix
v5.8.85 User stacks are now demand-grown with a guard page (was a fixed, pre-committed 64 KB)
v5.8.86 SMEP + SMAP — hardware-enforced ring-0 ↔ user isolation
v5.8.87 Real user threads — clone(CLONE_VM) + futex (SYS 50/51, count 50→52)
v5.8.88 Thread coherence — one heap and one mmap table per thread group (multi-threaded malloc now works)
v5.8.89 Shared fd table per thread group — the thread model is now complete
v5.8.90 SMP stage 1 — the application processors are alive
v5.8.91 SMP stage 2 — real spinlocks, and the syscall path's scratch state goes per-CPU
v5.8.92 SMP stage 3a — the APs run scheduled kernel threads, in parallel with the BSP
v5.8.93 SMP stage 3b — user processes run in ring 3 on the application processors
v5.8.94 TLB shootdown IPIs — the mechanism, proven
v5.8.95 TLB shootdown wired into unmap and mprotect — and a deadlock shape found while auditing
v5.8.96 COW remap shoots down too — and two things that did NOT work, reverted and documented
v5.8.97 get_current_process() was BSP-only — the root cause of both v5.8.96 hangs, found and fixed
v5.8.98 The #GP pinned down to one instruction — but not solved, and said so
v5.8.99 preempt_count is per-CPU (release blocker P0.2) — and a correction to my own priority call

The v5.9.0 audit and LTS — v5.9.0-rc1 to v5.9.0-LTS

A systematic security and correctness audit. Each release closes a specific confirmed finding; v5.9.0-LTS is the long-term-support snapshot.

Version Change
v5.9.0-rc1 Release blocker P0.3 closed: the last local-only invalidations on paths that REMOVE or REPLACE a mapping
v5.9.0-rc2 Ring-3 → ring-0 arbitrary write closed at its root (3 CRITICAL findings, one fix)
v5.9.0-rc3 Two more CRITICALs closed, from the completion audit of the six areas whose verification had died on a quota limit
v5.9.0-rc4 The missing cld — every interrupt entry path was running with whatever RFLAGS.DF ring 3 left set
v5.9.0-rc5 The mprotect family: fork isolation restored, and the address range bounded (3 HIGH + 1 MEDIUM)
v5.9.0-rc6 Three of the unverified findings checked by hand — all three real, all three fixed
v5.9.0-rc7 Three more HIGHs: framebuffer clipping and the dynamic linker
v5.9.0-rc8 dup() of a mount-backed file was a double free
v5.9.0-rc10 libseg_load — the last confirmed CRITICAL — validated nothing at all
v5.9.0-rc11 Ring-3 flags that survived into the kernel, and the rest of the ELF header validation (1 HIGH + 3 more)
v5.9.0-rc12 The 22-pixel GUI family: one missing term, six places
v5.9.0-rc13+rc14 The editor no longer eats your file, and the file manager stops indexing entries[-1]
v5.9.0-rc15 The ext2 write path, verified by e2fsck instead of by itself
v5.9.0-rc16 A VFS fd IS a node pointer — so the node pool must know who is holding one
v5.9.0-rc17 The three GUI highs — and a fourth found only by actually clicking
v5.9.0-LTS P0.1 CLOSED — the intermittent ring-3 [fault] was a preemptible CR3-switch→iretq window in the syscall-exit path. LTS release

Polish, DOOM, the browser and TLS — v5.9.1 to v5.9.99

The Nightfall desktop theme, window management, the DOOM port, the games, Selene, the full TLS 1.2 crypto arc, and the image decoders.

Version Change
v5.9.1 "Nightfall" desktop — a central GUI palette, and the brand purple everywhere the placeholder green used to be
v5.9.2 The palette actually reaches the apps — and the focused window is finally the brand colour
v5.9.3 The window frame joins the focus story
v5.9.4 Desktop icons wrap instead of running off the screen
v5.9.5 No window can be born off-screen
v5.9.6 Window geometry follows the screen — the follow-up v5.9.5 named as its own honest limitation
v5.9.7 Window-management keyboard shortcuts — and they retire v5.9.6's honest gap
v5.9.8 Window snapping — Alt+Left/Right half-tiling, built on v5.9.7's chord layer
v5.9.9 Quarter-tiling — v5.9.8's snap grown from one axis to two
v5.9.10 Window drop shadows — the first depth in the compositor, a fresh visual area after four increments of window management
v5.9.11 Title-bar gradient — the second depth cue, sitting with v5.9.10's shadows
v5.9.12 Rounded window tops — the capstone of the modern-window look (shadow + gradient + rounded corners)
v5.9.13 Taskbar depth — the same gradient treatment carried down from the window chrome to the last flat surface
v5.9.14 Start menu depth + hover — the last flat panel joins the polished chrome
v5.9.15 Context + user menus polished — every menu now shares one look
v5.9.16 Login card — the brand look reaches the first screen the user sees
v5.9.17 Rounded-corner primitives consolidated into fb.c — paying down the debt v5.9.16 flagged
v5.9.18 Windows round on all four corners — the v5.9.12 follow-up, closed with a framebuffer clip region
v5.9.19 README hero screenshot refreshed — the repo's public face finally matches the OS
v5.9.20 Per-CPU IST stacks — first increment of the kernel-internals track (pivot away from the visual arc)
v5.9.21 VFS node-pool spinlock — first increment of the T1 SMP-locking arc
v5.9.22 VFS mount-table spinlock — second increment of the T1 SMP-locking arc
v5.9.23 Keyboard input path locked — third T1 increment, the terminal's line discipline made SMP-safe
v5.9.24 Network stack serialized under one net_lock — the capstone of the T1 arc (after the VFS node pool, mount table, and keyboard input)
v5.9.25 The EXT2 driver locked — the T1 follow-up beyond the planned trio, and the last major non-reentrant subsystem a user process can reach under smpbalance
v5.9.26 EXT2 sector cache — the driver's first cache, write-through so it cannot corrupt the disk
v5.9.27 Partial munmap now splits the VMA — a real "the unmap silently didn't take" bug in the memory manager
v5.9.28 Partial mprotect now splits the VMA too — the companion to v5.9.27, closing the mmap/mprotect precision pair
v5.9.29 Fullscreen framebuffer syscalls — a userspace program can finally put pixels on the screen. First step toward the v5.9.40 DOOM milestone
v5.9.30 Raw key-event path — press AND release for a fullscreen game. Second DOOM-milestone enabler (DG_GetKey), after v5.9.29's video
v5.9.31 The DOOM port begins — the doomgeneric engine recovered from git history, and the platform hooks scoped against the new syscalls
v5.9.32 DOOM userspace build, step one: the whole engine compiles, and the link gap is pinned to 35 symbols
v5.9.33 DOOM links — the whole engine now produces a userspace ELF (448 KB, zero undefined symbols)
v5.9.34 DOOM RUNS — the original 1993 DOOM (shareware), playable on NyxOS. The "but can it run DOOM?" milestone, reached
v5.9.35 DOOM gets a desktop icon — launch the game by clicking, not by knowing the doom command
v5.9.36 The DOOM desktop icon actually launches the game now — v5.9.35 wired the icon but clicking it did nothing
v5.9.37 DOOM runs in a WINDOW now, not fullscreen — you can see the desktop around it
v5.9.38 Title-bar buttons made pixel-consistent — the maximize icon was malformed on every window
v5.9.39 Pong — an in-kernel GUI game, and the compositor's first ANIMATED window
v5.9.40 A "Games" desktop folder gathers Minesweeper, DOOM and Pong — and Pong gets a clickable icon, like DOOM
v5.9.41 Every desktop app icon gets its own identity — a little picture of what it does, not one shared generic square
v5.9.42 Snake — a second in-kernel game, and the Games folder grows to four
v5.9.43 Tetris — the fifth game, and the most mechanically complete one yet
v5.9.44 Selene — the NyxOS web browser fetches and renders the real internet
v5.9.45 Selene grows up — clickable links, keyboard link-navigation, and a Back history
v5.9.46 Auto-DHCP at boot — the network is ready for everything, no manual dhcp
v5.9.47 Selene reads like a page, not a wall of text — headings, paragraphs, lists and rules
v5.9.48 TLS, step 1 — NyxOS speaks TLS with a real https server (ClientHello → ServerHello)
v5.9.49 TLS, step 2 — X25519, the first cryptographic primitive (Curve25519 ECDH), proven against the RFC 7748 vectors
v5.9.50 TLS, step 3 — the TLS 1.2 PRF (P_SHA256), the key-derivation function, proven against RFC 4231 + the canonical PRF vector
v5.9.51 TLS, step 4 — the real ECDHE key agreement: NyxOS and a live https server derive the same session keys
v5.9.52 TLS, step 5 — AES-128-GCM, the record cipher: authenticated encryption that reproduces the NIST vectors byte-for-byte
v5.9.53 TLS, step 6 — the record layer: AES-128-GCM records + the Finished verify_data, framed exactly on the wire
v5.9.54 TLS, step 7 — the handshake COMPLETES: NyxOS establishes a verified, encrypted TLS channel with a real https server
v5.9.55 https, for real — NyxOS fetches and decrypts a live https page over the TLS channel
v5.9.56 Selene opens https sites — the browser speaks TLS
v5.9.57 A real CSPRNG — the TLS ephemeral key and ClientHello random are now unpredictable
v5.9.58 DER/ASN.1 reader — reading an X.509 certificate, step 1 of the TLS trust model
v5.9.59 NIST P-256 (secp256r1) curve arithmetic — the math behind the certificate's signature
v5.9.60 ECDSA-P256 signature verification — the check at the heart of certificate validation
v5.9.61 TLS now cryptographically verifies the server's ServerKeyExchange signature against its certificate
v5.9.62 RSA PKCS#1 v1.5 signature verification — the last crypto primitive for the trust chain
v5.9.63 SHA-512 / SHA-384 — the hash the certificate chain's CA links need
v5.9.64 NIST P-384 (secp384r1) curve arithmetic + ECDSA-P384/SHA-384 verify — the other primitive the CA links need
v5.9.65 TLS certificate-chain verification to a pinned trust anchor — the trust model is closed, TLS is now MITM-resistant (FINALE of the crypto arc)
v5.9.66 Leaf-certificate hostname + validity checks — "verify the peer" is now complete
v5.9.67 Streaming https receive — Selene can now load large pages (back to the browser after the crypto arc)
v5.9.68 HTML forms in Selene — the browser payoff TLS was gating all along (search boxes work)
v5.9.69 POST forms — Selene can submit login-style forms (the complement to GET)
v5.9.70 NIST P-256 (secp256r1) ECDHE key agreement — NyxOS's TLS now reaches the huge set of servers that prefer P-256, not just x25519 ones
v5.9.71 TLS now verifies the RSA-signed ServerKeyExchange too — ECDHE-RSA servers are no longer trusted "unverified"
v5.9.72 TLS certificate enforcement — the trust model can now REFUSE a connection, not just warn (MITM defence goes from "reported" to "blocked")
v5.9.73 A real TLS trust store — strict mode now works across the web, not just SSL.com-rooted sites
v5.9.74 RSA-PSS ServerKeyExchange verification + the SKE signature folded into strict mode — strict TLS is now fully MITM-safe
v5.9.75 Selene: find-in-page (Ctrl+F) — back to the browser after the long TLS arc, with a visible feature
v5.9.76 Selene: <img> placeholders — images stop vanishing; each one renders as a framed box showing its alt text (or filename)
v5.9.77 Selene: <table> column layout — tables stop collapsing into a run-on line and render as aligned, bordered columns
v5.9.78 Selene: tabs — several pages open at once in one window (the browser's biggest UX jump yet)
v5.9.79 ECDSA-P384/SHA-384 ServerKeyExchange verification (0x0503) — the last common SKE signature scheme NyxOS couldn't check
v5.9.80 secp384r1 as an ECDHE group + P-384 ECDHE key agreement — which turns v5.9.79's KAT-only ECDSA-P384 check into a LIVE, end-to-end verification
v5.9.81 DEFLATE / zlib decompression (inflate.c) — the first step toward decoding real images in Selene
v5.9.82 A PNG decoder (png.c) on top of v5.9.81's inflate — NyxOS can now turn PNG bytes into pixels
v5.9.83 Selene draws real images — the payoff of the image arc: <img> PNGs are now fetched, decoded and rendered inline
v5.9.84 Lazy + progressive image loading — an image-heavy page shows its text instantly and only downloads the pictures you can actually see
v5.9.85 BMP image support + a format-agnostic image pipeline — Selene now shows .bmp as well as .png
v5.9.86 GIF support — the third image format, with a real LZW decompressor. Selene now shows PNG, BMP and GIF
v5.9.87 Cooperative, non-blocking image loading — the browser never freezes while pictures download. Selene loads one image per compositor frame
v5.9.88 Animated GIF playback — Selene's GIFs now MOVE, driven by v5.9.87's per-frame tick. gif_decode_anim composites every frame, honouring sub-rectangle, transparent index and disposal method
v5.9.89 A baseline JPEG decoder (jpeg.c) — the last major web image format. Sequential DCT, Huffman-coded, 8-bit, with restart markers
v5.9.90 JPEG wired into Selene — the browser shows real photos. The image arc is complete: PNG + BMP + GIF (static and animated) + JPEG
v5.9.91 "Fancy" chroma upsampling for JPEG — 4:2:0 photos now decode as sharply as a reference decoder, using libjpeg's triangle filter instead of nearest-neighbour
v5.9.92 RSA-PKCS1-SHA512 ServerKeyExchange verification (0x0601) — NyxOS now verifies every common SKE signature scheme
v5.9.93 GIF loop count honoured (NETSCAPE2.0) — animated GIFs stop after their specified number of plays instead of looping forever
v5.9.94 Selene decodes ~30 HTML entities (named + numeric) to readable text
v5.9.95 Selene follows HTTP redirects (301/302/303/307/308), ≤ 5 hops — first feature after the kernel/ folder reorg
v5.9.96 Selene tables handle colspan/rowspan via an occupancy grid
v5.9.97 Selene renders nested <table>s — flattened inline as [ a b / c d ] instead of corrupting the outer grid
v5.9.98 Selene renders ordered + nested lists — <ol> numbered 1. 2. 3., nested lists indented per level
v5.9.99 Selene formats <pre> (whitespace preserved) and <blockquote> (indented) — the last feature increment

General maintenance — v5.9.100 to v5.9.126

Feature work stops; a correctness, cleanup and hardening sweep begins — one file or subsystem per release, self-tests re-run each time. Several releases close remotely- or certificate-reachable defects.

Version Change
v5.9.100 Start of the maintenance pass — 14/15 build warnings fixed (zero C warnings), plus a real UB bug (negative shift in JPEG) and two latent hazards
v5.9.101 initramfs_data.h untracked (clean builds stop churning 27k lines) + the last NASM warning fixed — make is 100 % warning-clean
v5.9.102 Dead-code + stale-comment sweep — two never-called functions removed, three comments that contradicted shipped features corrected
v5.9.103 -Wshadow made a permanent flag after fixing the two shadow warnings (a dhcp.c cookie, a compositor.c height)
v5.9.104 Fixed a remotely-triggerable NULL-deref kernel crash in the TCP receive path (unchecked kmalloc under memory pressure)
v5.9.105 get_phys_addr returned a wrong address for NX pages (the NX bit leaked into the result); three duplicate frame masks consolidated
v5.9.106 Hardened the X.509 date parser (der.c), which accepted a 'Z' in any date position; der.c now -Wsign-conversion-clean
v5.9.107 -Wsign-conversion audit of the untrusted image decoders — all five bounds-sound; gif.c made clean
v5.9.108 Fixed a latent out-of-bounds stack read in the HTTP request builder (snprintf-return clamp); http.c made clean
v5.9.109 Fixed a rename() that applied half of a failed cross-directory move
v5.9.110 Fixed heap fragmentation — adjacent free blocks were never merged, so a large allocation could fail with plenty of free memory
v5.9.111 Fixed a data+FIN TCP segment being half-handled, so a graceful close stalled until the peer retransmitted a bare FIN
v5.9.112 Added the missing in-order sequence check to the TCP receive path — a duplicate or out-of-order segment no longer corrupts the recv stream
v5.9.113 DHCP option-walker bounds-checked — the option loops no longer read a length byte or value past the packet
v5.9.114 IP header validation — the RX checksum is verified and the IHL parsed before a packet is trusted
v5.9.115 mmap length-overflow fix — an oversized length can no longer wrap the range arithmetic
v5.9.116 ICMP checksum byte-order fix — external ping gets replies for the first time
v5.9.117 ARP header validation (RFC 826) — non-Ethernet/IPv4 or mismatched hlen/plen frames are rejected before caching
v5.9.118 ext2 block-group-descriptor bounds — an out-of-range group index is rejected before a BGD read/write
v5.9.119 ext2 block-pointer bounds — on-disk block numbers are validated against total_blocks, including indirect blocks
v5.9.120 ext2 write capacity check — a write that would exceed the filesystem is refused up front
v5.9.121 Ethernet RX hardening — a MAC filter and a defensive length clamp on every received frame
v5.9.122 TLS record-layer hardening — a plaintext-length bounds check and a certificate-leaf bound
v5.9.123 X.509 self-test buffer-overflow fix — the tampered-leaf copy is bounded to its buffer (enlarged 1003 → 2048)
v5.9.124 SYS_FBPRESENT integer-overflow fix — w*h*4 could wrap to 0 and blit an out-of-bounds read to the screen; a per-dimension cap closes it
v5.9.125 ext2 writer free-space check — an up-front check prevents a block leak when the disk fills mid-write
v5.9.126 RTL8139 promiscuous mode dropped from the receive config — the NIC no longer accepts frames addressed to other hosts

Desktop image viewing and Selene's CSS engine — v5.9.127 to v5.9.205

The maintenance pass gives way to features again. The desktop Image Viewer learns to open real image files, then Selene grows a full inline-CSS and legacy-HTML rendering engine — colour and backgrounds, the bold/underline/strike/overline family, text-align and text-transform, tables with per-cell/row/column colour and alignment, definition lists and captions, ~60 more HTML entities, and form widgets — one verified increment at a time.

Version Change
v5.9.127 Image Viewer opens real image files — PNG/BMP/GIF/JPEG, with animated-GIF playback
v5.9.128 File Manager opens images in the Image Viewer (auto-fit zoom) + a files command
v5.9.129 Selene: inline CSS text colour — style="color:.." (and legacy <font color>), with a nesting colour stack
v5.9.130 Selene: inline CSS background/background-color (and legacy <font bgcolor>), per character
v5.9.131 Selene: bold — <b>/<strong> and font-weight:bold/700+
v5.9.132 Selene: underline — <u> and text-decoration:underline (a per-char text-flags byte replaces the bold grid)
v5.9.133 Selene: strikethrough — <s>/<del>/<strike> and text-decoration:line-through
v5.9.134 Selene: more semantic inline tags — <mark> (highlight), <ins> (underline), <code>/<kbd>/<samp>/<tt> (a code background)
v5.9.135 Selene: text-aligncenter/right/left and the <center> tag, applied per wrapped line
v5.9.136 Selene: <hr> becomes a real 2px rule (fb_fill_rect) instead of a row of dashes
v5.9.137 Selene: <q> inline quotation — quote marks around the quoted text, carrying the enclosing style
v5.9.138 Selene: <abbr> with a dotted underline (a fourth text decoration)
v5.9.139 Selene: <sub>/<sup> — a same-size glyph shifted down/up (a 2-bit vertical-offset field)
v5.9.140 Selene: <hr> honours width and alignment — width:N%, legacy width=, and align=
v5.9.141 Selene: <hr> takes a colour (color/border-color) instead of the default grey
v5.9.142 Selene: list-style-type (and legacy type=) on <ul>/<ol> — disc/circle/square, decimal/roman/alpha
v5.9.143 Selene: text-transform — uppercase/lowercase/capitalize, per span, with nesting
v5.9.144 Selene: <dl>/<dt>/<dd> — a real definition list, each description indented on its own line
v5.9.145 Selene: a <table>'s <caption> rendered as a centred title above the box
v5.9.146 Selene: a nested <ul> cycles its bullet by depth — disc → circle → square
v5.9.147 Selene: CSS text-indent on block elements — a first-line indent in px/em/rem
v5.9.148 Selene: CSS caption-side:bottom moves a table caption below the box
v5.9.149 Selene: <figure>/<figcaption> laid out as an indented block with the caption beneath
v5.9.150 Selene: border=0 (or border:none) draws a borderless table — aligned columns, no rules
v5.9.151 Selene: a table's cellpadding attribute widens the space inside each cell
v5.9.152 Selene: <ol start=N> — an ordered list can begin numbering at N
v5.9.153 Selene: <li value=N> — a list item can restart the numbering mid-list
v5.9.154 Selene: text-align on a table <caption> — left/right override the centred default
v5.9.155 Selene: text-align on a <figcaption> — centre/right placement, completing the caption pair
v5.9.156 Selene: <ol reversed> — an ordered list numbers downward (3, 2, 1)
v5.9.157 Selene: display:none / visibility:hidden / the hidden attribute drop the element's whole subtree
v5.9.158 Selene: the CSS colour parser grows from ~28 to ~90 named colours (tomato, steelblue, rebeccapurple, ...)
v5.9.159 Selene: per-cell table alignment — <td>/<th> align=/text-align place text within the column
v5.9.160 Selene: text-decoration:overline — a rule along the top of the text (completes the decoration family)
v5.9.161 Selene: row-level table alignment — <tr align=..> sets a default for every cell in the row
v5.9.162 Selene: <details>/<summary> disclosure widgets — collapsed ([+]) vs open ([-])
v5.9.163 Selene: column-default table alignment — <col align>/<colgroup align> (the cascade cell > row > column)
v5.9.164 Selene: &nbsp; (and &#160;/&#xA0;) is a true non-breaking space — "10 kg" never wraps apart
v5.9.165 Selene: white-space:nowrap keeps a styled run on one line
v5.9.166 Selene: ~30 more HTML entities — typographic, currency, math, arrows and card suits, each a real CP437 glyph
v5.9.167 Selene: the legacy presentational align attribute (center/right/left) on block elements (p/div/h1-h6)
v5.9.168 Selene: <hr size=N> (or CSS height) draws a rule of a chosen thickness (1-8 px)
v5.9.169 Selene: <body bgcolor>/<body text> (and the CSS equivalents) set the whole-page colours
v5.9.170 Selene: table cell and row backgrounds — <td>/<th>/<tr> bgcolor (and background-color)
v5.9.171 Selene: column backgrounds — <col bgcolor>/<colgroup bgcolor>, completing the table-colour cascade
v5.9.172 Selene: Greek letters and more accented-Latin characters added to the HTML-entity table
v5.9.173 Selene: HTML5 <progress> and <meter> as inline CP437 block bars with a percentage
v5.9.174 Selene: the legacy <nobr> element keeps its whole content on one line
v5.9.175 Selene: <audio>/<video> render as a small inline placeholder box showing the file name
v5.9.176 Selene: <input> checkbox and radio render as a state glyph — [x]/[ ] and (*)/( )
v5.9.177 Selene: a <blockquote> gets a vertical bar down its left margin, one per nesting level
v5.9.178 Selene: the italic/emphasis family — <i>/<em>/<cite>/<var>/<dfn> rendered with an underline
v5.9.179 Selene: <kbd> rendered as a bracketed keycap — [Key]
v5.9.180 Selene: <select> rendered as an inline dropdown badge showing the chosen <option>
v5.9.181 Selene: <button> drawn as a filled pill honouring its own CSS background/text colour
v5.9.182 Selene: inline styling inside a table cell — coloured text, background pills, bold, code/mark
v5.9.183 Selene: <a> hyperlinks inside a table cell (blue, underlined, clickable)
v5.9.184 Selene: multi-line table cells — content word-wraps and the row grows to its tallest cell
v5.9.185 Selene: in-page anchors <a href="#">/href="#section" are real clickable links
v5.9.186 Selene: hard line breaks inside a table cell — <br> and block-element boundaries
v5.9.187 Selene: a nested <table> renders one row per line inside its cell
v5.9.188 Selene: the content inside a nested table's cells is itself styled
v5.9.189 Selene: a real border box is drawn around a bordered top-level <div>
v5.9.190 Selene: the drawn <div> border box honours the CSS border colour
v5.9.191 Selene: a border box around a table cell whose content is a bordered <div>
v5.9.192 Selene: <fieldset> renders as a bordered card with its <legend> as the heading
v5.9.193 Selene: a bordered in-cell panel gets a subtle background tint (reads as filled)
v5.9.194 Selene: a top-level bordered <div>/<fieldset> gets the same fill tint
v5.9.195 Selene: a <fieldset>'s <legend> renders in bold
v5.9.196 Selene: HTML5 <main>, <aside> and <address> recognised as blocks (<address> italic)
v5.9.197 Selene: a <dialog> without the open attribute is display:none by default
v5.9.198 Selene: CSS font-style:italic/oblique on flow text
v5.9.199 Selene: CSS vertical-align:super/sub on flow text
v5.9.200 Security: fixed a remotely-triggerable heap buffer overflow in the HTTP chunked-transfer decoder (net/http.c)
v5.9.201 Security: bounded the DNS query-name encoder against a kernel stack buffer overflow (net/dns.c)
v5.9.202 Selene: <th> table-header cells render bold by default
v5.9.203 Selene: a broken/undecoded <img> keeps its [img: …] placeholder
v5.9.204 Selene: <textarea> renders as a multi-line editable field box
v5.9.205 Selene: HTML entities decoded in the page <title> (Q&amp;AQ&A in the tab)

Persistent home and the v6 desktop — v6.0.0 to v6.0.10

The v6 era opens with a cleaner default desktop and, more importantly, a persistent home directory on the EXT2 disk — files created by the logged-in user now survive a reboot. See Filesystem#persistent-home-directory.

Version Change
v6.0.0 The desktop gains a wallpaper style axis and defaults to a clean, minimal look
v6.0.1 The About window and Terminal banner show the real kernel version instead of a stale hardcoded string
v6.0.2 Restores the bottom margin of the Wallpaper picker window
v6.0.3 File Manager: a Size column (B/KB/MB)
v6.0.4 File Manager: sorted listing — directories first, then case-insensitive alphabetical
v6.0.5 File Manager: a Properties panel (name, type, size) from the context menu
v6.0.6 The logged-in user's home moves to the persistent EXT2 disk at /mnt/home/<user>
v6.0.7 Fixes vfs_isdir treating every mounted path as a directory (files showed as 0 B folders)
v6.0.8 The Terminal opens in, and can navigate, the persistent home
v6.0.9 Relative file ops from a mount-backed cwd hit the mounted FS (touch/mkdir/rm/mv/cp persist)
v6.0.10 The Text Editor's Save works; a new note defaults into the persistent home

Phase 2: the in-OS toolchain — v6.1.0 to v6.4.18

The flagship of v6: a C toolchain that runs inside NyxOS. The libc grows into a compiler-complete C library, a port of TinyCC 0.9.27 lands, and — one verified increment at a time — the in-OS compiler comes to compile the OS's own libc, its own shell, real coreutils byte-identically, and finally tcc's own ~40 000-line source. Full detail: Toolchain.

Version Change
v6.1.0 libc: realloc, calloc, memmove
v6.1.1 libc: the ctype family (a compiler front-end's lexer primitives)
v6.1.2 libc: memchr, strrchr, strncat, strdup, qsort
v6.1.3 libc: the FILE* stdio core (fopen/fread/fwrite/…)
v6.1.4 libc: the fprintf family on a unified printf formatter
v6.1.5 libc: stdin/stdout/stderr + fgets/fputs/fseek/ftell — libc now compiler-complete
v6.2.0 The in-OS C compiler runs
v6.2.1 tcc -E preprocesses in-OS (fixed a real strchr bug in the libc)
v6.2.2 tcc -c compiles C to a valid x86-64 ELF object in-OS
v6.2.3 tcc links a static executable ELF in-OS
v6.3.0 compile → link → run closed — an in-OS-compiled program runs in-OS (static-PLT GOT fix in tccelf.c)
v6.3.1 A real libc-using program compiles and runs; the cc shell builtin lands
v6.3.2 Non-trivial and multi-file programs compile, link, and run
v6.3.3 cc -c compile-only mode — separate compilation
v6.3.4 tcc's freestanding system headers provisioned into the OS
v6.3.5 tcc's varargs runtime provisioned
v6.4.0 tcc compiles the NyxOS libc — the toolchain is self-hosting-capable
v6.4.1 The tcc-built libc runs (two real bugs fixed)
v6.4.2 cc --self-libc — the in-OS tcc compiles a piece of tcc itself
v6.4.3 tcc compiles a real, unmodified coreutil byte-identically
v6.4.4 tcc compiles the OS's own 1042-line userspace shell
v6.4.5 tcc compiles tcc's main runtime library libtcc1.c
v6.4.6 Floating-point works — a real strtod (float/double literals had compiled to zero)
v6.4.7 tcc rebuilds grep + sort byte-identically
v6.4.8 The tcc port is host-header-free — tcc.c itself compiles in-OS
v6.4.9 TCC COMPILES TCC IN-OS — tcc's whole ~40 000-line source → a valid x86-64 object, exit 0, 0 faults
v6.4.10 Phase 2 (tcc-compiles-tcc arc, step 3): the in-OS tcc self-host object now PERSISTS IN FULL - the in-OS tcc compiles tcc's own whole source…
v6.4.11 Phase 2 (tcc-compiles-tcc arc, step 4): the self-host loop is closed - in one boot the in-OS tcc compiles tcc.c, links the result, and runs…
v6.4.12 Phase 2 (tcc-compiles-tcc arc, step 5): the self-built tcc compiles - the tcc_self.elf that the in-OS tcc builds is itself a working…
v6.4.13 a program persisted on the ext2 /mnt disk now runs across reboots: the in-OS ext2 reader supports sparse files (holes), fixing the…
v6.4.14 copy_to_user/copy_from_user are now page-granular (translate once per page, not per byte).
v6.4.15 the self-built tcc compiles a real coreutil (grep) byte-identically to the GCC build.
v6.4.16 the command parser no longer silently truncates at 10 arguments; raise the cap to 32 and report overflow.
v6.4.17 the cc builtin can compile with the self-built tcc: a new cc --self mode, building and caching /mnt/tcc_self.elf on demand.
v6.4.18 cc --self rebuilds a real coreutil (sort) byte-identically to the GCC build; the tcc self-host arc is complete.

Daily-driver userland, xbm and the hardening pass — v6.4.19 to v6.4.120

With the compiler done, the effort turned to breadth and robustness: an in-OS package manager (xbm) that compiles packages from source with cc; a long run of real coreutils (uniq cut nl tac seq cal xxd rev tr fold expand unexpand printf basename dirname base64 base32 cksum) and flag-complete grep/sort/ls/wc/diff; a man command; visual/perf demos (Nyx Voxels, fire, matrix, lava, fractal, julia, rotor, fill, life) and animated wallpapers; and a sustained security-and-SMP hardening pass across the allocators, VFS, TCP, DNS, X.509 and the image decoders — each locked with a self-test/KAT. See Toolchain, Security, Networking-Stack, Cryptography-and-TLS, Desktop-Applications.

Version Change
v6.4.19 a minimal in-OS package manager: the pkg builtin installs a package by compiling its source with cc.
v6.4.20 the in-OS package manager is now named xbm, and packages it installs run by bare name
v6.4.21 xbm can now remove an installed package, completing install/list/remove
v6.4.22 xbm gains search and list --installed, completing the everyday verb set
v6.4.23 add a real uniq coreutil, raising the userland toward daily-driver quality
v6.4.24 add a real cut coreutil, continuing the userland climb
v6.4.25 Start menu surfaces the Selene browser and the Games folder
v6.4.26 per-entry icons in the Start menu (a modern app-launcher look)
v6.4.27 add a real nl coreutil, continuing the userland climb
v6.4.28 add a real tac coreutil, continuing the userland climb
v6.4.29 taskbar clock shows the date alongside the time
v6.4.30 add a real seq coreutil, continuing the userland climb
v6.4.31 replace the naive diff builtin with a real LCS-based diff
v6.4.32 wc gains -l/-w/-c count-selecting flags
v6.4.33 the Start menu casts a soft drop shadow, floating above the desktop and windows like a modern app launcher.
v6.4.34 grep gains -i/-n/-v flags and GNU-like output (builtin + userland).
v6.4.35 the File Manager draws a folder or document icon on every row.
v6.4.36 sort gains -r (reverse) and -n (numeric) flags (builtin + userland).
v6.4.37 ls gains -a (show hidden) and -l (long format) flags (builtin + userland).
v6.4.38 Nyx Voxels: an in-kernel window rendering a static isometric voxel scene (first step toward a voxel sandbox).
v6.4.39 Nyx Voxels becomes interactive: left-click places a block, right-click breaks it.
v6.4.40 Nyx Voxels gains block types and a palette (grass/dirt/stone/wood/sand/water; keys 1-6 or click).
v6.4.41 Nyx Voxels gains procedural worldgen: press G to generate a fresh landscape.
v6.4.42 Nyx Voxels gains a rotatable isometric camera: press R to orbit the island.
v6.4.43 the File Manager colour-codes file icons by type (exec/object/source/image/archive).
v6.4.44 xbm validates package and recipe names, closing a path-traversal and cc-arg-injection hole.
v6.4.45 fix held left-click on window controls leaking to the app beneath; the compositor window-action block is now press-edge-triggered.
v6.4.46 harden the PS/2 mouse driver: discard X/Y-overflow packets so the cursor no longer teleports on a fast move and window drags track cleanly.
v6.4.47 fix the dead Settings buttons: share the button-row Y offsets between draw and hit-test so Resolution/Keyboard clicks register; Display tab…
v6.4.48 minimal desktop: hide the app-launcher icons (every app is on the Start menu) for a clean, modern desktop; gated by g_desktop_icons_visible…
v6.4.49 higher resolutions: Settings Display offers modern modes up to 1920x1080; raise MAX_FB_PAGES to 2048 so the LFB maps the larger framebuffer…
v6.4.50 terminal: reserve the last row for the input line so the newest output line is not painted over by the prompt once the scrollback fills the…
v6.4.51 minimal desktop: replace the three stacked boot windows (keyboard-shortcut list, About, Terminal) with one subtle centered Nyx greeting…
v6.4.52 voxel perf testbed: a benchmark HUD (key B) re-renders the terrain 40x per frame and times it to report the software renderer throughput…
v6.4.53 userland: add basename and dirname POSIX path builtins (GNU-compatible trailing-slash and suffix handling, bounded copy), raising the base…
v6.4.54 security: DNS resolver resists response spoofing - use a random CSPRNG transaction ID per query and reject responses whose ID does not…
v6.4.55 visual: add a fire command that opens Nyx Fire, an animated doom-fire window (integer heat-grid propagation + a black-to-white palette); an…
v6.4.56 docs: add a man command that renders a formatted manual page (NAME/SYNOPSIS/DESCRIPTION) for any shell command, reusing the commands table…
v6.4.57 visual: add a matrix command that opens Nyx Matrix, a cmatrix-style green code-rain window (per-column falling head with a fading-green…
v6.4.58 userland: add a rev command that reverses the characters of each line of a file (bounded read like head/wc), raising the base toolset…
v6.4.59 visual: add a lava command that opens Nyx Lava, an animated plasma effect (four phase-shifted integer sine waves through a cyclic fire…
v6.4.60 userland: add a tr command that translates, deletes (-d) or squeezes (-s) characters read from a file, with GNU-style range expansion (a-z,…
v6.4.61 voxel perf: add a rolling frame-time graph to the Nyx Voxels benchmark HUD (128-sample ring, peak-autoscaled bars coloured by distance…
v6.4.62 security: add an image-decoder reject self-test proving png/bmp/gif/jpeg refuse malformed input (empty, garbage, zero/oversized dimensions,…
v6.4.63 docs: nearly triple the man command's coverage (man_pages table 22 to 58 entries), adding hand-written descriptions for the daily-driver…
v6.4.64 userland: add a fold command that wraps long lines to a width (fold [-w width] , default 80, hard break), accepting both -w N and…
v6.4.65 personalization: add an animated Estrellas wallpaper style whose star field twinkles (per-star integer triangle-wave luminance from the…
v6.4.66 P4 perf: add a fractal command opening Nyx Fractal, a fixed-point (Q8.24, no floats) Mandelbrot renderer that ping-pong auto-zooms toward…
v6.4.67 file manager: add a right-aligned directory-totals summary to the status bar (dir/file counts + summed file size, human-readable B/KB/MB),…
v6.4.68 userland: add a printf command that formats and prints its arguments like the coreutil/shell printf (backslash escapes,…
v6.4.69 security: reject non-CA certificates as chain issuers in x509_verify_chain, closing a basicConstraints bypass (a valid end-entity leaf…
v6.4.70 personalization: add a Meteoros wallpaper style whose Nightfall sky is crossed by a periodic shooting star (a bright head and fading tail…
v6.4.71 docs: group the help command's ~110 builtins under category headers (Shell, Files, Text, Processes, Users, Networking, Development, Media,…
v6.4.72 userland: add an expand command that converts tabs to spaces aligned to tab stops (each tab advances to the next multiple of the tab width,…
v6.4.73 xbm: fetch a package's source over HTTP - a recipe can carry a url: line, and xbm install downloads that http:// source into the package…
v6.4.74 P4 perf: add a julia command opening Nyx Julia, a fixed-point (Q8.24, no floats) Julia-set renderer whose constant c orbits so the set…
v6.4.75 file manager: make the list column headers clickable to sort - click Name or Size to sort by that column, click the active column again to…
v6.4.76 security: audit the HTTP response parser (on the xbm package-fetch path since v6.4.73, so it handles untrusted server data) and lock its…
v6.4.77 userland: add an unexpand command, the inverse of expand - it turns runs of spaces back into tabs, matching GNU semantics (by default only…
v6.4.78 personalization: make the Wallpaper picker's colour swatches render a live miniature of the actual desktop scene in each hue under the…
v6.4.79 docs: add 24 hand-written manual pages (man_pages 65 to 89), closing the man gap for the user-facing commands that previously fell back to…
v6.4.83 harden the physical page allocator: reject non-page-aligned frees, silent double-frees, and incref of a free frame
v6.4.84 harden the kernel heap allocator: krealloc keeps the original block on OOM, kfree rejects unknown-magic headers
v6.4.85 fix VFS path resolution: a missing intermediate directory now fails instead of operating on an earlier parent
v6.4.86 validate the TCP checksum on receive: drop segments with a bad checksum instead of acting on corrupted headers/payload
v6.4.87 make /proc SMP-safe: guard proc_sync with a spinlock instead of preempt_disable (which only stops the local CPU)
v6.4.88 complete the TCP close handshake: tcp_close now keeps the conn alive so FIN_WAIT/LAST_ACK reach CLOSED instead of tearing down immediately
v6.4.89 make the TCP connection table SMP-safe: serialize every public entry point with a coarse tcp_lock spinlock
v6.4.90 TCP: retransmit queue so a 2nd send can't drop the 1st unacked segment
v6.4.91 VFS: fd handles are pool indices, not truncated 64-bit node pointers
v6.4.92 rtl8139: wire the RX/TX interrupt (first step toward async networking)
v6.4.93 add a deterministic 64-bit primality test + CI self-test
v6.4.94 aurora wallpaper: slow drifting green-violet curtains over the night sky
v6.4.95 add a cal(1) month-calendar coreutil
v6.4.96 add a CRC-32 checksum + CI self-test
v6.4.97 PNG: validate every chunk's CRC-32
v6.4.98 nebula wallpaper: soft drifting purple gas clouds over the night sky
v6.4.99 Nyx Rotor: a spinning 3D point-lattice render-perf demo
v6.4.100 xxd: a canonical hex + ASCII dump for files
v6.4.101 docs: an architecture & contributor guide
v6.4.102 rtl8139: wait for TX-descriptor completion before reuse
v6.4.103 base64: a strict RFC 4648 codec + KAT
v6.4.104 base64: an encode/decode coreutil
v6.4.105 Luces wallpaper: drifting glowing orbs + a 2-row style picker
v6.4.106 lock the password KDF (PBKDF2-HMAC-SHA256) with a KAT
v6.4.107 document the wallpaper/desktop-background render system (docs/WALLPAPERS.md)
v6.4.108 add tr(1): translate/delete/squeeze filter (ranges, POSIX classes, -cds)
v6.4.109 harden the DNS response parser and lock it with an adversarial KAT
v6.4.110 add Nyx Fill: a 2D fill-rate/overdraw P4 render-perf demo
v6.4.111 document the network stack (docs/NETWORK.md)
v6.4.112 add fold(1): GNU-compatible line-wrapping coreutil (-w/-b/-s)
v6.4.113 add a strict UTF-8 validator/decoder + KAT
v6.4.114 Ondas wallpaper: concentric moonlight ripples + a 3-row style picker
v6.4.115 add cksum(1): POSIX CRC-32 checksum + byte count coreutil
v6.4.116 document the crypto & TLS trust model (docs/CRYPTO.md)
v6.4.117 add a strict RFC 4648 Base32 codec + KAT
v6.4.118 add Nyx Life: a Game-of-Life compute/render perf demo
v6.4.119 add base32(1): an RFC 4648 Base32 codec coreutil (base64's pair)
v6.4.120 add TOTP/HOTP one-time passwords (RFC 6238/4226) + KAT

The crypto library, parser hardening and desktop polish — v6.4.121 to v6.4.182

The largest single theme of this run is a general-purpose cryptographic library far beyond what TLS needs — ChaCha20-Poly1305, BLAKE2s, SHA3-256, SHA-1, MD5, HKDF, AES-CTR/CBC/CMAC/Key-Wrap, Poly1305, SipHash, Ed25519 — each landed with a known-answer test, plus userland digest coreutils. Alongside it: the coreutil climb continued (comm tee paste factor od split join cmp sum column dd …), a run of parser-hardening fixes (IPv4/IPv6/URL/glob/DHCP/CSI/filename), and desktop polish (Aero-Snap window snapping, a taskbar calendar, running-app indicators). See Cryptography-and-TLS, Command-Reference, Security, GUI-Subsystem.

Version Change
v6.4.121 add the Astral wallpaper: a constellation star map
v6.4.122 add comm(1): compare two sorted files in three columns
v6.4.123 harden the IPv4 config parser (strict ipv4_parse) + KAT
v6.4.124 add Nyx Blobs: a metaballs render-perf demo
v6.4.125 add tee(1): copy stdin to stdout and to files
v6.4.126 strict overflow-checked integer parsers (numparse) + KAT
v6.4.127 SMP INIT-SIPI: use apic.c ICR helper instead of raw LAPIC magic
v6.4.128 split base types out of the god-header into core/types.h; make apic.h self-contained
v6.4.129 add paste(1): merge lines of files in parallel or serial (-s/-d)
v6.4.130 add HKDF (RFC 5869) HMAC-SHA-256 extract-and-expand KDF + KAT
v6.4.131 add factor(1): prime factorisation of 64-bit integers
v6.4.132 add ChaCha20 stream cipher (RFC 8439) + KAT
v6.4.133 add expand(1) as a userland coreutil (tabs to spaces)
v6.4.134 add SipHash-2-4 keyed hash (hash-flooding defense) + KAT
v6.4.135 add od(1): octal/hex/char file dump
v6.4.136 add Poly1305 one-time authenticator (RFC 8439) + KAT
v6.4.137 add basename(1) and dirname(1) as userland coreutils
v6.4.138 add ChaCha20-Poly1305 AEAD (RFC 8439) + KAT
v6.4.139 add unexpand(1): convert blanks to tabs (inverse of expand)
v6.4.140 add BLAKE2s-256 cryptographic hash (RFC 7693) + KAT
v6.4.141 add sha256sum(1): FIPS 180-4 digests (userland SHA-256)
v6.4.142 add keyed BLAKE2s (MAC mode) + KAT
v6.4.143 add split(1): split a file into pieces
v6.4.144 add Base16/hex codec (RFC 4648) + strict-decode KAT
v6.4.145 add sha512sum(1): FIPS 180-4 SHA-512 digests
v6.4.146 add AES-CMAC (RFC 4493): block-cipher MAC over AES-128
v6.4.147 add "Lluvia" wallpaper: an animated rain of lilac starlight
v6.4.148 validate file names on touch/mkdir (strict UTF-8 + no control chars)
v6.4.149 add join(1): relational join of two sorted files
v6.4.150 add AES-128-CTR (NIST SP 800-38A): the AES stream mode
v6.4.151 harden terminal CSI parser against numeric-param overflow
v6.4.152 xxd -r: revert a hex dump back to binary
v6.4.153 show the weekday in the taskbar clock
v6.4.154 add SHA3-256 (FIPS 202): the Keccak sponge hash
v6.4.155 add cmp(1): byte-by-byte file comparison
v6.4.156 constant-time ct_memcmp for the crypto/TLS verify paths
v6.4.157 add sum(1): the classic BSD/SysV checksum
v6.4.158 click the taskbar clock for a calendar popup
v6.4.159 add AES-128-CBC + the AES inverse cipher (NIST SP 800-38A)
v6.4.160 add column(1): align input into a table
v6.4.161 one hardened URL parser (bound the port, reject over-long host)
v6.4.162 hardened glob matcher (no catastrophic backtracking) + KAT
v6.4.163 add printf(1): format specifiers, escapes, argument recycling
v6.4.164 truncate over-long window titles with an ellipsis
v6.4.165 add a strict RFC 4291 IPv6 address parser + KAT
v6.4.166 double-click the title bar to maximize/restore a window
v6.4.167 add SHA-1 + HMAC-SHA-1 (FIPS 180 / RFC 2202 KAT)
v6.4.168 TOTP/HOTP-SHA-1 (RFC 6238 default MAC) for authenticator interop
v6.4.169 add dd(1): block copy with bs/count/skip/seek/conv
v6.4.170 add LEB128 varint coding (signed + unsigned) + KAT
v6.4.171 taskbar running-app indicators (focused/open accent underline)
v6.4.172 shell globbing uses the hardened iterative matcher (+ [..] classes)
v6.4.173 add MD5 (RFC 1321) legacy-interop checksum + KAT
v6.4.174 drag-to-edge window snapping (Aero Snap) in the compositor
v6.4.175 add md5sum(1) coreutil (userland MD5, matches GNU md5sum)
v6.4.176 add /proc/mounts (lists mounted filesystems)
v6.4.177 add CRC-16/CCITT-FALSE checksum + KAT
v6.4.178 live snap-preview overlay for drag-to-edge window snapping
v6.4.179 add rev(1): reverse the characters of each line
v6.4.180 add AES Key Wrap (RFC 3394) + KAT
v6.4.181 harden DHCP option parsing behind one bounds-checked walker + KAT
v6.4.182 Ed25519 public-key derivation (RFC 8032, TweetNaCl port) + KAT

The N language, more codecs and the bootloader framebuffer — v6.4.183 to v6.4.222

This run introduced N and N++, the native systems language of NyxOS — a bootstrap compiler (ncc), a spec, and a 16-program example suite that compiles and runs inside the OS, reaching the self-hosting triangle (tokenizer, parser, emitter in N). It develops on its own N vX.Y version line, interleaved with the releases below; see N-Language. Alongside it: a run of encodings and checksums (Ascii85, Base58, bech32, CRC-32C, FNV-1a, Fletcher, MurmurHash3, CSV, SemVer, URL percent-encoding), more byte-exact GNU coreutils, a taskbar system tray with network/speaker flyouts, continued kernel.h god-header splits, and — at v6.4.222 — booting on the bootloader-provided framebuffer (multiboot2/GOP) instead of QEMU's Bochs VBE. See Cryptography-and-TLS, Command-Reference, GUI-Subsystem, Boot-Process.

Version Change
v6.4.183 Ed25519 signature verify (RFC 8032) + KAT
v6.4.184 file(1) type identification (magic + UTF-8) + KAT
v6.4.185 File Manager Type column (native file-type labels)
v6.4.186 Start-menu type-to-search filter
v6.4.187 tar(1) ustar archive lister + KAT
v6.4.188 strftime date formatter + date +FORMAT + KAT
v6.4.189 Start-menu arrow-key navigation + selected-row highlight
v6.4.190 hardened INI/conf reader + iniget command + KAT
v6.4.191 taskbar clock + calendar use date_format (dedup)
v6.4.192 factor(1) prime factorization coreutil + KAT
v6.4.193 strict SemVer 2.0.0 parser + compare + semver cmd + KAT
v6.4.194 taskbar system tray (live network + speaker status)
v6.4.195 Ascii85 (base85) codec encode/decode + KAT
v6.4.196 comm(1): compare two sorted files (3-column)
v6.4.197 vfs: 512-node pool + vfsstat census (mitigate #66 exhaustion)
v6.4.198 idle screensaver: crescent moon over a drifting starfield
v6.4.199 fnv: FNV-1a hash (32/64-bit) + fnv command
v6.4.200 seq: integer sequence generator
v6.4.201 wallpaper: Cordillera (layered night-mountain silhouettes)
v6.4.202 urlcodec: percent-encoding (RFC 3986) codec + urlcode command
v6.4.203 paste: merge lines of files (-s, -d LIST)
v6.4.204 taskbar: clickable tray network icon opens an IP flyout
v6.4.205 crc32c: CRC-32C (Castagnoli) checksum + KAT + crc32c command
v6.4.206 tac: print a file's lines in reverse order (-s SEP)
v6.4.207 taskbar: clickable tray speaker icon opens a volume/mute flyout
v6.4.208 urlcodec: shared form-encoder; route Selene through it (dedup)
v6.4.209 csv: RFC 4180 field parser + KAT + csv table viewer
v6.4.210 tsort: topological sort of a dependency list (byte-exact GNU tsort)
v6.4.211 base58: Bitcoin Base58 encode/decode + KAT + base58 command
v6.4.212 split GUI window launchers out of the kernel.h god-header
v6.4.213 cut: select fields/chars/bytes of each line (byte-exact GNU cut)
v6.4.214 bech32: BIP-173 checksummed base-32 encode/decode + KAT + bech32 command
v6.4.215 split the network-stack public API out of the kernel.h god-header
v6.4.216 uniq: collapse adjacent equal lines (byte-exact GNU uniq)
v6.4.217 enforce the filename naming policy on cp/mv/write, not just touch/mkdir
v6.4.218 fletcher: Fletcher-16/32 positional checksum + KAT + fletcher command
v6.4.219 join: relational merge-join of two sorted files (byte-exact GNU join)
v6.4.220 split the graphics/input primitives out of the kernel.h god-header
v6.4.221 murmur: MurmurHash3-32 non-crypto hash + KAT + murmur command
v6.4.222 boot on the bootloader-provided framebuffer (multiboot2/GOP), not QEMU Bochs VBE

Self-install, real hardware and ring-3 windows — v6.4.223 to v6.4.363

The biggest run yet. NyxOS learned to install itself onto a real disk and boot standalone — an NVMe driver, in-OS MBR/GPT partitioning, an ext2 formatter, a FAT32 ESP, and GRUB/UEFI install, all behind nyxinstall (BIOS and UEFI). It gained real-hardware boot (UEFI/GOP, PS/2 fallbacks, display rotation), a ring-3 windowing API (syscalls 57–60 — a program opens a real desktop window), an AC'97 audio driver, a software 3D renderer (rasteriser → z-buffer → Gouraud → textures → mat4), FPU/SSE state saved across context switches, VFS symlinks and permissions, and a very long run of coreutils, shell features and KATs. The N language reached v0.22 and P5 — a desktop window drawn from N (nwin). See Installation, Drivers, Syscalls, Process-Management, Filesystem, N-Language.

Version Change
v6.4.223 UEFI boot: GRUB-EFI ISO builder + GOP framebuffer pixel-format log + real-HW guide
v6.4.224 fix boot #PF on UEFI/real hardware: init_load_modules read the multiboot2 info as multiboot1
v6.4.225 fix real-hardware boot hang: bound the PS/2 mouse/keyboard + RTC polling loops with timeouts
v6.4.226 display rotation for portrait-mounted panels (rotate= cmdline, 90/180/270); GRUB menu picker
v6.4.227 poll the PS/2 mouse from the getters so the pointer works when IRQ12 isn't delivered on real hardware
v6.4.228 MouseKeys: drive the pointer from the keyboard (Alt+WASD move, Alt+Space/Q left, Alt+C/E right) for hardware with no mouse
v6.4.229 deflate: fixed-Huffman + LZ77 DEFLATE/zlib compressor + KAT
v6.4.230 ipcalc: IPv4 subnet calculator + KAT
v6.4.231 calc: 64-bit integer expression evaluator + KAT
v6.4.232 json: strict RFC 8259 JSON validator (iterative, stack-safe) + KAT
v6.4.233 gif: move the 16 KB LZW dictionary off the 4 KB kernel stack
v6.4.234 hardening: move oversized ls/auth buffers off the 4 KB kernel stack
v6.4.235 gzip: gunzip-compatible .gz wrapper over DEFLATE + KAT
v6.4.236 json: jq-lite value extractor (json get ) + KAT
v6.4.237 xbm: SHA-256 package integrity manifests + verify (tamper detection)
v6.4.238 screenshot: capture the framebuffer to a PPM image + KAT
v6.4.239 png: real PNG encoder (reuses deflate); screenshot writes .png + KAT
v6.4.240 auth: login brute-force lockout (rate-limit failed logins) + KAT
v6.4.241 xbm: dependency resolution (xbm deps: topological install order) + KAT
v6.4.242 clipboard: system text clipboard (clip copy/paste/clear) + KAT
v6.4.243 proc: kernel task-stack overflow canary + stackcheck + KAT
v6.4.244 xbm: install auto-resolves and installs dependencies (topological order)
v6.4.245 terminal: Ctrl+X cut / Ctrl+V paste wired to the system clipboard
v6.4.246 du: disk-usage tool (iterative subtree walk + human-readable sizes)
v6.4.247 notify: desktop notification toasts (compositor cards + notify command)
v6.4.248 disks/lsblk: enumerate disks + parse MBR partition table (nyxinstall groundwork)
v6.4.249 nyxpart: write an MBR partition table (create partitions for nyxinstall)
v6.4.250 mkfs: in-OS ext2 formatter (fsck-clean) + fix stale sector-cache on remount
v6.4.251 mkfs: multi-block-group ext2 (partitions up to 256MB, fsck-clean)
v6.4.252 cp -r: recursive tree copy (copy the OS onto a freshly-formatted disk)
v6.4.253 nyxinstall: one-command installer (partition + mkfs + mount + copy the OS)
v6.4.254 nyxinstall: write /boot/grub/grub.cfg (bootable-disk recipe proven in QEMU)
v6.4.255 nyxinstall installs a bootable kernel; fix mb2 module memory reuse corrupting large modules
v6.4.256 ata: batch the write-cache flush per operation (4 MB disk write ~120s -> ~0.4s)
v6.4.257 lspci: enumerate PCI/PCIe devices (finds the NVMe/AHCI disk controller for real-hardware install)
v6.4.258 nvme: bring up the controller (discover + map BAR + reset/enable + admin queue); map_mmio_range for high device MMIO
v6.4.259 nvme: admin command submission + IDENTIFY (model/serial + namespace capacity/LBA size)
v6.4.260 nvme: create an I/O submission/completion queue pair (set-features + create IO CQ/SQ)
v6.4.261 nvme: block read/write via the I/O queue + read-only nvme read <lba> hexdump
v6.4.262 nvme: block read/write helpers + disks/lsblk lists the NVMe namespace
v6.4.263 blockdev: route the installer (nyxpart/mkfs/mount + ext2 I/O) to the NVMe (n0)
v6.4.264 nyxinstall: install NyxOS to an NVMe disk (nyxinstall n0) end-to-end
v6.4.265 nyxgrub: in-OS GRUB install so a nyxinstall disk boots standalone (embed boot.img/core.img)
v6.4.266 nvme: batch multi-block I/O with a PRP list - nyxinstall ~1 min -> 0.3 s
v6.4.267 gpt: in-OS UEFI GPT writer/parser (nyxgpt), sgdisk-clean
v6.4.268 fat: in-OS FAT32 ESP formatter (nyxfat) - /EFI/BOOT populated
v6.4.269 fat: write a real GRUB x86_64-efi loader to the ESP (nyxfat)
v6.4.270 nyxinstall --uefi: install a UEFI-bootable disk (GPT+ESP+ext2), boots under OVMF
v6.4.271 nvme: flush the write cache after installs (blk_flush) - real SSDs lose cached writes on power-off
v6.4.272 nyxverify: read back an installed disk kernel (ext2 + raw) to check ELF+multiboot2
v6.4.273 nvme writetest: scratch write+readback diagnostic for real-HW NVMe writes
v6.4.274 nvme persisttest: cross-power-cycle write persistence diagnostic (+VWC report)
v6.4.275 nvme: disable volatile write cache (write-through) so real-SSD installs survive power-off
v6.4.276 nvme: set FUA on every write so installs reach the medium on drives that ignore Flush/WCE
v6.4.277 strings: extract printable-character runs from a file (streaming, KAT'd)
v6.4.278 sha256sum: stream a file's SHA-256 digest (GNU format, KAT'd)
v6.4.279 factor: Pollard-rho for fast 64-bit factorization + isprime command
v6.4.280 elf: consolidate program-header-table bounds into elf_validate + rejection KAT
v6.4.281 docs: add SECURITY.md documenting the security model
v6.4.282 snprintf: fix %u/%lu/%llu 32-bit truncation + formatter KAT
v6.4.283 shell: bash-style history expansion (!!, !N, !-N) + KAT
v6.4.284 panic: stack-scan backtrace on the panic screen (addr2line trail)
v6.4.285 kfree: poison a block's header on free so a double-free is dropped, not re-coalesced
v6.4.286 nyxfetch: fastfetch-style redesign with a 16-colour palette-block footer
v6.4.287 name the compositor (Hemera) and terminal (Erebus), in the Nyx family with Selene
v6.4.288 vfs: KAT the path canonicaliser's dot/dotdot handling and root-containment
v6.4.289 hmac: HMAC-SHA256 command + RFC 4231 KAT
v6.4.290 shell: expand $VAR/${VAR} in execute_command (the GUI terminal path)
v6.4.291 arp: show the ARP cache (IPv4 -> MAC neighbours)
v6.4.292 slab: KAT the slab allocator (distinctness, integrity, reuse, size routing)
v6.4.293 pgrep/pkill: find and kill processes by name
v6.4.294 realpath: canonicalise a path (. and .. collapse, -e checks existence)
v6.4.295 docs: PROCESS.md - process model, scheduler, signals, job control
v6.4.296 netstat: show the TCP connection table (local/foreign/state)
v6.4.297 sed: literal string substitution (s/old/new/[g]) + KAT
v6.4.298 KAT the syscall pointer/length validators (user_ptr_ok/user_str_ok)
v6.4.299 totp: RFC 6238 authenticator codes from a Base32 secret
v6.4.300 shell: $((expr)) arithmetic expansion via calc_eval
v6.4.301 login: a live clock on the login screen (time + date)
v6.4.302 docs: FILESYSTEM.md - VFS, ramdisk, EXT2, /dev and /proc
v6.4.303 shred: overwrite a file with random data, optionally remove (-u)
v6.4.304 KAT the pipe ring buffer (wraparound, full, EOF, EPIPE)
v6.4.305 expr: length/substr/index string ops + arithmetic via calc_eval
v6.4.306 give Hemera (2.0) and Erebus (1.0) their own version numbers
v6.4.307 httpd: a one-request HTTP server (serve files from the VFS)
v6.4.308 Selene 1.0: give the browser its own version (nyxfetch + status bar)
v6.4.309 taskset: pin a process to a CPU (SMP affinity)
v6.4.310 vfsstat: break the node-pool census down by kind (measure #66's leak, not infer it)
v6.4.311 fmt: reflow prose to fill lines up to a width (word-repacking companion to fold)
v6.4.312 security: secure_zero (explicit_bzero) + wipe the login password from memory
v6.4.313 gunzip/zcat: decompress gzip files (complete the gzip round-trip in-OS)
v6.4.314 docs: TOOLCHAIN.md for the in-OS cc/xbm/TinyCC self-hosting toolchain
v6.4.315 mm: KAT the physical page allocator's refcount/COW invariants (#50/#53/#54 + net-zero)
v6.4.316 patch: apply a unified diff in place (fail-safe; completes diff/patch round-trip in-OS)
v6.4.317 time: report a command's wall-clock run time
v6.4.318 route: show the IPv4 routing table (route -n style)
v6.4.319 alias/unalias: bash-style command aliases in the shell
v6.4.320 nyxflex: 4-window showcase (matrix + lava + terminal/nyxfetch + DOOM), Hemera 2.1
v6.4.321 wav: play a WAV file through the SB16 (RIFF parser + KAT)
v6.4.322 identify: report an image's format and dimensions from its header
v6.4.323 uuid: generate random RFC-4122 v4 UUIDs from the CSPRNG
v6.4.324 editor: Ctrl+F incremental find (jump to next match)
v6.4.325 cut: KAT the pure line/list core (field ranges, open ends, suppress, char mode)
v6.4.326 Erebus: Up/Down command history recall (16-entry ring + KAT)
v6.4.327 xargs: build command lines from piped words (-n batching + KAT)
v6.4.328 comm + join: KAT the merge/relational cores (columns, cartesian, custom delim)
v6.4.329 timeout: run a command with a deadline, SIGKILL on overrun
v6.4.330 docs: TESTING.md - the in-kernel self-test/KAT battery and CI
v6.4.331 net: sockets yield (sleep) between polls instead of busy-spinning
v6.4.332 uptime: one-line time/uptime/process-count/load/CPUs summary
v6.4.333 convert: image format conversion (PNG/BMP/GIF/JPEG -> PNG/PPM)
v6.4.334 encrypt/decrypt: password-based file encryption (AES-128-GCM + PBKDF2)
v6.4.335 truncate: set a file's length (-s N/K/M/G, relative +/-)
v6.4.336 pstree: show processes as a parent->child tree
v6.4.337 shuf: print a file's lines in random order (Fisher-Yates + CSPRNG)
v6.4.338 editor: Ctrl+R find-and-replace (replace every match across the file)
v6.4.339 Erebus: Ctrl+R reverse-incremental history search
v6.4.340 mktemp: create a uniquely-named temp file/dir (CSPRNG template fill)
v6.4.341 /dev/urandom: serve from the CSPRNG, not a tick-seeded xorshift
v6.4.342 kernel: save FPU/SSE (XMM) state across context switches
v6.4.343 gfx: software triangle rasterizer (integer edge-function fill)
v6.4.344 gfx: z-buffer + barycentric depth for the triangle rasterizer
v6.4.345 gfx: Gouraud vertex-colour interpolation for the rasterizer
v6.4.346 gfx: perspective-correct texture mapping for the rasterizer
v6.4.347 gfx: 4x4 matrix + projection pipeline (mat4), completing the software 3D renderer
v6.4.348 poweroff/halt/shutdown: power the machine off via ACPI soft-off
v6.4.349 tcp: receive-window flow control, bound the recv buffer
v6.4.350 docs: SYSCALLS.md, the ring-3 system-call ABI reference
v6.4.351 vfs: symbolic links (ln -s / readlink), depth-bounded resolve
v6.4.352 vfs: chmod + file permissions (read-only enforcement)
v6.4.353 pr: paginate a text file into pages with headers
v6.4.354 user-space window syscalls 57-60: create/destroy/present/poll_event (#77 rung 1)
v6.4.355 wintest: a ring-3 app opens a real desktop window via win syscalls
v6.4.356 dns: factor the A-record parser + a hostile-packet regression KAT
v6.4.357 test/[ + true + false: POSIX conditionals for shell && / || chains
v6.4.358 nproc: print the online CPU count for -j$(nproc) scripting
v6.4.359 ac97: PCI probe + detection (driver rung 1)
v6.4.360 ac97: codec bring-up (reset, ready-wait, vendor id, volume, 44.1kHz)
v6.4.361 ac97: BDL/DMA PCM playback (a 440Hz tone plays through the bus-master engine)
v6.4.362 ac97: play WAV through the AC97 DMA backend (prefers AC97, falls back to SB16)
v6.4.363 editor: name it Mnemosyne (goddess of memory), shown in nyxfetch + the window title

See also

  • Home - what the current release contains
  • Architecture - the system these releases built
  • Contributing - the versioning and release conventions

External resources

Clone this wiki locally