Microkernel
The core kernel
of Mercury will be highly limited, implementing only necessary portions.
This allows other functionality to be simply run in userspace.
Additionally, most code should be put into separate libraries then pulled into the kernel
code.
This will likely be done via git submodules
.
Initially, it will be built for RISC-V
, then ARM
(focused on running in a VM), then on a Raspberry Pi.
Afterwards, we can put focus towards building out various features.
Support for multiple targets will be done via Cargo.toml
targets, cross-compilation, and conditional compilation.
Concurrency
For performance, we will be using various concurrency programming techniques.
For IO intensive operations, async
will be used.
This will include the filesystem, actors, and GUI.
CPU-bound operations are better suited to individual threads
, however.
This might include operations like hashing, encryption, and indexing.
Boot Process
TODO
Memory Management
TODO
Processes
TODO
Error Handling
All errors must be handled gracefully by the kernel
. If possible, they should simply log an error.
If not, they can display it to the user, preferably in a simple format, maybe using something like const_panic or snafu.