Tags: fQwQf/A20OS
Tags
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.
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.
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.
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.
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.
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.
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.