> On Nov 10, 2017, at 3:05 PM, Joe Groff <jgr...@apple.com> wrote:
> 
> 
> 
>> On Nov 8, 2017, at 9:59 PM, Erik Eckstein via swift-dev 
>> <swift-dev@swift.org> wrote:
>> 
>> 
>> 
>>> On Nov 8, 2017, at 5:27 PM, Johannes Weiß via swift-dev 
>>> <swift-dev@swift.org> wrote:
>>> 
>>> Hi Daniel,
>>> 
>>>> On 2 Nov 2017, at 8:15 pm, Daniel Dunbar <daniel_dun...@apple.com> wrote:
>>>> 
>>>> My personal preference is to:
>>>> 1. Do nothing for now, but encourage publishing standardized protocols to 
>>>> solve this need.
>>>> 2. Hope for a future with WMO+LTO magic which recovers the performance, 
>>>> for the case where the entire application ends up using one implementation.
>>> 
>>> Hmm, but that'll only work if we get 'whole product optimisation', right?
>> 
>> yes.
>> 
>> Even when we have cross-module optimizations (which would be comparable to 
>> thin-lto) we could not do that optimization.
>> 
>>> If we still compile one module at the time I don't think the compiler will 
>>> be able to figure out that there's just one implementation of that protocol 
>>> in the whole program.
>> 
>> exactly
> 
> If you know you're building for an executable target, then it should be 
> theoretically possible to look at the whole system and see that there's a 
> single conformance to a protocol. For the situation Johannes is talking 
> about, maybe this could be information that the build system feeds the 
> compiler, so in a configuration file somewhere you'd say "I want to 
> specialize all uses of the Logger.Logger protocol for the 
> FancyLogger.FancyLogger<MyOutputStream> implementation" instead of relying on 
> the compiler magically deriving it.

Actually, speculative-devirtualization of protocol methods + cross-module 
optimization should be able to handle this. The only drawback is code size, 
which is fortunately not so important for that project.


> 
> -Joe

_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to