w0rp:
3. Give up on maximum performance (fiber-based coroutine range)I think that's what I would go for.
Yet there's no need for that. You can have your pie and eat it too, with a small cost. D can rewrite code that contains a yield in an efficient finite state machine (this is what ShedSkin compiler for Python does, and perhaps the C# compiler does the same).
Bye, bearophile