Does anyone else get the feeling that we (as a field) are missing something basic about concurrency? Like there's a really elegant solution just around the corner, that has the low overhead of async/await without the complexity. Or otherwise put, the ease of goroutines but without GC.<p>I know it sounds crazy. I recently dove into the area, and was pretty surprised at how many interesting building blocks there are out there. It feels like if we just combine them in the right way, we'll discover something that works a lot better.<p>Off the top of my head:<p>Google discovered a way to switch between OS threads without the syscall overhead. All it needs is to solve the memory overhead. [0]<p>Zig discovered a way to use monomorphization to enable colorless async/await. If someone could figure out how to make it work through polymorphism / virtual dispatch, that would be amazing. [1]<p>Vale discovered a possible way to make structured concurrency in a memory safe way that's easier than existing methods. [2]<p>Go [3] and Loom [4] show us that we can move stacks around. Loom is particularly interesting as it shows we can move the stack to its original location, a unique mechanism that could solve some other approaches' problems with pointer invalidation.<p>Cone is designing a unique blend of actors and async await, to enable simpler architectures. [5]<p>We're close to solving the problem, I can feel it.<p>[0] No public docs on it, but TL;DR: we tell the OS the thread is blocked, and manually switch over to it by saving/manipulating registers.<p>[1] <a href="https://kristoff.it/blog/zig-colorblind-async-await/" rel="nofollow">https://kristoff.it/blog/zig-colorblind-async-await/</a><p>[2] <a href="https://verdagon.dev/blog/seamless-fearless-structured-concurrency" rel="nofollow">https://verdagon.dev/blog/seamless-fearless-structured-concu...</a><p>[3] <a href="https://blog.cloudflare.com/how-stacks-are-handled-in-go/" rel="nofollow">https://blog.cloudflare.com/how-stacks-are-handled-in-go/</a><p>[4] <a href="https://youtu.be/NV46KFV1m-4" rel="nofollow">https://youtu.be/NV46KFV1m-4</a><p>[5] Can't find the link, but was a discussion on their server.