[Accepted] SE-0317: Async Let

The review of SE-0317: async let has ended and the review has been accepted.

A significant area of feedback during the review was that of the creation of implicit suspension points when an async let variable is not awaited on a path that exits a scope that is not itself an awaited function. This creates an exception to the rule that suspension points are always marked with an await.

After thorough discussion of the alternatives to implicit suspension points, the core team feels that language-level solutions add more complexity than is warranted to eliminate implicit suspension points.
The core team acknowledges that this exception may have more impact in practice than can be reasoned about without real-world use. There is an opportunity to react to real-world feedback in Swift 6 by tightening up the model around implicit awaits if it turns out that they are harmful in practice (although it is not currently the intention to do so).

The proposal authors have added descriptions of other solutions and their downsides to the alternatives considered section of the proposal. This section also has additions covering other alternatives discussed during the review, such as the use of property wrappers for a partial library-level solution.

Thank you for your patience in awaiting the result of this review, for the proposal authors for their thorough write-up of the alternatives considered, and to everyone who participated.

Ben Cohen
Review Manager

17 Likes