Currently:
- All stack sizes are a power of 2.
- The minimum size is 2KB, hardcoded.
- We reserve ~800 bytes of goroutine stacks for the runtime.
So 1KB stacks are feasible, but just barely. I don't think you could fit much of a goroutine in 200 bytes of stack.
So smaller sizes are possible, but not really practical. We'd have to handle non-power-of-2 sizes, or shrink the runtime reservation, both of which might be a lot of work. (We've been working on the runtime reservation for years, and that number always seems to go in the wrong direction.)
A goroutine is both a stack and a goroutine descriptor. Those descriptors themselves are 392 bytes, so even if the stack was super tiny we still have at least that memory overhead per goroutine.