Source Compatibility

See an overview of potential source compatibility issues.

Handling Future Enum Cases

Swift 6 includes a number of evolution proposals that could potentially affect source compatibility. These are all opt-in for the Swift 5 language mode.

Handling Future Enum Cases

SE-0192: NonfrozenEnumExhaustivity

Lack of a required @unknown default has changed from a warning to an error.

Concise magic file names

SE-0274: ConciseMagicFile

The special expression #file has changed to a human-readable string containing the filename and module name.

Forward-scan matching for trailing closures

SE-0286: ForwardTrailingClosures

Could affect code involving multiple, defaulted closure parameters.

Incremental migration to concurrency checking

SE-0337: StrictConcurrency

Will introduce errors for any code that risks data races.

Implicitly Opened Existentials

SE-0352: ImplicitOpenExistentials

Could affect overload resolution for functions that involve both existentials and generic types.

Regex Literals

SE-0354: BareSlashRegexLiterals

Could impact the parsing of code that was previously using a bare slash.

Deprecate @UIApplicationMain and @NSApplicationMain

SE-0383: DeprecateApplicationMain

Will introduce an error for any code that has not migrated to using @main.

Importing Forward Declared Objective-C Interfaces and Protocols

SE-0384: ImportObjcForwardDeclarations

Will expose previously-invisible types that could conflict with existing sources.

Remove Actor Isolation Inference caused by Property Wrappers

SE-0401: DisableOutwardActorInference

Could change the inferred isolation of a type and its members.

Isolated default value expressions

SE-0411: IsolatedDefaultValues

Will introduce errors for code that risks data races.

Strict concurrency for global variables

SE-0412: GlobalConcurrency

Will introduce errors for code that risks data races.

Region based Isolation

SE-0414: RegionBasedIsolation

Increases the constraints of the Actor.assumeIsolated function.

Inferring `Sendable` for methods and key path literals

SE-0418: InferSendableFromCaptures

Could affect overload resolution for functions that differ only by sendability.

Dynamic actor isolation enforcement from non-strict-concurrency contexts

SE-0423: DynamicActorIsolation

Introduces new assertions that could affect existing code if the runtime isolation does not match expectations.

Usability of global-actor-isolated types

SE-0434: GlobalActorIsolatedTypesUsability

Could affect type inference and overload resolution for functions that are globally-isolated but not @Sendable.