Skip to content

Releases: byteshiftlabs/thunderos

ThunderOS v0.10.0 - System Control

09 Apr 18:43

Choose a tag to compare

Summary

ThunderOS v0.10.0 publishes the System Control milestone from main. This release adds graceful shutdown and reboot support from user space and includes the release-hardening work needed for the public ThunderOS repository.

Changes

  • Added sys_poweroff() and sys_reboot() together with the poweroff and reboot userland utilities
  • Added SBI SRST, legacy SBI, and QEMU test-device fallback paths for reliable shutdown and reboot on the supported QEMU environment
  • Hardened VirtIO, ext2, signals, errno handling, process isolation, and build/test workflows since v0.9.0
  • Added SECURITY.md, CodeQL, dependency review, and pinned documentation dependencies for the public release path
  • Aligned release metadata, documentation, and runtime banners to v0.10.0

Verification

  • make clean && make -j2 && make test
  • make -C docs clean html SPHINXOPTS='-W --keep-going'

ThunderOS v0.9.0 - Synchronization

04 Dec 16:27

Choose a tag to compare

ThunderOS v0.9.0 - Synchronization

This release adds blocking I/O and synchronization primitives to ThunderOS.

Features

Wait Queues

  • Core sleep/wakeup mechanism for blocking I/O
  • Integrated into pipe read/write for proper blocking behavior
  • Processes sleep when pipe is empty (read) or full (write)

Mutexes & Semaphores

  • mutex_t with lock/unlock/trylock operations
  • semaphore_t with wait/signal/trywait operations
  • Owner tracking for mutexes

Condition Variables

  • cond_t for thread coordination
  • Wait atomically releases mutex and sleeps
  • Signal wakes one waiter, broadcast wakes all

Reader-Writer Locks

  • rwlock_t allowing multiple concurrent readers or one exclusive writer
  • Writer priority to prevent starvation

New Syscalls (16 total)

Category Syscalls
Mutex SYS_MUTEX_CREATE, SYS_MUTEX_LOCK, SYS_MUTEX_TRYLOCK, SYS_MUTEX_UNLOCK, SYS_MUTEX_DESTROY
Condition Variable SYS_COND_CREATE, SYS_COND_WAIT, SYS_COND_SIGNAL, SYS_COND_BROADCAST, SYS_COND_DESTROY
RWLock SYS_RWLOCK_CREATE, SYS_RWLOCK_READ_LOCK, SYS_RWLOCK_READ_UNLOCK, SYS_RWLOCK_WRITE_LOCK, SYS_RWLOCK_WRITE_UNLOCK, SYS_RWLOCK_DESTROY

Test Programs

Test Result
mutex_test 8/8 PASS
condvar_test All PASS
rwlock_test 7/7 PASS

Release Criteria Met

  • ✅ Blocking I/O works properly with wakeup mechanisms
  • ✅ Pipes block readers when empty, writers when full
  • ✅ Mutex/semaphore primitives functional
  • ✅ No busy-waiting in kernel

ThunderOS v0.8.0 - Compatibility

03 Dec 22:43

Choose a tag to compare

Version 0.8.0 - Compatibility

Major release with POSIX compatibility features.

Job Control & Signals

  • Process groups and sessions
  • Background processes with &, fg, bg, jobs
  • Ctrl+C sends SIGINT, Ctrl+Z sends SIGTSTP

I/O & Shell

  • I/O redirection (>, <, >>)
  • Pipes (cmd1 | cmd2)
  • Command history (up/down arrows)
  • Tab completion
  • Shell scripting support

Filesystem & POSIX

  • ext2 file/directory removal
  • Relative path resolution
  • Environment variables
  • File permissions and ownership (chmod, chown)

Graphics Console

  • Framebuffer console with VirtIO GPU
  • Bitmap font rendering (8x16)
  • GPU-backed virtual terminal

Bug Fixes

  • Fixed nested trap sscratch corruption causing instruction page fault

ThunderOS v0.7.0 - Virtual Terminals and VirtIO GPU 2D Driver

29 Nov 23:01

Choose a tag to compare

What's New

This release adds a virtual terminal system with 6 independent shells (VT1-VT6), switchable via ESC+1-6.

Key Features

  • Virtual Terminals: 6 VTs with ESC+1-6 switching
  • VirtIO GPU 2D driver: 800×600 framebuffer support
  • 4 new syscalls: gettty, settty, getprocs, uname
  • 6 new utilities: ps, uname, uptime, whoami, tty, kill
  • Per-terminal input buffers and process isolation
  • Refactored shell (ush.c)

Stats

  • System calls: 32 → 35
  • Shell commands: 18 → 23

See CHANGELOG.md for full details.

ThunderOS v0.6.0 - User Shell

28 Nov 23:12

Choose a tag to compare

ThunderOS v0.6.0 - User Shell

This release introduces significant improvements to the test infrastructure, code quality, and developer experience.

🎨 Highlights

  • Clean Code Refactoring: Major refactoring of kernel main with helper functions and named constants
  • Improved Build Output: Colorful, categorized build output for userland programs
  • CI Pipeline Fixes: Resolved TERM environment variable issues for non-interactive environments
  • Test Infrastructure: Added CI mode detection for reliable automated testing

✨ New Features

  • User shell with interactive command support
  • ELF binary loading and execution
  • Comprehensive userland programs (cat, ls, pwd, mkdir, rm, etc.)

🔧 Improvements

  • Refactored kernel/main.c with 8 static helper functions
  • Replaced magic numbers with named constants
  • Added TERM environment variable handling to test scripts
  • Improved CI workflow with duplicate output removal
  • Enhanced build script with visual progress indicators

📚 Documentation

  • Updated CHANGELOG with detailed v0.6.0 notes
  • Updated ROADMAP with release status
  • Added code quality and testing documentation

🛠️ Technical Changes

  • Test runner now detects CI mode automatically
  • Build output categorized by program type (shell, utilities, test programs)
  • Removed backup files and dead code

Full Changelog: v0.5.0...v0.6.0

ThunderOS v0.5.0 - Communication

22 Nov 00:08

Choose a tag to compare

🎉 ThunderOS v0.5.0 - Communication

This release introduces process communication capabilities to ThunderOS, enabling multi-process applications through fork(), pipes, and signals.

✨ Highlights

Fork System Call

  • Complete process forking with full memory isolation
  • Parent receives child PID, child receives 0
  • Independent address spaces with copy-on-write semantics
  • Proper trap frame and page table duplication

Pipe-Based IPC

  • Non-blocking anonymous pipes for inter-process communication
  • 4KB circular buffer per pipe
  • sys_pipe() syscall for pipe creation
  • read()/write() operations on pipe file descriptors

Signal Handling

  • SIGCHLD signal sent when child process exits
  • waitpid() blocks parent until child terminates
  • Process reaping to prevent zombie processes

🐛 Bug Fixes

  • Fixed trap frame preservation across context switches
  • Fixed child process return values (child now correctly returns 0)
  • Fixed page table switching order in scheduler (moved after context_switch_asm)

📚 Documentation

  • Added comprehensive sys_fork() documentation to syscalls.rst
  • Added complete pipe IPC documentation (pipes.rst)
  • Updated CHANGELOG.md with all v0.5.0 changes
  • Marked ROADMAP.md v0.5.0 criteria complete

✅ Testing

  • DMA Tests: 10/10 passing
  • Memory Isolation Tests: 15/15 passing
  • Boot: Clean with no debug output
  • Userland: fork_test and pipe_test validate functionality

⚠️ Known Limitations

  • Pipes are non-blocking (return EAGAIN when empty)
  • No pipe capacity limits enforced yet
  • Signal handling limited to SIGCHLD only
  • Blocking I/O deferred to v0.10.0

📦 Syscalls Added

  • sys_fork() - Fork current process
  • sys_pipe() - Create anonymous pipe pair

See CHANGELOG.md for complete details.

ThunderOS v0.4.0 - Persistence

11 Nov 13:00

Choose a tag to compare

ThunderOS v0.4.0 - "Persistence"

Fourth release of ThunderOS featuring persistent storage capabilities with VirtIO block device driver, ext2 filesystem, and ELF program loader.

� Highlights

  • VirtIO Block Driver: Modern MMIO interface with 64-bit addressing, DMA integration
  • ext2 Filesystem: Full read/write support with 4KB blocks, files up to ~4MB
  • Virtual Filesystem (VFS): Abstraction layer for multiple filesystem types
  • ELF64 Loader: Execute RISC-V programs from disk with memory isolation
  • Interactive Shell: Commands for ls, cat, and program execution
  • Comprehensive Documentation: Complete internals docs for all new components

📦 New Components

Storage Stack

  • kernel/drivers/virtio_blk.c - VirtIO block device driver (525 lines)
  • kernel/fs/ext2_*.c - ext2 filesystem implementation (2,250+ lines)
  • kernel/fs/vfs.c - Virtual Filesystem layer (499 lines)
  • kernel/core/elf_loader.c - ELF64 program loader (216 lines)
  • kernel/core/shell.c - Interactive shell (358 lines)

User Programs

  • userland/hello.c - Hello world program
  • userland/cat.c - File display utility
  • userland/ls.c - Directory listing utility

🔧 Technical Specifications

  • VirtIO: Modern MMIO at 0x10008000, 256-entry descriptor rings, DMA-capable
  • ext2: 4KB blocks, 128/256-byte inodes, direct + single indirect blocks
  • ELF: ELF64 RISC-V executables, isolated page tables, NX protection
  • VFS: 64 file descriptors, mount point management, POSIX-like API

📖 Documentation

New comprehensive documentation:

  • VirtIO Block Driver Internals (docs/source/internals/virtio_block.rst)
  • ext2 Filesystem Implementation (docs/source/internals/ext2_filesystem.rst)
  • VFS Architecture (docs/source/internals/vfs.rst)
  • ELF Loader (docs/source/internals/elf_loader.rst)

🚀 Usage

# Build ThunderOS
make clean && make

# Create disk image with ext2 filesystem
./build_disk.sh

# Run with VirtIO block device
make qemu-disk

In ThunderOS shell:

ThunderOS> ls /
ThunderOS> cat /test.txt
ThunderOS> /bin/hello

✅ Testing

All tests passing:

  • VirtIO I/O operations (100-600 polling iterations)
  • ext2 read/write operations
  • ELF program loading and execution
  • Shell commands (ls, cat, program execution)
  • GitHub Actions CI with disk image creation

📊 Statistics

  • Total Lines Added: ~10,500
  • New Files: 54
  • Components: 4 major subsystems (VirtIO, ext2, VFS, ELF)
  • Documentation: 4 comprehensive RST files (3,200+ lines)

🔗 Links

🎓 What's Next (v0.5.0 - "Communication")

  • Inter-process communication (pipes)
  • Shared memory support
  • Signals (SIGKILL, SIGTERM, etc.)
  • VirtIO network driver
  • Basic TCP/IP stack

Full Changelog: v0.3.0...v0.4.0

ThunderOS v0.3.0 - Memory Foundation

10 Nov 14:33

Choose a tag to compare

ThunderOS v0.3.0 - Memory Foundation

Release Date: November 10, 2025

Overview

Advanced memory management infrastructure for device drivers, including DMA allocation, address translation, and memory barriers. This release builds the foundation for VirtIO device drivers in v0.4.0.

✨ New Features

DMA Memory Allocator

  • Physically contiguous memory allocation for device DMA
  • Address tracking (physical and virtual)
  • Memory zeroing support
  • Region statistics and validation

Memory Barriers

  • Complete RISC-V fence instruction suite
  • Full, read, write, and I/O barriers
  • Data synchronization barriers
  • Instruction synchronization (fence.i)

Enhanced Address Translation

  • Virtual-to-physical translation with page table walking
  • Physical-to-virtual helpers
  • Kernel virtual address utilities
  • Error handling for invalid addresses

Testing & Documentation

  • 10 comprehensive tests for DMA, barriers, and translation
  • Exhaustive Sphinx documentation
  • API reference and usage examples

📊 Release Criteria (All Met)

  • ✅ DMA allocator works reliably
  • ✅ Virtual-to-physical translation accurate
  • ✅ Memory barriers implemented for device I/O
  • ✅ Foundation ready for VirtIO device drivers

🔧 Technical Details

  • DMA Region Tracking: Linked list with magic number validation
  • Memory Barriers: RISC-V fence instructions (rw, r, w, io)
  • Address Translation: 3-level Sv39 page table walking
  • Platform: QEMU virt machine (tested with 128MB-512MB RAM)

📦 Toolchain Updates

  • Switched to riscv64-unknown-elf-gcc (bare-metal toolchain)
  • Updated Dockerfile for CI/CD compatibility
  • Fixed GitHub Actions build issues

See CHANGELOG.md for complete details.

ThunderOS v0.2.0 - User Space

09 Nov 18:45

Choose a tag to compare

🎉 ThunderOS v0.2.0 "User Space" - RELEASED!

Release Date: November 9, 2025

🚀 Major Milestone

Complete user-mode support with memory protection, system calls, and exception handling.

✨ Key Features

  • User-mode processes with privilege separation (U-mode)
  • 13 system calls fully implemented and tested
  • Memory isolation between processes using Sv39 paging
  • Exception handling - graceful user process termination
  • Automated testing with 6/6 tests passing

📋 System Calls

write, exit, getpid, sleep, getppid, getuid, getgid, setuid, setgid, getcwd, chdir, time, sbrk

🧪 Testing Results

  • ✅ User programs run safely in unprivileged mode
  • ✅ Memory protection enforced (page faults handled gracefully)
  • ✅ System calls work reliably
  • ✅ User exceptions don't crash the system

📁 Files

    • Kernel binary
    • Raw binary

*Ready for v0.3.0 "Persistence"push origin release/v0.2.0 🎯

ThunderOS v0.1.0 - First Boot

01 Nov 18:12

Choose a tag to compare

See CHANGELOG.md for details.