
CHANGELOG 0.1.1.md — Notepad
Added
SVFS2 as the new version of /disk's persistent filesystem, with a
primary/secondary superblock, a fixed metadata journal, a block bitmap, an
inode bitmap and an inode table with extents.
- A new
sync syscall and a userland sync command to force an explicit
checkpoint of the persistent state.
- Minimal networking over
rtl8139 + QEMU user-net, with ARP, IPv4,
ICMP echo request/reply, basic IPv4 UDP sockets and a minimal TCP client.
- An extended public ABI for devices and
ioctl, with the /dev/fb0,
/dev/input0, /dev/net0 and /dev/pcspk nodes.
- An initial fullscreen GUI with
gfx_* primitives, the internal gfxdemo demo
and the external sdk/gfxhello example.
- Minimal sound over the
PC speaker with a beep command.
- The first large external port in
sdk/doomgeneric, used as a practical
milestone for external graphical apps over the system's ABI.
- An initial POSIX/libc layer for SDK v1 with public standard headers:
unistd.h, fcntl.h, stdio.h, stdlib.h, string.h, dirent.h,
sys/stat.h, sys/socket.h, netinet/in.h, arpa/inet.h, time.h and
friends.
- A new
subsystems/posix/sdk/v1/runtime/posix.c runtime for external apps,
with basic stdio, DIR*, a simple arena-style heap, conversions, string
helpers, time and client sockets.
- New syscalls/base ABI for
getpid, stat, fstat, chdir and getcwd.
- An external smoke test
sdk/posixsmoke, compiled only against standard
headers.
- A
keytest utility to inspect keyboard events over /dev/input0 in fullscreen
and validate key down/up, keycode and ascii.
FB_IOC_PRESENT_REGION as an extension of the graphics ABI to present only a
region of the framebuffer from userland.
Changed
- The VFS layer now centralizes path normalization and raised the internal path
capacity to
256 bytes, so process, cwd and filesystem operations share a
single canonical resolution.
- The host tooling over
build/disk.img (build.ps1, tools/build-user.ps1
and tools/UserAppCommon.ps1) stopped writing SVFS1 and moved to creating
and installing directly onto SVFS2 images.
/disk's persistent paths stopped depending on path names as their on-disk
identity and moved to being mounted from stable inodes cached in kernel memory.
- The kernel now resolves relative paths against a per-process
cwd, so open,
exec, spawn and filesystem operations share the current directory.
- The
PS/2 keyboard stack was hardened with a more robust controller init,
decoding decoupled from TTY/UI, and better support for AltGr, locks and
special keys.
sdk/doomgeneric stopped depending on its private set of standard headers and
moved to consuming the SDK's public layer, reducing savanxp_compat.c to
port-specific glue.
- The shared runtime's
gfx_* primitives were optimized to work with contiguous
spans/rectangles and reduce the per-frame drawing cost.
gfxdemo, sdk/gfxhello and keytest stopped refreshing the whole screen on
every iteration and now use dirty regions or on-demand redraws to improve
fluidity in fullscreen.
sdk/doomgeneric's backend replaced per-pixel division-based scaling with
cached row expansion, lowering the per-frame CPU cost during fullscreen
rendering.
- The main documentation and the SDK reference were updated to reflect the
available POSIX/libc surface and its practical limits.
Known limits
- The recent validation of the jump to
SVFS2 covers a full build and host-side
verification of the build-user flow, but does not yet include reboot/replay
smoke tests inside QEMU.
- If journal or base metadata recovery fails at mount time, the volume goes
offline; there is no read-only degraded mode yet.
free() does not recycle memory yet; the userland allocator is still
arena/bump style.
DIR->d_type is filled in by a best-effort stat() in userland.
setsockopt/getsockopt cover only basic client flags and timeouts.
- Depending on the host and QEMU's keyboard capture,
PrintScreen may not reach
the guest as a dedicated key and may require Alt+PrintScreen for manual
testing.
- The recent validation of
v0.1.1 is host-side; the new POSIX smoke has not
been run inside QEMU in this batch.
Version 0.1.12026-03-100 changes