Skip to content

chore: release v0.0.1 - #1

Open
MagicalTux wants to merge 1 commit into
masterfrom
release-plz-2026-07-12T06-10-41Z
Open

chore: release v0.0.1#1
MagicalTux wants to merge 1 commit into
masterfrom
release-plz-2026-07-12T06-10-41Z

Conversation

@MagicalTux

@MagicalTux MagicalTux commented Jul 12, 2026

Copy link
Copy Markdown
Member

🤖 New release

  • nixvm: 0.0.0 -> 0.0.1
Changelog

0.0.1 - 2026-08-05

Fixed

  • (wasm) remove */ from Terminal doc — it broke the generated pkg/nixvm.js

Other

  • readlink on the mount root is EINVAL, not EISDIR — fixes realpath
  • broken-pipe write end reports POLLOUT|POLLERR, not POLLERR alone
  • encode a signal death as WIFSIGNALED, not WIFEXITED
  • a pipe at EOF reports POLLHUP alone, not POLLHUP|POLLIN
  • honor O_NONBLOCK on reads — empty non-blocking pipe returns EAGAIN
  • F_GETLK reports the region unlocked; F_SETLK/OFD locks granted
  • /proc/self/{comm,cmdline,stat,status,fd} report the live program
  • prctl NO_NEW_PRIVS / PDEATHSIG / DUMPABLE round-trip; getpriority ABI
  • raise SIGPIPE on writes to a reader-less pipe/socket
  • honor EPOLLONESHOT (disarm after one event)
  • map rt_sigqueueinfo/rt_tgsigqueueinfo (sigqueue) to delivery
  • support AF_UNIX SOCK_DGRAM (syslog /dev/log, unix-dgram IPC)
  • renameat2 flags, F_GETPIPE_SZ, O_TMPFILE fallback
  • report non-zero uptime and free RAM
  • honor O_APPEND — writes go to end-of-file
  • implement chmod/fchmod (were no-ops) so mode changes stick
  • access(X_OK) checks execute bits; implement SEEK_DATA/SEEK_HOLE
  • page-round st_blocks (du/ls -s), matching tmpfs
  • make /proc/self/{exe,cwd,root} resolve to live per-task state
  • report nixvm's own core count, not the host's (sysfs leak)
  • track FD_CLOEXEC (close on exec) and honor F_DUPFD's minimum
  • deliver signals through the fd (was a never-readable stub)
  • implement utimensat (set file mtime) instead of a no-op
  • getitimer/setitimer honor which (VIRTUAL/PROF read back disarmed)
  • implement alarm/setitimer/getitimer (ITIMER_REAL → SIGALRM)
  • implement rt_sigtimedwait (sigwait/sigtimedwait/sigwaitinfo)
  • honor the ppoll/pselect6/epoll_pwait signal mask
  • POSIX process-group targeting (0 / -1 / -pgrp) + negative-pid fix
  • fill rusage, honor the pid filter, accumulate children CPU
  • real nanosleep + per-task CPU accounting (clock_gettime/getrusage/times)
  • report real CPU time, consistent with clock_gettime
  • full compliant clock set, correct per-clock semantics
  • let the software backend reach the vDSO (any libc, not just KVM)
  • interrupt every blocking syscall correctly (SA_RESTART vs EINTR)
  • wire ISIG signal generation (^C/^/^Z → fg process group)
  • pseudo-terminal support (/dev/ptmx + /dev/pts/N)
  • virtual tty — forward terminal ioctls to the host tty
  • general socket/network ioctls (SIOCGIF*, FIONREAD, SIOCOUTQ)
  • implement the fd-flag ioctls (FIONBIO/FIOCLEX/FIONCLEX)
  • edge-trigger EPOLLET so a signalled eventfd stops the loop spinning
  • clock vDSO — serve clock_gettime/gettimeofday without a syscall
  • service clock reads lock-free (no big sh lock)
  • implement fcntl(F_SETFL) O_NONBLOCK — claude completes its request
  • Revert "poll: honor EPOLLET (edge-triggered) in epoll_wait"
  • poll for host I/O instead of declaring deadlock while a connection is live
  • honor EPOLLET (edge-triggered) in epoll_wait
  • install host egress in the nixvm run path (NIXVM_NET=host)
  • fix two tests double-freeing map's data frames
  • run signal handlers at CPL3 — fixes SMP fork/signal memory corruption
  • don't double-apply the syscall result — fixes the interpreter
  • serialize runs of a shared (CLONE_VM) address space — fixes SMP claude
  • decouple guest virtual space from the physical RAM pool + lazy pool — claude runs
  • async signal delivery to handlers + real rt_sigsuspend + SIGCHLD-on-exit fixes the & wait livelock
  • B5 — peel eventfds/timerfds/epolls onto Kernel.pollfds
  • B4 — peel pipes onto its own Kernel.pipes lock
  • B3 — peel net onto its own Kernel.net lock
  • B2 — peel mounts onto its own Kernel.vfs lock
  • B1 — extract Shared behind one coarse Mutex; servicing takes &self
  • refresh module doc for the ServiceCtx extraction (Phase A)
  • extract per-task servicing state into a passed-in ServiceCtx (Phase A)
  • per-address-space kernel stack — fixes SMP fork/exec corruption
  • TLB shootdowns for host-side page-table edits (fork/CoW/munmap/mprotect)
  • demand paging + faithful triple-fault decode; runs the full JSC engine
  • retire the flat identity model — shared frame pool + per-process page tables
  • real x86-64 AddrSpace over the Phase-1 frame pool
  • physical RAM pool + 4 KiB frame allocator (MMU refactor, Phase 1)
  • Send bounds on the fstool-backed mount so the feature build compiles
  • service syscalls in place under a big kernel lock — kill the per-syscall hand-off
  • run KVM_RUN lockless for true intra-process parallelism
  • real time-based preemption for both vcpu backends
  • resolve /proc/self/fd/ against the live fd table
  • MADV_DONTNEED preserves file-backed (ELF segment) pages
  • gated load-verify + open tracing debug aids
  • preemptive time-slicing (NIXVM_SLICE) so a busy thread can't starve others
  • guest-debug watchpoints + execute breakpoints (NIXVM_WATCHPOINT/NIXVM_EBP)
  • NIXVM_NOWX debug gate to force uniform RWX
  • accurate #PF handling, CPL3 restore, AVX state, grow-down stack
  • enforce per-page W^X — guest page tables from the protection map
  • enforce NX on instruction fetch (no more executing writable pages)
  • synchronous signal delivery (SIGSEGV/SIGILL/SIGBUS to guest handlers)
  • real mmap allocator, sched_yield, 8 MiB stack, 64 GiB KVM ceiling
  • dependency-free soft-float — true 80-bit x87 + MXCSR directed rounding
  • implement the x87 F-row transcendentals (FPREM/FSIN/FYL2X/…)
  • share the anonymous-mmap arena per address space, not per task
  • implement the SSE ops V8's JIT emits — TurboFan runs
  • node runs on the software interpreter (POP r/m + IMUL/shift flags)
  • add PALIGNR and PTEST (0F 3A 0F / 0F 38 17)
  • syscall writes RCX←RIP and R11←RFLAGS, like hardware
  • fix imm16 decode length + add SSE/stack ops V8 exercises
  • share fd tables across threads + futex requeue + timer wakeups — node runs
  • record the node event-loop limitation (futex/epoll busy-spin)
  • bound the fd-cloexec loop — fcntl EBADF on closed fds + capped RLIMIT_NOFILE
  • Phase 5 dynamic linking is done — record the two large-program fixes
  • give upper and lower layers disjoint inode numbers
  • flush writable MAP_SHARED file mappings back to their file
  • record the broadened syscall coverage
  • broad syscall coverage — ~60 new syscalls across both arches
  • record host-egress (Phase 8) landing — apk works over the internet
  • host egress — apk update && apk add work over the real internet
  • surface a wasm panic instead of hanging at the prompt
  • flock + sendmsg/recvmsg — apk update runs to a clean network failure
  • don't panic on wasm32 — the browser terminal died on ls
  • pick the guest architecture (arm64 / x86-64) before booting the VM
  • x86-64 Alpine boots on the interpreter — xchg/AND/OR decode fixes
  • boot a full Alpine userland — per-arch stat, legacy syscalls, KVM retry fix
  • hardware backend for x86-64 guests — static glibc runs end-to-end
  • run stock static glibc binaries — arch_prctl TLS, brk fix, decode gaps
  • sync README/ROADMAP/Cargo for the HVF milestone + KVM readiness
  • default-on select() with interp fallback + static program e2e
  • implement HvfVcpu — EL0 execution, svc trap, syscall resume
  • Hypervisor.framework FFI + process VM + bring-up test
  • unify guest memory on one contiguous host-aligned region
  • page-granular copy-on-write with fault-driven privatization
  • export PWD=/ to match the shell's starting cwd
  • fix vfork clobbering the parent's address space


This PR was generated with release-plz.

@MagicalTux MagicalTux changed the title chore: release v0.0.0 chore: release v0.0.1 Jul 12, 2026
@MagicalTux
MagicalTux force-pushed the release-plz-2026-07-12T06-10-41Z branch 29 times, most recently from 4ff990e to 6b806fc Compare July 13, 2026 14:57
@MagicalTux
MagicalTux force-pushed the release-plz-2026-07-12T06-10-41Z branch 29 times, most recently from 12974a9 to 4992dec Compare July 23, 2026 02:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant