40 lines
1.9 KiB
Markdown
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
|