I wanted to experiment with Non-Unix OS ideas.
Exo-kernels are interesting, but it is mostly a theory. This project helps me understand the challenges involved in that pattern.
OS development is extremely hard, Rust makes it more bearable.
There’s some fascinating ideas in this experimental project.
I read the README and wow. This is such a cool project. It reminds me of BeOS / Haiku, or GoboLinux, like “what if we did things in the OS differently to try to make it better?”
Once I read that this OS has cooperative multitasking I started to freak out, which was funny because the author addressed that concern in the next section. I, like most people I assume, thought preemptive multitasking was necessary, bu the author makes some good arguments. And it doesn’t mean the drawbacks of cooperative multitasking couldn’t be addressed with code for edge-case scenarios (naughty apps) some time in the future.
But the whole idea of apps interfacing with the kernel with a context instead of a standard library, yeah, so cool.
drcouzelis,
I didn’t know anyone else was a fan of GoboLinux, awesome to hear somebody else mention it!
When I write software, I tend to prefer cooperative multitasking. Many people are familiar with this programming paradigm and may not realize it because it’s what they do when they use event oriented programming. Technically you can use threads, but it’s even more efficient if you handle events completely and return leaving no stack behind. Instead everything you need to save goes into stateful structures. This is an extremely efficient way of rapidly handling thousands of events without spawning threads with thousands of stacks along with synchronization primitives and the bugs that are typically associated with multithreading. Although in this case many of those faults would be mitigated by using rust.
This event oriented module isn’t good for long running tasks. For those situations it’s often desirable to spawn threads, but threads still fit nicely into the model. When a long running thread completes its job that simply becomes another event that can be handled normally.
I’ll need to take a closer look. I’ve had so many ideas like that over the years, rust would have made them better. Doing things in C/C++ made things dirty and I’ve always hated resorting to hacks that the developer would have to enforce manually because the compiler couldn’t do it.