Thanks! This is intentionally not going to be a Unix-like OS, so no POSIX :)

I haven't thought about the API yet, there's much to be done before I get to 
that stage. But I have some rough ideas:

  * User tasks should communicate with the kernel and other userspace tasks 
through statically typed channels (both sync and async)
  * Those statically typed channels are going to drive one or more state 
machines within each task
  * This allows composing processes around a Channel[T] interface, with special 
types of channels for Source[T] and Sink[T] (there could be multiple of these 
per task). No more text-oriented stdin/stdout composition.
  * No signals; tasks can receive async events through channels and react 
accordingly. I'm still not sure how to safely handle CPU-bound tasks that need 
to be interrupted (i.e. cancellation).
  * No threads; tasks will be single-threaded with an event loop. Concurrency 
can be achieved through coroutines (which requires a userspace scheduler).



All of this is obviously just ideas at this point. But it's what I'm aiming for.

Reply via email to