<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 Feb 1, 2016, at 4:08 PM, Tony Parker &lt;<a href="mailto:anthony.parker@apple.com" class="">anthony.parker@apple.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" class=""><div class=""><br class="Apple-interchange-newline">On Feb 1, 2016, at 1:49 PM, Matthew Johnson &lt;<a href="mailto:matthew@anandabits.com" class="">matthew@anandabits.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Feb 1, 2016, at 3:38 PM, Drew Crawford via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Feb 1, 2016, at 1:02 PM, Tony Parker &lt;<a href="mailto:anthony.parker@apple.com" class="">anthony.parker@apple.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><span class="" style="font-family: HelveticaNeue; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;">Types like NSURL are intended to be the canonical URL for everyone to use,</span></div></blockquote></div><br class=""><div class=""><br class=""></div><div class="">I think the "canonical URL for everyone to use"<span class="Apple-converted-space">&nbsp;</span><b class="">must</b><span class="Apple-converted-space">&nbsp;</span>be a value type / struct. &nbsp;To me this seems axiomatic.</div><div class=""><br class=""></div><div class="">Meanwhile (NS)URL<span class="Apple-converted-space">&nbsp;</span><b class="">cannot</b><span class="Apple-converted-space">&nbsp;</span>be a value type because of the Darwin compatibility mandate, and to change from value-&gt;reference semantics would be "off the charts" breakage severity.</div><div class=""><br class=""></div><div class="">This is a requirements conflict. &nbsp;corelibs-foundation can either be Darwin-compatible<span class="Apple-converted-space">&nbsp;</span><b class="">or</b><span class="Apple-converted-space">&nbsp;</span>it can be canonical, but we cannot do both. &nbsp;Right now we have chosen Darwin-compatible, so we must let the canonical requirement go. &nbsp; Unprefixed "URL" should be reserved for the value type that can actually work as a canonical API.</div></div></div></blockquote><div class=""><br class=""></div><div class="">+1. &nbsp;I was pretty shocked by that sentence as well. &nbsp;The intention to canonize reference types just because they already exist could not be INVHO further from the right intention for Swift. &nbsp;I understand and accept the short-term rationale for leveraging them. &nbsp;I do not understand why we would settle for them as the long-term canonical solution.</div><br class=""></div></div></div></blockquote><div class=""><br class=""></div><div class="">Foundation is not a short term library. The reason we put it into Swift core libraries is because we intend for it to provide the most commonly needed functionality in one well-known, well-maintained place.</div></div></div></blockquote><div><br class=""></div><div>I applaud making the functionality available in a single source. &nbsp;My objection is specifically focused on adopting reference types where value types make sense just because they already exist in Foundation.</div><br class=""><blockquote type="cite" class=""><div class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class=""><br class=""></div><div class="">Dropping the NS is one part of how we intend to make Foundation a great part of Swift. We are working on other ways as well.</div></div></div></blockquote><div><br class=""></div><div>I hope that transitioning to value types where that is the more Swifty design is a part of that plan if we’re going to stick with Foundation (which is fine as long as it doesn’t interfere with the desire for value types).</div><div><br class=""></div><div>-Matthew</div><br class=""><blockquote type="cite" class=""><div class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class=""><br class=""></div><div class="">- Tony</div></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""><blockquote type="cite" class=""><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><blockquote type="cite" class=""><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><br class=""></div><div class="">It's not clear to me if Foundation will actually be in a position to provide that API (e.g. in Swift 4, etc.) or whether some third party will provide a "URL" framework that gains traction first. &nbsp;But in any case, we are not going to do it in the Swift 3 window, unless a lot of core scope decisions get re-decided.</div><div class=""><br class=""></div><div class=""><br class=""></div></div>_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></div></blockquote></div></div></div></blockquote></div></div></blockquote></div><br class=""></body></html>