-
-
Notifications
You must be signed in to change notification settings - Fork 5
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
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.
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) |
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) |
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 |
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) |
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 |
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 |
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 |
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 |
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 |
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-align — center/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: (and  / ) 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&A → Q&A in the tab) |
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 |
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. |
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 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 |
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 |
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 |
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 |
- Home - what the current release contains
- Architecture - the system these releases built
- Contributing - the versioning and release conventions
- Releases - GitHub
- Commit history - GitHub
NyxOS v6.4.363 · GPL v2 · GitHub · uselessalter on Discord · nyxos@inbox.lv
NyxOS Wiki
Getting started
Kernel
Storage & network
Graphics & apps
Userspace
HOWTO
- HOWTO-Add-a-system-call
- HOWTO-Write-a-userspace-program
- HOWTO-Add-a-shell-command
- HOWTO-Add-a-GUI-application
Reference
- Syscall-Reference
- Command-Reference
- Hardware-Reference
- Format-Reference
- Kernel-Data-Structures
- Source-Tree-Reference
Project