# Gila v0.3.1 - a Rust Microkernel

![An illustrated Gila monster, and the text "Gila: A Minimal Rust Microkernel", superimposed over some serial log output.](gila_banner.png)

Gila is a Rust microkernel OS, inspired by microkernel projects such as seL4, Zircon, and Redox. I aim to implement multitasking, userspace drivers, IPC, and sandboxing. I do not aim to make it POSIX-compatible, but it will likely end up sharing many features with POSIX operating systems. Its design philosophy is focused around simplicity, isolation, modularity, and minimal privilege.

## Development

Information on the build system, repo structure, features, configuration options, supported architectures, design philosophies, and more, is available in the [docs](docs/) folder. If you want to build Gila for yourself, consider reading [DEVELOPMENT.md](docs/DEVELOPMENT.MD) for explicit instructions.

## Features

### Complete

- Valid Limine kernel
- Boots on `x86_64` (both UEFI and BIOS)
- Kernel command line parameters
- initramfs loading
- Logging
  - Serial output
- Page table enumeration
- Processor identification

### In-Progress

- Display console
- Serial console
- Paging

### Future/Desired

- Multi-architecture features
- Userspace binaries/processes
- Interprocess communication
- Driver server interface
- Interrupts and timers
- Context switching
- Process scheduling
- System calls (multi-convention?)
- Capability access control
- Simultaneous multiprocessing support
- Hypervisor functionality

### Additional Future Features (Userspace)

- Device drivers
- Filesystem drivers
- Shell
- Standard system API
- Rust and C stdlib port
- Display/windowing
- Application sandboxing

## Licensing

Licensed under the MIT License. See [LICENSE](LICENSE) for details.

## Credits

- The linker script stuff is from [limine-rust-template](https://github.com/jasondyoungberg/limine-rust-template),
which is available under the BSD 0-Clause License.
- The Gila kernel mascot, Gilbert (prounounced "Hilbert"), was illustrated by @lilu-the-almighty on Tumblr.
