SE-0304: Structured Concurrency

As I noted in my response to Actors proposal, I am very excited about how things are shaping up with Swift concurrency story.

To the whole team: You are doing monumental work, thank you guys. You are making history by what you are doing here.

Again, though, I think we are not there yet with this iteration of the proposal. I understand that this one is really fundamental at the same level of async/await, and we have to push it through rather quickly, but please be patient everybody. We have already waited for so long for Swift native concurrency.

I agree with teachability issues that have come up. We see too much attention paid to runDetached and migration/interoperability stuff. We should instead focus on driving home the whole point of structured concurrency and how to design for it. I think we should refocus the base structured concurrency on pure concept and defer the question of how does it fit with what I already have to a follow up proposal.

I also think you should focus on a distilled minimal core set of operations that capture the essence of the concept and hint at how they can be used to build the day-to-day stuff out of them and defer it to the follow up proposal. This will aid in teachability of the feature and help people focus on the correct stuff.

We could pass async/await quickly because many people are already familiar with very similar concept already widely used in other languages. Currently, structured concurrency is not so widely used and is a very important fundamental cornerstone of Swift concurrency story. It deserves more focus on the core concept in the initial proposal. To be able to properly focus on the concept we need to shed the other stuff for now. "How to opt out of the structured concurrency" should not become the focus of the thread introducing structured concurrency!

2 Likes