book/src/development/design/README.md

40 lines
1.9 KiB
Markdown

# Understanding the Design Goals
**Mercury** has several new and novel design decisions that make it radically different from other general Operating Systems.
```admonish warning
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](https://www.rust-lang.org/), 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](https://doc.redox-os.org/book/ch04-01-microkernels.html) 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
```admonish info
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](/development/workflow.md) chapter.
Most of the code will be implemented as libraries, enabling for them to be used across systems, and worked on separately.
- [ferrite](https://git.lavender.software/mercury/ferrite-kernel) - The core microkernel code
- [hermes]() - The package manager
- [meteor]() - The [actors](/development/design/actor.md) library/implementation
- [gravitas]() - The library for working with [storage](/development/filesystem.md)
- [pulsar]() - Networking code
- [photon]() - GUI library