diff --git a/RELEASES.md b/RELEASES.md new file mode 100644 index 0000000..3c5bb6f --- /dev/null +++ b/RELEASES.md @@ -0,0 +1,89 @@ +# Releases + +## AcadiaOS 0.1.0 (2023-12-08) + +This marks the first release of AcadiaOS! There is very little user functionality currently but a +lot of foundational work has been done. + +### Zion Kernel + +Capability-based microkernel. + +Boot Process: +- Initializes GDT and IDT. +- Sets up a separate stack for page faults and general protection faults. +- Enables SSE. +- Minimally initializes the APIC in order to use its timer as well as map the PS/2 Keyboard and PCI +interrupts. +- Enables Syscalls using the sysenter instruction. +- Enables the scheduler. +- Loads the Yellowstone init program and yields to it. + +Features: +- Physical memory manager can dole out single pages as well as continuous chunks. Freed pages and +chunks can be reused. +- Kernel memory allocation done primarily using a slab allocator for sizes up to 128 bytes. (Larger +allocations are done by simply incrementing a pointer and are never truly freed. However currently +none occur.). +- Round robin scheduler with a single priority level. + +Interface: +- Capability-based interface. +- Process Management: ProcessInit, ProcessExit. +- Thread Management: ThreadCreate, ThreadStart, ThreadExit. +- Memory Management: MemoryObjectCreate, MemoryObjectCreateContiguous, MemoryObjectCreatePhysical, +MemoryObjectDuplicate, MemoryObjectInspect, AddressSpaceMap, AddressSpaceUnmap. +- IPC with Channels, Ports, and Endpoints. +- Channel: ChannelCreate, ChannelSend, ChannelRecv. +- Ports: PortCreate, PortSend, PortRecv, PortPoll. +- Endpoints: EndpointCreate, EndpointSend, EndpointRecv, ReplyPortSend, ReplyPortRecv. +- Capability Management: CapDuplicate, CapRelease. +- Irq Management: IrqRegister. +- Synchronization: ProcessWait, ThreadWait, MutexCreate, MutexLock, MutexRelease, SemaphoreCreate, +SemaphoreWait, SemaphoreSignal. +- Debug Output: Debug. + +### Yellowstone + +Initialization process that starts up the other necessary boot processes then maintains a registry +of the available IPC Servers running on the system. + +- Spawns the AHCI Client "Denali". +- Once it is online, reads the GPT and spawns the VFS service "VictoriaFallS". +- Once it is online, reads "init.txt" and spawns the processes listed in the file from the /bin dir. + + +### Denali + +Barebones AHCI Driver. + +- Reads the SATA PCI region the HBAs associated with it. +- Starts the Denali service to allow clients to read directly from disk. +- Currently only one command port is used so reads are done in serial. + +### VictoriaFallS + +Barebones VFS Server. Currently passes all calls to it directly to the ext2 filesystem at the root +of the VFS. + +- Allows reading of files and directories. +- Does not cache results or inodes so all calls go directly to the AHCI Server. + + +### Teton + +Very basic terminal and shell. + +- Supports ls, pwd, cd, and exec commands. +- All commands must use absolute paths. +- Starts a child process when using exec and waits for it to complete. + +### Yunq + +IDL for IPC on AcadiaOS with cpp codegen for messages, clients, and servers. + +- Supports serializing capabilities for IPC. +- Supports repeated integer fields. +- Supports string files. +- Allows namespacing cpp definitions. +