@hborla This statement you made (which is superb, Iām bookmarking it) is, I fear, the most succinct summary of the difficulties that the community has faced as Swift concurrency spreads and deepens its adoption:
However, I still think it's beneficial to not conflate the ability to suspend with the execution semantics of a function.
I think that conflation is exactly what has happened, for many, certainly not all, but many developersāenough of them that changes like the ones proposed in this thread will break their mental model.
Workaday developers focused on delivering code are pressed for time. If thereās a convenient mental model mapping from past to future, they will reach for it.
I think that happened with the move from GCD to Swift Concurrency.
GCD, as represented by ubiquitous asynchronous dispatching to a global queue, was exactly the conflation you describe for many daily tasks: Do this work on that queue at this priority and tell me later when itās done.
Swift Concurrency obviously is quite different, but at least in one corner of its feature set, the nonisolated async function/method, it was so close to the familiar GCD global queue pattern that for many developers thatās the extent of their mental model for Swift Concurrency.
In other words: the challenge here is not only that this proposal changes behaviors, it also invalidates what I suspect is the most common mental model for how this stuff works for the middle-of-the-bell-curve developer.
This is not an argument against the proposal, but rather an argument for a strong consideration of how this change gets announced, rolled out, documented, diagnosed, fixitized, etc.