@mattiem but, to be serious for a second, having a convenient way of turning any sync method into an async one would be cool, which this is not (convenient).
How about this lol?
(wait) no it doesn't work simply like that
@mattiem I'm not posting to the forum thread more, but I think it's a good demonstration that maybe, just maybe, moving work to the background needs to be a bit more verbose for the sake of clarify.
"clarity at the point of use is your most important goal." (which is long forgotten)
https://www.swift.org/documentation/api-design-guidelines/#fundamentals
@a_grebenyuk yeah.
I haven't thought really deeply about this. But I'm pretty sure callee-defined correctness/safety is very good, but caller-defined background work is what's missing.
(and yes, it needs to be clear, even if the compiler can prove it to be safe)
@a_grebenyuk Right. I think a little sugar could make this quite nice.
However I found a bug that makes this harder to use, and seems to apply to closure literals too
@alexito4 @a_grebenyuk I think you two are really on to something with this tension.
Today, âawaitâ does not mean âwonât blockâ. It does not even mean âwill be asyncâ!
I really believe that the language is 90% of the way there. Providing a clearer mental model for non-experts PLUS some nice way for callers to be in control of blocking work are missing pieces.