Skip to content

Commit e50010d

Browse files
authored
Merge pull request swiftlang#36783 from filip-sakel/filip-sakel-SE0293-gardening
[SE-0293] Update Library-Evolution Documentation
2 parents 07037a6 + b02dc12 commit e50010d

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

docs/LibraryEvolution.rst

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,22 @@ The following changes are permitted:
145145
body, not the labels that are part of the function's full name).
146146
- Reordering generic requirements (but not the generic parameters themselves).
147147
- Adding a default argument expression to a parameter.
148-
- Changing or removing a default argument is a `binary-compatible
149-
source-breaking change`.
148+
- Adding, changing, reordering, or removing property wrappers that either are
149+
implementation-detail or in a composition where the outermost wrapper is
150+
implementation-detail.
151+
- Changing or removing a default argument is a `binary-compatible source-breaking change`.
150152
- Adding or removing the ``@discardableResult`` and ``@warn_unqualified_access``
151153
attributes.
152154

153155
No other changes are permitted; the following are particularly of note:
154156

155157
- An ABI-public function may not change its parameters or return type.
158+
- An ABI-public function may not, in any way, change API-level property
159+
wrappers or compositions where the outermost wrapper is
160+
API-level.
161+
- An ABI-public function may not change an API-level property-wrapper attribute
162+
to an implementation-detail one and vice versa, if it is the only wrapper
163+
applied to a given parameter or the outermost wrapper in a composition.
156164
- An ABI-public function may not change its generic requirements.
157165
- An ABI-public function may not change its external parameter names (labels).
158166
- An ABI-public function may not add, remove, or reorder parameters, whether or
@@ -413,6 +421,9 @@ stored subscripts. This means that the following changes are permitted:
413421
accessor bodies, not the labels that are part of the subscript's full name).
414422
- Reordering generic requirements (but not the generic parameters themselves).
415423
- Adding a default argument expression to an index parameter.
424+
- Adding, changing, reordering, or removing property wrappers that either are
425+
implementation-detail or in a composition where the outermost wrapper is
426+
implementation-detail.
416427
- Changing or removing a default argument is a `binary-compatible
417428
source-breaking change`.
418429

@@ -778,6 +789,9 @@ counterparts with a few small changes:
778789
- Changing index parameter internal names is permitted.
779790
- Reordering generic requirements (but not the generic parameters themselves)
780791
is permitted.
792+
- Adding, changing, reordering, or removing property wrappers that either are
793+
implementation-detail or in a composition where the outermost wrapper is
794+
implementation-detail.
781795
- Adding a default argument expression to an index parameter is permitted.
782796
- Changing or removing a default argument is a `binary-compatible
783797
source-breaking change`.

0 commit comments

Comments
 (0)