We don't compare against Go pervasively. Benchmarking across languages is hard generally, but here is a result on a specific benchmark comparing several versions of OCaml benchmarks against Go and Rust on a Http server benchmark: https://github.com/ocaml-multicore/retro-httpaf-bench/pull/1....
If there are suggestions to make the Go and Rust versions, please feel free to tell us how in the issue tracker.
In short there should be very little performance difference against stock.
As KC has linked in a sibling comment there's a project going to explore using effects to write high performance IO libraries and that has some early benchmarks.
That's the thing that is missing in discussions around many languages. You can't just add multicore or actors to a language post-factum. Because by the time you get around to doing it everything in your language, from standard lib to third-party packages, has already been written with no concept of multi-anything.
And still, time and again, languages are being designed with these concerns as an afterthought.
> And still, time and again, languages are being designed with these concerns as an afterthought.
Is that still happening? My impression is that any languages designed since multicore became common have thought very hard about their approach. The problem we have is that a lot of our languages have been around a while. Even Python is 30 years old at this point!
Erlang here is the miracle to me. Its programming model was designed for concurrency on a single core, but when SMP processers appeared all it needed was a VM change that was completely transparent to the programs above it and suddenly all Erlang programs were extremely parallel!
Erlang was not designed for concurrency on a single core, it was designed for parallelism on multiple machines. Because of this, erlang processes do not share memory and SMP-level parallelism was easy to add.
Many languages side step the problem. With JS-inspired languages like Dart, you are limited to message passing workers. Many high performance concurrency applications are difficult without shared memory support.