@@ -365,8 +365,7 @@ the following changes are permitted:
365
365
an existing property (unless the struct is marked ``@frozen ``; see below).
366
366
This is effectively the same as modifying the body of a setter.
367
367
- 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).
370
369
- Adding or removing a conformance to a non-ABI-public protocol.
371
370
- Adding ``@dynamicCallable `` to the struct.
372
371
@@ -382,17 +381,9 @@ target for the library is an error.
382
381
It is not safe to add or remove ``mutating `` or ``nonmutating `` from a member
383
382
or accessor within a struct.
384
383
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.
396
387
397
388
398
389
Methods and Initializers
0 commit comments