I just saw this, do you know if there is a way to change a PM to a new thread? I think that would work better. Sorry about any possible confusion on this front.
Yes, this looks fine.
To me, having a feature live as a library as much as possible is more enticing than having it baked into the compiler. Given that we would want generators anyways as a means for co-routines, I think that extending for loops to handle generators would be nicer.
How would this work under your desugaring? Will it be a type-based desugaring?