@@ -365,8 +365,7 @@ the following changes are permitted:
365365 an existing property (unless the struct is marked ``@frozen ``; see below).
366366 This is effectively the same as modifying the body of a setter.
367367- Removing any non-ABI-public members, including stored properties.
368- - Adding a conformance to an ABI-public protocol *that was introduced in the
369- same release * (see below).
368+ - Adding a conformance to an ABI-public protocol (see below about availability).
370369- Adding or removing a conformance to a non-ABI-public protocol.
371370- Adding ``@dynamicCallable `` to the struct.
372371
@@ -382,17 +381,9 @@ target for the library is an error.
382381It is not safe to add or remove ``mutating `` or ``nonmutating `` from a member
383382or accessor within a struct.
384383
385- If a conformance is added to a type in version 1.1 of a library, it's important
386- that it isn't accessed in version 1.0. This means that it is only safe to add
387- new conformances to ABI-public protocols when the protocol is introduced, and
388- not after. If the protocol comes from a separate module, there is no safe way
389- to conform to it.
390-
391- .. admonition :: TODO
392-
393- Coming up with a way to do this, either with availability annotations for
394- protocol conformances or a way to emit a fallback copy of the conformance
395- for clients on older library versions to use, is highly desired.
384+ When introducing a new conformance of an existing type to an existing protocol,
385+ it is important to annotate the conformance with availability. This is achieved
386+ by declaring the conformance on an extension and annotating the extension.
396387
397388
398389Methods and Initializers
0 commit comments