Can anyone familiar with this say if it runs one coroutine per thread? How does a coroutine get it&#x27;s own stack? If coroutines share threads, is it possible to switch in between a coroutine say when it&#x27;s blocked on IO like it is in go?<p>I&#x27;m not an experienced go developer but my understanding is that it&#x27;s possible in go to have millions of goroutines each blocked on IO. I don&#x27;t see how a C function could mimic that. I thought stack moving was an essential requirement of any runtime that wants to mimic go in this way.<p>I&#x27;ve looked at some of the special macros like coroutine and go and it looks like libmill runs the entire function fn when you call go(fn) so if fn is blocked on IO then your entire thread is blocked on IO and you can soon grind to a halt if you have even a few blocked coroutines.