> On Oct 5, 2017, at 1:17 PM, Michael Ilseman via swift-evolution 
> <[email protected]> wrote:
> 
> Another benefit of the always-emit-into-client-and-omit-from-libary-binary is 
> cross-call consistency. A function foo could change in a way such that *all* 
> calls using either the new or old version is fine, but some interleaving of 
> calls to new and old versions is invalid. Having to reason about and test 
> interleaving is very difficult. This further extends to groups of functions 
> that want to maintain a cross-function-group call consistency (e.g. multiple 
> methods on a struct).

This is not true though, because any calls to the inlinable function from 
inside its defining module will always use the ‘latest’ definition.

Or imagine if you link multiple frameworks that all inline different versions 
of an inlinable function. I don’t think there’s a way to make the guarantee you 
described.

Slava
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to