[Accepted with modifications] SE-0430 (second review): `sendable` parameter and result values

Hello Swift community,

The second review of SE-0430: sendable parameter and result values ran from May 7...May 13, 2024.

Feedback in this round was robust, focused, and constructive. Many reviewers went beyond merely stating their subjective opinions and described their underlying motivations, principles, and justifications in depth. They discussed and critiqued each others' positions respectfully, and the conversation remained productive throughout. As a result, the Language Steering Group found the review's feedback highly persuasive and quickly formed a consensus.

In light of the review feedback, the Language Steering Group has chosen the keyword sending for this feature. This keyword strikes a good balance between the opposing design forces at play, conveying the feature's close relationship to Sendable while still making it easy to discuss the feature as something distinct. The keyword is also in grammatical agreement with several other parameter/result annotations like consuming, borrowing, and @escaping. (While the -ing suffix may be a little awkward if the modifier is eventually extended to support properties, it can be plausibly read there as describing how the type is used by the property's accessors.)

A few reviewers also brought up the combination of the borrowing and sending modifiers. As proposed, this combination would have served a niche use case for ABI-stable retroactive adopters of sending, but some reviewers argued that it would be a good spelling for a future direction that allowed the callee to "borrow" a region for the duration of the call while promising to keep it intact. To avoid prematurely precluding this design, the Language Steering Group has chosen to ban the combination of borrowing and sending; when the standard library adopts sending, it will instead use a temporary compiler-internal facility to preserve ABI compatibility.

As the sending keyword was extensively discussed in both rounds of review and the borrowing ban merely subsets out part of the proposal, the Language Steering Group does not believe further review is necessary. It has therefore chosen to accept with modifications.

Every Evolution review is important to the development of the language, but this one was especially vital to developing and informing the Language Steering Group's sense of the correct design. Thank you to all who participated!

Becca Royal-Gordon
SE-0430 Review Manager

42 Likes

Thanks for such an elaborate review note with a positive tone, pleasure to see - with a good example of when evolution works as intended.

17 Likes