Skip to content

Tags: fQwQf/A20OS

Tags

v0.7

Toggle v0.7's commit message
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

Toggle v0.6's commit message
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

Toggle v0.5's commit message
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

Toggle v0.4's commit message
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

Toggle v0.3's commit message
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.2

Toggle v0.2's commit message
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.

v0.1

Toggle v0.1's commit message
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.