<div dir="ltr">aren’t there other benefits to dynamic linking though? i’m not arguing against dynamic linking, i’m arguing that functions that should be part of ABI should *always* be called through the entry point and functions that can be emitted into the client should *never* be called through the entry point. otherwise it introduces complexity and potential bugs and internally inconsistent behavior for no obvious benefit. the only reason inlineable exists is for performance. a library author who marks something inlineable and then tries to make the implementation itself more efficient is not going to see much benefit from it just by pushing out the updated library because no one is going to have the updated library on their device anyway. we might as well follow Swift’s safety paradigm and make it consistent. as for security, those functions should never have been marked inlineable to begin with because even if a new implementation is available (and it won’t) it doesn’t mean all the call sites will use the updated version. <br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Dec 24, 2017 at 11:49 PM, Slava Pestov <span dir="ltr">&lt;<a href="mailto:spestov@apple.com" target="_blank">spestov@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space">Sure, users download new apps more often than they download new OSes, but you’re basically arguing against dynamic linking at this point. If everything was statically linked, vendors would not be able to ship security updates, etc.<span class="HOEnZb"><font color="#888888"><div><br></div></font></span><div><span class="HOEnZb"><font color="#888888">Slava</font></span><div><div class="h5"><br><div><br><blockquote type="cite"><div>On Dec 24, 2017, at 8:46 PM, Kelvin Ma &lt;<a href="mailto:kelvin13ma@gmail.com" target="_blank">kelvin13ma@gmail.com</a>&gt; wrote:</div><br class="m_-6778226667310652937Apple-interchange-newline"><div><div dir="ltr">in theory this could happen but if you ask me this is such an exceedingly rare case that i don’t count much net benefit from it. most ithing users (that i know) avoid ios updates like hell but have automatic app updates turned on. so 99% of the time i would expect the app version to be more recent than the library version.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Dec 24, 2017 at 9:59 PM, Slava Pestov <span dir="ltr">&lt;<a href="mailto:spestov@apple.com" target="_blank">spestov@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><br><div><span><br><blockquote type="cite"><div>On Dec 24, 2017, at 4:00 PM, Kelvin Ma via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br class="m_-6778226667310652937m_8029153628071452797Apple-interchange-newline"><div><div dir="ltr">why can’t we just remove inlineable functions from ABI altogether? if the argument is that app code won’t be able to take advantage of improved implementations in future library versions i don’t think that makes sense at all i would assume client code gets recompiled much more often than library code and their updates are much more likely to be downloaded by users than library updates. <br></div></div></blockquote><div><br></div></span><div>This is not necessarily true. If Swift were to ship with the OS, updating the OS might install a new Swift standard library without updating all of your apps.</div><span class="m_-6778226667310652937HOEnZb"><font color="#888888"><div><br></div><div>Slava</div></font></span><div><div class="m_-6778226667310652937h5"><br><blockquote type="cite"><div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Dec 24, 2017 at 6:04 PM, Howard Lovatt via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><span style="background-color:rgba(255,255,255,0)">Proposal link:</span><span style="background-color:rgba(255,255,255,0)"> </span><a href="https://github.com/apple/swift-evolution/blob/master/proposals/0193-cross-module-inlining-and-specialization.md" dir="ltr" style="background-color:rgba(255,255,255,0)" target="_blank">https://github.com/apple<wbr>/swift-evolution/blob/master/p<wbr>roposals/0193-cross-module-inl<wbr>ining-and-specialization.md</a><br><ul style="margin:15px 0px;padding-left:30px"><li style="margin:0px"><span><p style="margin:0px 0px 15px"><span style="background-color:rgba(255,255,255,0)">What is your evaluation of <a dir="ltr">the proposal</a>?</span></p></span><p style="margin:0px 0px 15px"><span style="background-color:rgba(255,255,255,0)">-1</span></p><p style="margin:0px 0px 15px"><span style="background-color:rgba(255,255,255,0)">The proposal puts all the emphasis on the programmer. It is better for the compiler to decide if something is to be inclined both across modules and within modules. </span></p><p style="margin:0px 0px 15px"><span style="background-color:rgba(255,255,255,0)">If something is made public then it should be fixed for a given major version number. No need for extra annotation. </span></p><p style="margin:0px 0px 15px"><span style="background-color:rgba(255,255,255,0)">A module system that allows versioning is a better solution. </span></p></li><li style="margin:0px"><span><p style="margin:0px 0px 15px"><span style="background-color:rgba(255,255,255,0)">Is the problem being addressed significant enough to warrant a change to Swift?</span></p></span><p style="margin:0px 0px 15px"><span style="background-color:rgba(255,255,255,0)">Yes significant but wrong solution </span></p></li><li style="margin:0px"><span><p style="margin:0px 0px 15px"><span style="background-color:rgba(255,255,255,0)">Does this proposal fit well with the feel and direction of Swift?</span></p></span><p style="margin:0px 0px 15px"><span style="background-color:rgba(255,255,255,0)">No, cluttering up declarations is completely against the clarity of Swift. For example who other than people on this group will understand @inline(never) @inlinable. </span></p></li><li style="margin:0px"><span><p style="margin:0px 0px 15px"><span style="background-color:rgba(255,255,255,0)">If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?</span></p></span><p style="margin:0px 0px 15px"><span style="background-color:rgba(255,255,255,0)">Yes C and C++ and found the equivalent of these annotations problematic. In Java they eliminated all this and let the compiler do the work. In practice this works much better. </span></p><p style="margin:0px 0px 15px"><span style="background-color:rgba(255,255,255,0)">Perhaps the compiler should publish the SIL or LLVM for all public functions. Analogous to Java’s class files. This sort of system works really will, much better than C and C++. </span></p></li><li style="margin:0px"><span><p style="margin:0px 0px 15px"><span style="background-color:rgba(255,255,255,0)">How much effort did you put into your review? A glance, a quick reading, or an in-depth study?</span></p></span><div>Followed the discussions and read the proposal. The proposal doesn’t seem to encompass all the discussions. It would be nice if the proposal had a much more extensive summary of alternatives suggested. </div></li></ul><div id="m_-6778226667310652937m_8029153628071452797m_3618473774001932738AppleMailSignature">-- Howard. </div><span><div><br>On 20 Dec 2017, at 7:19 pm, Ted Kremenek via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br><br></div><blockquote type="cite"><div><p style="margin:15px 0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)"><span>The proposal</span> is available here:</p>
<blockquote style="margin:5px 5px;padding-left:10px;border-left:thin solid #1abc9c"><div style="margin:0px"><span><a href="https://github.com/apple/swift-evolution/blob/master/proposals/0193-cross-module-inlining-and-specialization.md" target="_blank">https://github.com/apple/swift<wbr>-evolution/blob/master/proposa<wbr>ls/0193-cross-module-inlining-<wbr>and-specialization.md</a></span></div>
</blockquote><p style="margin:15px 0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">Reviews are an important part of the Swift evolution process. All review feedback should be sent to the swift-evolution mailing list at:</p>
<blockquote style="margin:5px 5px;padding-left:10px;border-left:thin solid #1abc9c"><div style="margin:0px"><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a></span></div>
</blockquote><p style="margin:15px 0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">or, if you would like to keep your feedback private, directly to the review manager. </p><p style="margin:15px 0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">When replying, please try to keep <span>the proposal</span> link at the top of the message:</p>
<blockquote style="margin:5px 5px;padding-left:10px;border-left:thin solid #1abc9c"><div style="margin:0px">Proposal link: <span><a href="https://github.com/apple/swift-evolution/blob/master/proposals/0193-cross-module-inlining-and-specialization.md" target="_blank">https://github.com/apple/swift<wbr>-evolution/blob/master/proposa<wbr>ls/0193-cross-module-inlining-<wbr>and-specialization.md</a></span><br>
...<br>
Reply text<br>
...<br>
Other replies</div>
</blockquote>
<h3 id="m_-6778226667310652937m_8029153628071452797m_3618473774001932738toc_0" style="margin:20px 0px 10px;padding:0px;font-size:18px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">What goes into a review of a proposal?</h3><p style="margin:15px 0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">The goal of the review process is to improve <span>the proposal</span> under review through constructive criticism and, eventually, determine the direction of Swift. </p><p style="margin:15px 0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">When reviewing a proposal, here are some questions to consider:</p>
<ul style="margin:15px 0px;padding-left:30px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">
<li style="margin:0px"><p style="margin:0px 0px 15px">What is your evaluation of <span>the proposal</span>?</p>
</li>
<li style="margin:0px"><p style="margin:0px 0px 15px">Is the problem being addressed significant enough to warrant a change to Swift?</p>
</li>
<li style="margin:0px"><p style="margin:0px 0px 15px">Does this proposal fit well with the feel and direction of Swift?</p>
</li>
<li style="margin:0px"><p style="margin:0px 0px 15px">If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?</p>
</li>
<li style="margin:0px"><p style="margin:0px 0px 15px">How much effort did you put into your review? A glance, a quick reading, or an in-depth study?</p>
</li>
</ul><div style="margin-top:15px;margin-right:0px;margin-left:0px;font-family:Helvetica,arial,sans-serif;background-color:rgb(255,255,255);margin-bottom:0px!important"><br class="m_-6778226667310652937m_8029153628071452797webkit-block-placeholder"></div></div></blockquote></span></div><br>______________________________<wbr>_________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a><br>
<br></blockquote></div><br></div>
______________________________<wbr>_________________<br>swift-evolution mailing list<br><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a><br></div></blockquote></div></div></div><br></div></blockquote></div><br></div>
</div></blockquote></div><br></div></div></div></div></blockquote></div><br></div>