[Returned for revision] SE-0414: Region-based isolation

The review of SE-0414: Region-based isolation ran from December 4th through December 18th. The Language Steering Group has decided that the proposal is returned for revision.

The Language Steering Group believes that this proposal addresses an important usability problem in the strict concurrency checking model that eliminates a source of false-positive data race errors. For this reason, the Language Steering Group accepts SE-0414 in principle.

However, the review discussion surfaced two important data-race safety holes in the current proposal:

  1. There are a few places in the language that assume a non-Sendable value can never be passed across isolation domains and allows synchronous access to actor isolated state when the value is formed in the same isolation domain, including key-paths with isolated path components and non-Sendable isolated functions. SE-0414 does not define such values as being part of the actor’s region, allowing them to be transferred which can violate actor isolation.
  2. Currently, SE-0414 does not prevent parameter regions of synchronous nonisolated functions from being transferred, so APIs that synchronously change the static isolation domain, like assumeIsolated, allow non-Sendable values to escape into an actor’s region. This could be addressed by preventing such regions from being transferred.

Once these data-race safety holes have been addressed in a proposal revision, the Language Steering Group will schedule a revision review.

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

Holly Borla
Review Manager