Skip to content
Tags give the ability to mark specific points in history as being important
  • v0.7
    Release version 0.7
    
    New features and major improvements since v0.6:
    
    - Scheduler: replaced the MLFQ with an EEVDF proportional-share core, strict eligibility with sleeper-bonus clamp and slice knob, and idle-task stealing for SMP load balance.
    - USB: added USB core, XHCI host controller, HID class, bulk transfers, and a Mass Storage (BOT/SCSI) class driver.
    - Filesystems: clean-room read/write NTFS driver, ISO9660, ext4 64-bit/hard-link/truncate, FAT32 and NTFS rename, overlay modes, and inotify event delivery.
    - Security: TPM 2.0 (TIS/FIFO) driver; x86_64 hardware RNG entropy source.
    - Audio: stabilized HDA media playback, enabled HDA on riscv64 QEMU virt, and added a virtio-sound playback backend.
    - Native ABI: mlibc runtime support, checkpoint-based signal simulation, interruptible thread_sleep, cross-process kill, and path/cwd/checkpoint extensions.
    - Memory management: VMO moved into core with native VMAR backed by core mmap helpers, cgroup VMO page charging, and MAP_FIXED shadowing of the brk heap.
    - ppc64le: fixed task switch, radix PTE/process-table walk and byte order, user PC recovery for storage faults, ran the interactive mksh shell end to end, and ported the native ABI libc (liba20c) to ELFv2.
    - Networking: expanded e1000/e1000e device coverage.
    - Structure: split the VFS, ext4/NTFS/FAT32 drivers, console TTY line discipline, and mm/vm into focused units; added LICENSE/ACKNOWLEDGMENTS/THIRD_PARTY_NOTICES.
    
    Notable fixes and compatibility:
    - ELF: fixed pgdir leaks and preserved start info across dynamic exec.
    - Weston: bumped to the A20 libinput-seat adaptation.
  • v0.6
    Release version 0.6
    
    New features and major improvements since v0.5:
    
    - SMP: enabled multicore scheduling on 64-bit QEMU platforms, distributed work across CPUs, added remote TLB shootdown and shared address-space fault serialization.
    - Scheduler: introduced tokenized park/wake, CPU ownership tracking, task lifetime/pinning/blocking-point/signal-stop/timeout protocols, SMP runqueue preemption, and split the local runqueue selection lock.
    - Desktop: integrated the Wayland stack and booted into a full interactive Weston desktop; fbdev mmap, evdev Linux ioctls, signalfd4, and SCM_RIGHTS support.
    - Audio: added portable HDA audio with PCI class matching and QEMU audio support.
    - Drivers: dynamic class devices with x86 backends, verified portable NVMe data path, drivers aligned to the A20 standard driver model.
    - Userland: Fedora RISC-V glibc runtime bootstrap, validated Rust glibc runtime, usable Vim runtime, parallel user-space compilation.
    - Memory management: exec PT_LOAD on-demand loading fixes, page-cache fill and ext4 directory metadata serialization.
    
    Notable fixes and compatibility:
    - ABI: report a Linux-compatible kernel release; LoongArch exec argv fix.
    - VFS: correct tty input readiness reporting.
    - Networking: prevented cross-page socket reads from blocking.
    - Build: isolated extra package builds and headless runs.
  • v0.5
    Release version 0.5
    
    New features and major improvements since v0.4:
    
    - STM32F103: added MCU platform support with a kernel scheduler, preemptive scheduling, multi-process support, and power-saving modes.
    - Embedded peripherals: ESP8266 WiFi, BLE, touch screen, Xuanwu light/touch sensors, DHT11, IR NEC decoding, LED pad, and Live2D support; fat32lite merged into the kernel.
    - NOMMU: added support for MMU-less operation.
    - 32-bit architectures: added riscv32 and arm32 support.
    - GPU: implemented a GPU driver; enabled QEMU GUI on x86_64 and arm64 and fixed the VirtualBox GPU path.
    - Linux compatibility: SysV semaphore state/status, POSIX lock release on close, nonblocking pipe/FIFO semantics, proc fd symlink resolution, scheduler reset-on-fork, LoongArch page-permission faults.
    - Native ABI: strengthened native ABI behavior.
    - Build: Linux and macOS development support and compatible cross-toolchain detection.
    
    Notable fixes and compatibility:
    - Startup: fixed ARM and x86_64 early boot paths.
    - Filesystem: statfs path errors, stream reads across user pages, readlinkat path semantics, pipe fd-limit handling.
    - Userland: gettimeofday timezone validation, getrandom flag rejection, resource syscall selector validation.
  • v0.4
    Release version 0.4
    
    New features and major improvements since v0.3:
    
    - A20 Native ABI: realized and documented the native application binary interface.
    - x86_64 support: added support for the x86_64 architecture.
    - SMP multi-core: implemented SMP infrastructure with HAL abstraction.
    - Driver model: refactored and improved the driver framework.
    - FPU acceleration: enhanced FPU usage to speed up floating-point operations.
    - RISC-V TLB: optimized RISC-V TLB handling.
    - Init: implemented a better init process.
    - epoll: extended event polling support.
    - fastfetch: added fastfetch support.
    
    Notable fixes and compatibility:
    - Scheduler: fixed fork priority inheritance and aging for cyclictest/iozone.
    - Signals: per-thread signal masks, sigtimedwait timeout, tgkill validation, musl signal frame layout.
    - Futex: robust owner death handling.
    - Process/clone: clone3 validation, pidfd signal delivery, set_tid_address correctness.
    - Filesystem: ext4/ramfs/devfs updates, close_range, futimens, fchownat checks.
    - Networking: local socket backpressure, virtio_net TX deadlock prevention.
    - Memory: MAP_SHARED page-cache pin lifetime, fork/ext4 sleep-under-lock deadlocks.
    - Contest/LTP: expanded bounded LTP coverage, enabled more contest entries, fixed LTP syscall numbers and musl/glibc compatibility.
  • v0.3 Release: Release version 0.3
    Release version 0.3
    
    New features and major improvements since v0.2:
    
    - Networking: integrated lwIP, added VirtIO network support, socket APIs, and user tools including ping, wget, netstat, and UDP utilities.
    - Linux ABI: greatly expanded syscall coverage, including epoll, futex, eventfd, timerfd, BPF, xattr, memfd, IPC, scheduling, and namespace operations.
    - Process model: split process management into task, scheduling, fork, exec, exit, wait, PID, and signal subsystems.
    - Filesystems: expanded VFS behavior and added devfs, file-descriptor tables, pipes, page cache, file locks, inotify, and extended attributes.
    - Memory management: added page-fault handling, object caches, out-of-memory handling, and broader mmap support.
    - User environment: added infrastructure to build and run vim, git, GCC, binutils, and related libraries.
    - Contest/LTP: simplified the contest runner and enabled substantially more Linux Test Project cases.
    
    Notable fixes and compatibility:
    - Dynamic linking: improved runtime setup and library loading on supported architectures.
    - Signals and processes: fixed lifecycle, waiting, scheduling, and signal-delivery behavior.
    - Filesystem and IPC: corrected VFS, procfs, dcache, shared-memory, and descriptor handling.
    - Runtime stability: fixed issues found while exercising larger applications and syscall test suites.
  • v0.1 Release: Release version 0.1
    Release version 0.1
    
    Initial release highlights:
    
    - Kernel foundation: established process scheduling, signals, system calls, traps, and ELF user-program loading.
    - Filesystems: implemented VFS, FAT32, procfs, ext4, and a block cache.
    - Storage: added a VirtIO block driver, including VirtIO MMIO v2 and large-disk fixes.
    - Userland: provided basic commands, the A20 editor, and an interactive shell environment.
    - libc and shell: integrated musl and adopted mksh as the default shell.
    - Memory management: expanded virtual-memory and allocator support and fixed early VFS issues.
    - Testing: added automated kernel and user-space test support.
    
    Notable compatibility and fixes:
    - ELF loader: corrected user-program load addresses.
    - Console: fixed UART input detection.
    - Build environment: fixed compilation in the official Docker environment.
    - Source integration: included the musl and mksh sources needed for reproducible builds.
  • v0.2
    f636d7ef · feat: version 0.2 ·
    Release: Release version 0.2
    Release version 0.2
    
    New features and major improvements since v0.1:
    
    - HAL: introduced architecture-independent platform interfaces for the kernel.
    - LoongArch64: added and stabilized boot, interrupt, timer, PCI, memory-management, and signal support.
    - AArch64: added initial ARM64 boot, trap, timer, firmware, and VirtIO platform support.
    - RISC-V: reorganized architecture code around the new HAL and expanded platform tests.
    - Userland: adopted sbase as the default Unix utility suite.
    - Contest environment: added setup and runner infrastructure for basic, BusyBox, musl, and glibc test workloads.
    - Testing: introduced reusable platform-test and RISC-V kernel test frameworks.
    
    Notable fixes and compatibility:
    - Memory and signals: improved memory management and signal handling across architectures.
    - Dynamic loading: fixed external-library compilation and dynamic loader behavior.
    - mmap: corrected mapping behavior needed by dynamically linked programs.
    - Contest mode: shut down cleanly after panic and made shutdown tests reliable.