Discussion about this post

User's avatar
BMoncef's avatar

Thank you for the detailed write-up. The lessons and questions raised are indeed very important to have in mind when evaluating tech stacks and design choices.

I think in some places there’s a conflation of the underlying execution model and the programming model, and the post would benefit from clarifying this: Go coroutines, and « native concurrency » in general, are presented as the key ingredient that enabled this performance unlock. While coroutines probably played a significant role in the choice of the language, the underlying multithreaded nature of their scheduling in Go and the parallelism that ensues is the actual differentiating factor. In other words, if Go, or an other language, offered coroutines as a programming model but was still single-threaded, multiplexing the routines on that single thread, it would definitely be « natively concurrent », but would exhibit the same issues as javascript for writing compilers or cpu-bound tasks more generally. It would be nicer to program in, but not faster.

Expand full comment
torside's avatar

10x 0 is still 0...

Expand full comment
3 more comments...

No posts