Philosophy of Coroutines
I think that the biggest missing "killer feature" for systems programming languages is the ability to treat stackless coroutines as just another "plain old data" struct. Here's a list of things I can do with structs that I can't do with C++ coroutines or Rust generator objects (much to my chagrin):<p>* Get their size/alignment at compile time<p>* Allocate them on the stack<p>* Allocate them in a memory region of my choosing<p>* Create a contiguous array of them<p>* Copy them<p>* Serialize/deserialize them<p>Imagine being able to save coroutines to your filesystem, reboot your machine, restart your program, and have it pick up where it left off. Or, migrating lots of actively running coroutines to another machine by serializing it and sending it over the network. Or creating a high-performance, high-concurrency event loop using a giant map of coroutine objects.