&gt; I don&#x27;t know Scala or Erlang, but based on the results I would assume both are allocating a posix thread for each thread in the software and so it is using the kernel scheduler to switch between them with all the overhead that entails.<p>Incorrect.<p>&gt; I have been considering threading in Rust vs Go and that is the biggest difference I see between the approaches. However it should be possible to implement Go style goroutines in Rust using custom dispatch code like old C coroutines. I think I have already seen libraries like that, but I haven&#x27;t dug in the details to know for sure.<p>There is <a href="https:&#x2F;&#x2F;github.com&#x2F;dpc&#x2F;mioco" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;dpc&#x2F;mioco</a> for I&#x2F;O-based coroutines. For CPU bound tasks you want something like <a href="https:&#x2F;&#x2F;github.com&#x2F;nikomatsakis&#x2F;rayon" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;nikomatsakis&#x2F;rayon</a>.