Here is the list of features currently working as well as some of the next steps in the project roadmap.
- Bootloader-related
- Multboot structure parsing (boot cmdline, memory maps, framebuffer and kernel image details)
- CPU
- CPUID wrapper
- Port R/W abstraction
- Memory management
- Physical frame allocators (bootmem-based, bitmap allocator)
- VMM system (page table management, virtual address space reservations, page RW/NX bits, page walk/translation helpers and copy-on-write pages)
- Exception handling
- Page fault handling (also used to implement CoW)
- GPF handling
- Hardware detection/abstraction layer
- Multiboot-based HW detection
- ACPI-based HW detection
- Go allocator
- Maps
- Interfaces
- Package init() functions
- Defer
- Panic
- GC
- Go-routines
- Console
- Text-mode console
- Vesa-fb (15, 16, 24 and 32 bpp) console with support for bitmap fonts and (optional) logo
- TTY
- Simple VT
- ACPI 6.2 support (in progress)
- ACPI table detection and parsing
- AML parser
- AML interpreter/VM
- Interrupt handling chip drivers
- APIC
- Timer and time-keeping drivers
- APM timer
- APIC timer
- HPET
- RTC
- Timekeeping system
- Monotonic clock (configurable timer implementation)
Here is a list of features planned for the future:
- RAMDISK support (tar/bz2)
- Loadable modules (using a mechanism analogous to Go plugins)
- Tasks and scheduling
- Network device drivers
- Hypervisor support
- POSIX-compliant VFS