Re: Yes, its you.
"go distributes goroutines across a small number of pthreads (e.g. one per core), and *it* rather than the os decides how optimally to switch between goroutines"
So in other words you have a mini VM doing in-house context switching sitting on top of the OS threading system also doing context switching. That might make the end coders live easier but it doesn't sound efficient from a runtime POV to me. I tend to think the OS should be left to do what its designed to do. You wouldn't write your own filesystem driver or TCP stack inside a language so I'm not sure why language designers think they need to co-opt threading.