<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 Oct 2, 2017, at 11:27 PM, Slava Pestov &lt;<a href="mailto:spestov@apple.com" class="">spestov@apple.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Oct 2, 2017, at 10:57 PM, Chris Lattner &lt;<a href="mailto:clattner@nondot.org" class="">clattner@nondot.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">1) Why not another level of access control? &nbsp;There is a reasonable argument that what you’re doing is making something “more public than public” or that you’re making the “body also public”. &nbsp;I’m not strongly in favor of this design approach, but if you agree, the doc should explain why you’re not in favor of it.</span></div></blockquote></div><br class=""><div class="">Oh, I forgot to address this point. I’m against this because even though this proposal says inlinable requires public, it is really orthogonal to public, because eventually we will have something like the current @_versioned attribute, where internal (or even private, as some have suggested) functions can be “public ABI”. For example,</div></div></div></blockquote><div><br class=""></div><div>I’m also against it, because it should theoretically be orthogonal to open/public. &nbsp;While we could define “fragile” as being “more permissive than open and public”, that is weird and access control is already too complicated. &nbsp;:-)</div><div><br class=""></div><div>-Chris</div><div><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div class="">@_versioned func myInternalDetails() {</div><div class="">&nbsp; // …</div><div class="">}</div><div class=""><br class=""></div><div class="">@inlinable</div><div class="">public func myPublicFunction() {</div><div class="">&nbsp; myInternalDetails() // I can reference this from an inlinable function, but users can’t call it directly</div><div class="">}</div><div class=""><br class=""></div><div class="">Slava</div></div></div></blockquote></div><br class=""></body></html>