[Accepted] Amendment to SE-0466

Hi all –

The review of the amendment to SE-0466 has concluded and the Language Steering Group has agreed to accept it.

There's broad agreement that this amendment rounds out some of the rougher edges of SE-0466, so an important step forward, despite some lingering discussion about same-file extensions. While we understand the concerns that some folks have raised about wanting to place conformances on extensions (especially how that restriction interacts with macros), we feel that the amendment's proposed behavior is still desirable and a significant improvement in usability of the feature.

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

Steve Canon
Review Manager

2 Likes

Follow-up: Circular reference error when adding `MutablePersistableRecord` conformance. · Issue #1823 · groue/GRDB.swift · GitHub

In a nutshell, SE-0466 has design flaws (as described during the review of this amendment) and needs to be fixed.

2 Likes

Follow-up: main-actor isolated code warning after updating to the latest package combinations sqlitedata 1.1.0 & . structured queries 0.22.1 · Issue #241 · pointfreeco/sqlite-data · GitHub

That's the situation today: even if a library deals with isolated conformances, we watch users create new projects in Xcode 26, isolated on MainActor by default, and meet a wall of compiler errors.

That's what SE-0466 is: a debacle of broken backward compatibility, enabled by default in new Xcode 26 projects. Even if you do not live at the edge, the edge comes to you, and bites hard.

I'm not sure the Language Steering Group can stay silent and refuse the dialogue with library authors.

2 Likes

FWIW this is not actually an issue with default main actor isolation. I previously mentioned in the amendment thread that we found that most of the issues we were dealing with were fixed by reducing how much we baked sendability into the library's protocols.

The issue above is just that with some recent changes we accidentally broke default main actor isolation. The fix is simple enough, and really the biggest problem for us has been having to support multiple modes of Swift execution while building Swift libraries. This is exacerbated by the fact that as far as we can tell, SPM does not actually respect the .defaultIsolation(MainActor.self) setting and so it’s also hard to get automated testing for that mode.

1 Like

I think this is related to a question I asked a while back of why we allow a protocol definition itself to have actor (or sendable) requirements, rather then only the individual protocol requirements:

Ha, cool, I'm glad you could fix the issue by adding nonisolated in front of some types. In the first mentioned issue, this does not work. The compiler keeps on isolating methods on the MainActor when it should not, triggering various derived errors.