> And an interrupt can be scheduled on a different thread This sounds very close to [scheduler activations](https://en.wikipedia.org/wiki/Scheduler_activations), a formalized way for an upcall mechanism from the kernel to userspace. I need to give this more thought, but it is an interesting idea.
> A soon as you type your channels you run into composability problems as you > cannot easily wait for either Channel[T1] or Channel[T2]. I'm sure I'm going to run into all sorts of problems :D The idea is to start from user space with typical use cases (e.g. implement a simple `grep`) and start fleshing out the API and kernel support based on what would take to make it work. I'm sure the first iteration will be crappy, but it's useful for learning.