SE-0193 - Cross-module inlining and specialization

Proposal Accepted (with slight revision for final naming)

The Core Team decided to accept this proposal with the respective spellings of @inlinable and @usableFromInline. The final proposal version will be amended with these changes.

When discussing the review thread with the Core Team, @Slava_Pestov (proposal author) also brought up the following question:

Should @inlinable imply @usableFromInline for internal declarations? Otherwise, you always need both attributes if the decl is internal.

While this was not brought up on the review thread, this seems like a natural extension to the proposal and the Core Team is OK with including that as part of the final revision without extending the review.

There was some incredibly insightful feedback on this review thread. Similar to discussions on this proposal that happened between various members of the Core Team and @Slava_Pestov, the discussion touched on syntax that bespoke to a broader language feature for supporting concepts for library evolution. That feedback will provide useful insights when designing those concepts more comprehensively. In the meantime, the Core Team felt that adding @inlinable and @usableFromInline would help address some immediate concerns for library authors and could naturally be folded into a larger library evolution design.

Thank you to everyone who participated in this review. The discussion was fantastic!

Ted Kremenek
Review Manager

4 Likes