A new kernel and operating system, written in Odin. The system boots under QEMU to a graphical desktop with a console, a system tool and demo programs.
The boot image is not built: the tiles are the modules of module_builds that it holds, with no size and no color.
Measured
Kernel entries in one second, with 1, 2 and 4 programs that each take the locks of their own objects
locks: kernel entries in one second, each locker on its own objects: 1 locker 5634346, 2 lockers 10322773, 4 lockers 20668160
Reads of the time in one second from the time page, with no kernel entry
clock: the time page: 674004030 reads in one second, 0 kernel entries for one million reads
Wakes in one second of two threads that wake each other on a busy machine, under the strategy EEVDF
scheduler: EEVDF: two threads that wake each other, a spinner on each processor: 133899 wakes in one second (53373 turns ended on the processor of the waker, 190 by an interrupt, 702 moves); a thread that sleeps 2 ms among 8 spinners: late by 863 us in the middle, 1520 us at worst; 8 spinners of one weight: shares 11.6 % to 13.5 %, work 6205 million in one second; 12 spinners, weights 1 2 4: a spinner of each weight 4.8 %, 7.5 %, 12.6 %; 60675 turns ended by a wake, 2111 moves, one pick 190 ns, one preemption by an interrupt 4908 ns in the kernel
Pictures of the screen that the machine test takes under QEMU; the captions are those of README.md. A picture opens at full size.
The desktop
The desktop: console, life, monitor and plasma. The title bar of the window in front goes from blue to a darker blue; the others are quietThe launcher: the key super opens it, the list narrows at each typed key, Enter starts the chosen programThe menu of the programs: the button of the bar opens it
The console
The completion list of the console: "mcnt" matches monitor.count by a fuzzy match, the matched letters lit, each name with what it is and its signatureThe consoleThe commands of the console
The monitor and the developer tool
A call from the host: kerneltool call "monitor.programs()" reaches the program remote through its endpoint, which makes the isolated call and sends the typed result back; the counts, the connections that the root service made, and the last callsA developer tool: the address space of the console as a band scaled by pages, with each gap folded, the table of its mappings with the pages that have a frame, its modules, its threads with the state of the scheduler; a sample each 250 ms with its costThe same tool on a program that stopped on a fault: the stack trace as module + offset, near the export before it
Isolation, rights and budgets
An isolated call: a module that faults or loops stops aloneA program with a part of the rights of two handles: the kernel does four operations and refuses fiveA budget pays for each page and each thread; the kernel refuses when it cannot pay, and each page returns
The network
The network: a virtio network device in a program, a network service with ARP, IPv4, ICMP echo and UDP, and an endpoint with a grant of one remote; ten cases with their answers, and the measuresTCP in the program: server holds a listen grant on the port 80 and serves one table of connections from one thread; the peer of the test drops, reorders and repeats frames, resets a connection, opens 16 at once, and keeps 32 connections with no progress, which the server ends; the table shows the state, the bytes, the round trip and the congestion window of each connectionA simple HTTP/1.1 server: keep-alive, pipelining, HEAD and each refusal status, the pages of its private store that the console puts with server.put; the connections and the last requests, live
The storage
The storage service: the private store of the console, its limit of blocks, the stores that the person sees, and a grant that the person revokesA persistent program after a restart of the machine: notes finds its note and its count of 1000 commits in its private storeAfter a loss of power during the write of a root: the storage service takes the root before it, and notes finds its note and its count
The fonts
The text of the system is a vector font with subpixel bands (Paper Mono by default); the program settings changes it to Spleen 8x16 and back while every window runsSix candidate fonts beside Spleen 8x16, each from a glyph cache in fixed point, and a word of each enlarged
The newest release
0.86.0, 2026-11-12: 1 changes. 86 steps so far; each step is one tested commit on master.