<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 16, 2016, at 11:46 PM, Adrian Kashivskyy via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><div class=""><br class=""></div><div class="">@Jed,</div><div class=""><br class=""></div><div class=""><blockquote type="cite" class="">That said, the problem isn’t necessarily difficult to solve — it’s just that it’s important that it actually be solved at the same time the&nbsp;feature is rolled out.<br class=""></blockquote><div class=""><br class=""></div>I cannot speak for Apple, but judging from last Swift releases where SDKs were always up-to-date with latest Swift changes, I believe this change will be reflected as well.</div></div></div></div></blockquote><br class=""></div><div>OS SDKs don't turn on a dime so this is a reasonable concern. We don't want to ship an Xcode package with Swift and SDKs that don't play well together. (Those of you in bleeding-edge open source land are not so lucky…) &nbsp;For this feature there are feasible adoption paths even if the SDK updates slowly so we should be okay.</div><div><br class=""></div><div>If we can't get enough of the SDK to adapt in time then we can make the change in stages, deferring complete adoption until the SDK can catch up. For this feature one interim measure would be to temporarily accept both @warn_unused_result and @discardable, add a temporary compiler flag to choose what the default is for unmarked functions, and set the flag to the old way by default. Then the new SDK could update their code while the old SDK still works. Once the SDK was ready we could remove @warn_unused_result and the compiler flag.&nbsp;</div><div><br class=""></div><div>A simpler staged adoption would be to temporarily accept both @warn_unused_default and @discardable, but ignore them both. The downside there is that we would temporarily get no unused result warnings at all, which sounds bad.</div><div><br class=""></div><div>In any case the problem of SDK malleability is not a show-stopper for acceptance of this proposal. It's not hard to make it work.&nbsp;</div><div><br class=""></div><div><br class=""></div><div>--&nbsp;</div><div>Greg Parker &nbsp; &nbsp; <a href="mailto:gparker@apple.com" class="">gparker@apple.com</a>&nbsp; &nbsp; &nbsp;Runtime Wrangler</div><div><br class=""></div><div><br class=""></div></body></html>