But if coroutines can't share memory without copying; they don't allow you to scale (in parallel on one task across cores efficiently).
What is then the purpose of coroutines as opposed to just having more machines?
OS threads can scale (ipootace^), but then you need proper concurrent data structures and a complex memory model below to support them.
Does go have those?