[swift-evolution] Pitch: Cross-module inlining and specialization

Joe Groff jgroff at apple.com
Tue Oct 3 11:50:46 CDT 2017

> On Oct 2, 2017, at 10:58 PM, Chris Lattner via swift-evolution <swift-evolution at swift.org> wrote:
>> We have discussed adding a "versioned @inlinable" variant that preserves the public entry point for older clients, while making the declaration inlinable for newer clients. This will likely be a separate proposal and discussion.
> 5) It eliminates this complexity.

It wouldn't avoid the complexity, because we want the "non-ABI, always-emit-into-client" behavior for the standard library. For the soon-to-be-ABI-stable libraries where @inlinable even matters, such as the standard library and Apple SDK overlays, there's pretty much perfect overlap between things we want to inline and things we don't want to take up binary space and ABI surface in binaries, so the behavior Slava proposes seems like the right default. With these semantics, the only time an inlinable declaration needs an exported symbol is for backward deployment, and we're inevitably going to need "versioned" as a general backward deployment concept for other things.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171003/c358df1e/attachment.html>

More information about the swift-evolution mailing list