From 4f69c2b5c395395936013a9202a08c29a3e490ef Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Fri, 20 Aug 2021 16:21:58 -0700 Subject: [PATCH] [docs] Describe how _alwaysEmitIntoClient relates to library evolution. --- docs/LibraryEvolution.rst | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/LibraryEvolution.rst b/docs/LibraryEvolution.rst index a608d52b48a1f..74239ce082244 100644 --- a/docs/LibraryEvolution.rst +++ b/docs/LibraryEvolution.rst @@ -269,15 +269,16 @@ Always Emit Into Client A function, computed property or subscript annotated as ``@_alwaysEmitIntoClient`` is similar to an ``@inlinable`` declaration, except the declaration is not part of the module's ABI, meaning that the client must always emit -their own copy. +their own copy. As a result: -As a result, removing a declaration annotated as ``@_alwaysEmitIntoClient`` -is a binary-compatible source-breaking change. - -.. admonition:: TODO - - The implementation of ``@_alwaysEmitIntoClient`` is incomplete and - should probably graduate to having its own evolution proposal. +- Removing a declaration annotated as ``@_alwaysEmitIntoClient`` is a + `binary-compatible source-breaking change`. +- Adding ``@_alwaysEmitIntoClient`` to a declaration breaks ABI but is a + source-compatible change. +- Removing ``@_alwaysEmitIntoClient`` from a declaration is a + binary-compatible change. It also requires updating the availability + to at least the OS version where the attribute was removed. As a result, + it may be a source-breaking change. Default Argument Expressions ----------------------------