book/src/development/design/README.md

1.9 KiB

Understanding the Design Goals

Mercury has several new and novel design decisions that make it radically different from other general Operating Systems.

A lot of these designs will likely change and shift as work get's done on the project.

First off, it's written in Rust, which allows for several nice features, including:

  • Memory safety
  • Easy dependency and build management with cargo
  • Great performance and reliability
  • Several compilation targets, with simple cross-compilation

It also uses microkernel architecture - this allows for us to keep the base kernel code small, and have additional features be modular, and easy to integrate into other projects. This also allows for a smaller attack surface, less bloat, smaller code, etc.

Additionally, Mercury is designed for ARM/RISC-V architecture machines. This is not only because they are simpler, but also because I believe they are the future of computing. For the future, I do not see myself wanting or attempting to implement x86 functionality.

Further design decisions are gone into detail in the next few chapters.

Code Organization

These names and layout are all **WIP**.

All of the code will take place in seperate repositories. Information on actually commiting, pulling, etc. is in the Workflow chapter.

Most of the code will be implemented as libraries, enabling for them to be used across systems, and worked on separately.

  • ferrite - The core microkernel code
  • hermes - The package manager
  • meteor - The actors library/implementation
  • gravitas - The library for working with storage
  • pulsar - Networking code
  • photon - GUI library