danielandClaude Fable 5 75184e0651 feat: process exit codes, posix_spawn, 4 KiB command lines
Groundwork for the GCC driver: a compiler driver must spawn cc1/as/ld
and know whether each stage succeeded.

Kernel: the scheduler keeps an exit-code ledger (pid -> code; pids are
monotonic so entries never alias), published during teardown right
before waiters wake. SYS_EXIT records main()'s return value, SYS_KILL
records 256+SIGKILL, and the exception handler records 256+signal
mapped from the fault vector (#PF/#GP -> SIGSEGV, #DE/FP -> SIGFPE,
#UD -> SIGILL). SYS_WAITPID now returns the code: 0..255 for a normal
exit, 256+signal for a violent death. Process args grow from 256
bytes to 4 KiB (cc1 invocations do not fit in 256), with crt1 now
parsing up to 255 argv entries from a static buffer.

libc: new spawn.h with posix_spawn/posix_spawnp over SYS_SPAWN -
libiberty's pex layer has a posix_spawn backend, so GCC's driver works
without fork. argv is joined into the kernel args string (spaces in
arguments rejected; no kernel quoting), envp is not transferred, and
non-empty file actions fail loudly with ENOTSUP until the kernel can
redirect stdio on spawn. waitpid() now decodes real POSIX status and
the sys/wait.h macros distinguish exited from signaled children.

Shell: prints [exit code N] after nonzero exits and [terminated by
signal N] for killed or crashed children.

Verified on the OS: cat on a missing file reports exit code 1; a
window-close (clean exit 0) stays silent as it should.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-16 16:59:17 +02:00
2026-07-09 11:32:27 +02:00
2025-04-17 21:54:25 +02:00
2026-02-18 15:13:53 +01:00
2026-03-04 14:42:51 +01:00
2026-04-15 17:49:07 +02:00
2026-04-17 15:26:27 +02:00
2026-07-08 18:31:32 +02:00

The Montauk Operating System

MontaukOS is an operating system written in modern C++. It runs on bare metal and supports various applications, including DOOM, a Wikipedia client, and standard desktop utilities.

MontaukOS screenshot

Features

  • Modern preemptive multitasking kernel
  • Multi-user userspace with desktop environment and command line
  • PCI-e support and drivers for Intel GPU and e100e Ethernet for graphics and networking on real hardware
  • ACPI support with AML interpreter, including S3 sleep and ACPI shutdown
  • Support for USB including input devices (keyboard/mouse), along with PS/2 input support
  • Support for Intel High Definition (HDA) audio devices
  • Userspace and kernel audio support
  • Support for (some) Intel Bluetooth devices, userspace Bluetooth management app
  • Support for the GPT partition table
  • VFS using numbered drive identifiers with support for ext2 and FAT32 filesystems
  • Support for AHCI and NVMe SSD drives
  • Support for UEFI Runtime Services, including power management calls (shutdown/reboot)
  • Customizable desktop environment with 12+ graphical apps, including a terminal emulator, file manager, Wikipedia client, weather app, DOOM, and more
  • Modern icon pack (Flat Remix) used in desktop environment
  • Support for TrueType font, JPEG image, and SVG icon rendering
  • Networking including TCP/IP stack, UDP, DNS, DHCP and TLS via BearSSL
  • Command-line IRC client
  • Live viewable kernel log from GUI
  • Mandelbrot set renderer
  • PDF viewer app with full support for text (inc. baked-in TrueType fonts) and some graphics
  • Userspace Music app with support for MP3 and WAV files
  • 2D game engine and demo game with fantasy tileset

Goal

The goal of the MontaukOS project is to create a modern and unique operating system that runs on both emulators and on real hardware. The kernel and included userspace applications are written in modern C++.

History and methodology

Development started in early 2025, as a hand-written toy kernel. The first published Git commit was on Feb 27, 2025. In early 2026, Claude Opus 4.6 began being used to accelerate development of the kernel and userspace.

S
Description
The Montauk Operating System
Readme
52 MiB
Languages
C++ 53.9%
C 41.6%
HTML 2.3%
Makefile 0.8%
Roff 0.6%
Other 0.7%