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:
- There are a few places in the language that assume a non-
Sendablevalue 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-
Sendableisolated 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.
- Currently, SE-0414 does not prevent parameter regions of synchronous
nonisolatedfunctions from being transferred, so APIs that synchronously change the static isolation domain, like
assumeIsolated, allow non-
Sendablevalues 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.