Besides, fibers don't emit essentially the same code as async code. One has a stack, and the other doesn't. That's a significant difference.
> One has a stack, and the other doesn't. That's a significant difference.
They both have some memory area to which they write state. Calling it "a stack" refers to the abstraction in the programmer's mind, not to how the memory is actually written/read. It is true that in order to support recursion, a thread might need to dynamically allocate memory, but so would async/await, except it'll make it more explicit.
[1]: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p136...