Skip to content

Commit 04d2970

Browse files
authored
Update LibraryEvolution.rst for SE-0293.
1 parent 1fb40b8 commit 04d2970

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

docs/LibraryEvolution.rst

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,21 @@ 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 belong in a composition leading with an
150+
implementation-detail wrapper.
151+
- Changing or removing a default argument is a `binary-compatible source-breaking change`.
152+
- Adding, changing, or removing arguments in the property-wrapper custom attribute
153+
of an API-level wrapper or in the custom attributes of API-leading compositions
154+
is a `binary-compatible source-breaking change`.
150155
- Adding or removing the ``@discardableResult`` and ``@warn_unqualified_access``
151156
attributes.
152157

153158
No other changes are permitted; the following are particularly of note:
154159

155160
- An ABI-public function may not change its parameters or return type.
161+
- An ABI-public function may not in any way change API-level property
162+
wrappers or compositions leading with such wrappers.
156163
- An ABI-public function may not change its generic requirements.
157164
- An ABI-public function may not change its external parameter names (labels).
158165
- An ABI-public function may not add, remove, or reorder parameters, whether or
@@ -413,8 +420,14 @@ stored subscripts. This means that the following changes are permitted:
413420
accessor bodies, not the labels that are part of the subscript's full name).
414421
- Reordering generic requirements (but not the generic parameters themselves).
415422
- Adding a default argument expression to an index parameter.
423+
- Adding, changing, reordering, or removing property wrappers that either are
424+
implementation-detail or belong in a composition leading with an
425+
implementation-detail wrapper.
416426
- Changing or removing a default argument is a `binary-compatible
417427
source-breaking change`.
428+
- Adding, changing, or removing arguments in the property-wrapper custom attribute
429+
of an API-level wrapper or in the custom attributes of API-leading compositions
430+
is a `binary-compatible source-breaking change`.
418431

419432
Like properties, subscripts can be marked ``@inlinable``, which makes
420433
changing the body of an accessor a `binary-compatible source-breaking change`.
@@ -778,9 +791,15 @@ counterparts with a few small changes:
778791
- Changing index parameter internal names is permitted.
779792
- Reordering generic requirements (but not the generic parameters themselves)
780793
is permitted.
794+
- Adding, changing, reordering, or removing property wrappers that either are
795+
implementation-detail or belong in a composition leading with an
796+
implementation-detail wrapper are permitted.
781797
- Adding a default argument expression to an index parameter is permitted.
782798
- Changing or removing a default argument is a `binary-compatible
783799
source-breaking change`.
800+
- Adding, changing, or removing arguments in the property-wrapper custom attribute
801+
of an API-level wrapper or in the custom attributes of API-leading compositions
802+
is a `binary-compatible source-breaking change`.
784803

785804
Adding a public setter to an ``open`` subscript is a
786805
`binary-compatible source-breaking change`; any existing overrides will not

0 commit comments

Comments
 (0)