The review of SE-0476: Controlling the ABI of a function, initializer, property, or subscript ran from April 11 to April 25. The Language Steering Group has decided that the proposal is accepted with modifications.
The review feedback was light but overwhelmingly positive! It's clear that this proposal solves a major pain point and source of mistakes for authors of ABI-stable libraries when evolving their API surface.
Constructive discussion focused primarily on the syntax for declaring the ABI-providing declaration, and whether the declaration should be written in curly braces rather than parentheses. The LSG decided to keep the proposal as-is on this point, because parentheses better fits in the attribute grammar, and to prevent the misconception that multiple declarations can be written inside the curly braces. The discussion also questioned whether @abi
should be allowed on multi-variable patterns. The LSG decided to accept a modification to only allow @abi
on single-variable patterns, which prevents the declaration from looking like separate arguments to the attribute, and it simplifies the pattern matching that needs to be done to type check the differences between the ABI-providing and API-providing declaration. Multi-variable declarations can always be separated into multiple single-variable declarations if @abi
is necessary.
Because this change had sufficient discussion in the review thread, the Language Steering Group is comfortable accepting that modification without further review.
Thank you to everyone who participated in the pitch and proposal reviews; your contributions help make Swift a better language.
Holly Borla
Review Manager