[Accepted with modifications] SE-0538: Disconnected

Hello, Swift Evolution!

The review of SE-0538: Disconnected has concluded, and the Language Steering Group decided that the proposal is accepted with modifications.

The review discussion was generally positive on the need to guarantee that non-Sendable values are disconnected when storing them, e.g. in collections or as stored properties. The critical feedback focused on the naming of the Disconnected type and whether programmers should need to understand the concepts behind region-based isolation in order to make use of this type; disconnected region is used in the region isolation terminology to describe a region that is disconnected from any actor-isolated state.

The LSG agrees with the argument that "disconnected" can be understood in terms of the object graph, without bringing in region isolation, and accepts Disconnected as the type name. The other alternatives that use some form of "sending" or "send", such as Sending<T>, would become very difficult to describe in text or verbally without making it very clear when you're talking about the type name Sending, the keyword sending, the general concept of sending a value over an isolation domain, etc.

Reviewers also agreed that take() and swap() should be renamed to consume() and exchange() respectively, following existing precedent. The LSG accepts the proposal with this minor modification.

Thank you to everyone who participated in the pitch and proposal review. Your contributions help make Swift a better language.

Holly Borla
Review Manager

16 Likes