@mattiem @rhysmorgan @matadan @nicklockwood Language dialects profoundly affect the usage of libraries.
At https://github.com/groue/GRDB.swift/issues/1823#issuecomment-3362706069 you can see the differences. You see regular API usage, followed by the many changes required with MainActor by default.
- Explicit nonisolated keyword is required on type declarations that conform to a SendableMetatype protocol, unless the conformance is specified directly on the type declaration. Declaring the conformance in an extension, even in the same file, does not lift the burden of specifying nonisolated. Extensions are no longer a key language organization feature in the MainActor by default dialect. Great design.
- Explicit nonisolated keyword is required on conformances to protocols even when the type is already known to be nonisolated. If MyType is nonisolated, you still need to tell that its conformance to Equatable is not MainActor-isolated. Like, as if anyone would want something else.
- Explicit nonisolated keyword must be added on nonisolated methods required by nonisolated protocols. It won't compile until you do.
- No ability for the library protocols to declare that an associated type must be nonisolated.
Yeah that's a lot of explicit "nonisolated" that are required. And that's a lot of obscure compiler errors until you add all of them.
All of this *in the file of the type declaration*, i.e. where the developer is expressing the core intentions about the type.