<div dir="ltr"><div>+1 overall.</div><div><br></div>Is there any hope for a diagnostic to call violations of the issue outlined in the following passage out?<br><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span style="color:rgb(36,41,46);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px">any passing of </span><code style="box-sizing:border-box;font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:13.600000381469727px;padding:0.2em 0px;margin:0px;background-color:rgba(27,31,35,0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;color:rgb(36,41,46)">self</code><span style="color:rgb(36,41,46);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px"> into an API that takes a concrete </span><code style="box-sizing:border-box;font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:13.600000381469727px;padding:0.2em 0px;margin:0px;background-color:rgba(27,31,35,0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;color:rgb(36,41,46)">String</code><span style="color:rgb(36,41,46);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px"> will need to be rewritten as </span><code style="box-sizing:border-box;font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:13.600000381469727px;padding:0.2em 0px;margin:0px;background-color:rgba(27,31,35,0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;color:rgb(36,41,46)">String(self)</code><span style="color:rgb(36,41,46);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px">. If </span><code style="box-sizing:border-box;font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:13.600000381469727px;padding:0.2em 0px;margin:0px;background-color:rgba(27,31,35,0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;color:rgb(36,41,46)">Self</code><span style="color:rgb(36,41,46);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px"> is a </span><code style="box-sizing:border-box;font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:13.600000381469727px;padding:0.2em 0px;margin:0px;background-color:rgba(27,31,35,0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;color:rgb(36,41,46)">String</code><span style="color:rgb(36,41,46);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px"> then this should effectively optimize to a no-op, whereas if </span><code style="box-sizing:border-box;font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:13.600000381469727px;padding:0.2em 0px;margin:0px;background-color:rgba(27,31,35,0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;color:rgb(36,41,46)">Self</code><span style="color:rgb(36,41,46);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px"> is a </span><code style="box-sizing:border-box;font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:13.600000381469727px;padding:0.2em 0px;margin:0px;background-color:rgba(27,31,35,0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;color:rgb(36,41,46)">Substring</code><span style="color:rgb(36,41,46);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px"> then this will force a copy, helping to avoid the &quot;memory leak&quot; problems described above.</span></blockquote><div><br></div><div><br></div><div><span style="color:rgb(36,41,46);font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:12px;white-space:pre-wrap;background-color:rgb(234,255,234)">&quot;</span><span style="color:rgb(36,41,46);font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:12px;white-space:pre-wrap;background-color:rgb(234,255,234)">a closure expression which is </span><span style="color:rgb(36,41,46);font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:12px;white-space:pre-wrap;background-color:rgb(234,255,234)">immediately caled,&quot;</span><br></div><div> </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 11, 2017 at 6:32 PM, John McCall 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 style="word-wrap:break-word"><div><span class=""><blockquote type="cite"><div>On May 11, 2017, at 6:08 PM, Nevin Brackett-Rozinsky via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br class="m_1878787250475038781Apple-interchange-newline"><div><div dir="ltr">Looks good at first glance.<div><br></div><div>Is there a diff showing what’s changed though?</div></div></div></blockquote><div><br></div></span>This seems to work:</div><div><br></div><div>  <a href="https://github.com/apple/swift-evolution/compare/4cbb1f1fa836496d4bfba95c4b78a9754690956d...master#diff-e04958ae62d5b65cb356dfe928b24837" target="_blank">https://github.com/apple/<wbr>swift-evolution/compare/<wbr>4cbb1f1fa836496d4bfba95c4b78a9<wbr>754690956d...master#diff-<wbr>e04958ae62d5b65cb356dfe928b248<wbr>37</a></div><div><br></div><div>(Ignore the changes to other files.)</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>John.</div></font></span><div><div class="h5"><div><br><blockquote type="cite"><div><div dir="ltr"><div><div><br></div><div>Nevin</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 11, 2017 at 5:39 PM, John McCall 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 style="word-wrap:break-word"><div>Hello Swift Community,</div><div><span style="background-color:rgb(255,255,255);font-family:-apple-system-body,Helvetica,arial,sans-serif"><br></span></div><div><span style="background-color:rgb(255,255,255);font-family:-apple-system-body,Helvetica,arial,sans-serif">The review of SE-0163: &quot;String Revision: Collection Conformance, C Interop, Transcoding</span><font face="-apple-system-body, Helvetica, arial, sans-serif" style="background-color:rgb(255,255,255)">&quot;</font><span style="background-color:rgb(255,255,255);font-family:-apple-system-body,Helvetica,arial,sans-serif"> begins now and runs through May 15th, 2017.</span></div><div><span style="background-color:rgb(255,255,255);font-family:-apple-system-body,Helvetica,arial,sans-serif"><br></span></div><div><span style="font-family:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">The first version of this proposal was accepted with revisions. The proposed revisions were just a few additions that were publicly requested and agreed to during the first review, and this would not </span><span style="font-family:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">normally</span><span style="font-family:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)"> </span><span style="font-family:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">require a full second review. However, as we worked to implement the proposal, several minor naming changes suggested themselves that had not been previously discussed. The Core Team felt that the most conscientious approach would be to submit the whole proposal for a short re-review.</span></div><div><span style="font-family:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)"><br></span></div><div>The most noticeable change is that the Core Team feels StringProtocol would be a better name for the protocol unifying String and Substring. Unicode was felt to be slightly intimidating. Not using Unicode as the protocol name also has the benefit of allowing it to be used as a namespace to house Unicode-related types.</div><div><p style="margin:15px 0px;font-family:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">The proposal is available here:</p><div><a href="https://github.com/apple/swift-evolution/blob/master/proposals/0163-string-revision-1.md" target="_blank">https://github.com/apple/swift<wbr>-evolution/blob/master/proposa<wbr>ls/0163-string-revision-1.md</a></div></div><div><p style="margin:15px 0px;font-family:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">Reviews are an important part of the Swift evolution process. All reviews should be sent to the swift-evolution mailing list at:</p><p style="margin:15px 0px;font-family:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)"><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a></p><p style="margin:15px 0px;font-family:-apple-system-body,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:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">When replying, please try to keep the proposal link at the top of the message:</p><blockquote style="margin:15px 0px;border-left-width:4px;border-left-style:solid;border-left-color:rgb(221,221,221);padding:0px 15px;background-color:rgb(255,255,255)"><h3 id="m_1878787250475038781m_-4771834191320988260toc_0" style="color:rgb(119,119,119);font-family:-apple-system-body,Helvetica,arial,sans-serif;margin:0px 0px 10px;padding:0px;font-size:18px">Proposal link:</h3><div><a href="https://github.com/apple/swift-evolution/blob/master/proposals/0163-string-revision-1.md" target="_blank">https://github.com/apple/swift<wbr>-evolution/blob/master/proposa<wbr>ls/0163-string-revision-1.md</a></div><div><h3 id="m_1878787250475038781m_-4771834191320988260toc_1" style="color:rgb(119,119,119);font-family:-apple-system-body,Helvetica,arial,sans-serif;margin:20px 0px 10px;padding:0px;font-size:18px"><div style="box-sizing:border-box;margin-top:0px;margin-bottom:0px">Reply text</div><div style="box-sizing:border-box;margin-top:0px;margin-bottom:0px"><br></div><blockquote style="font-weight:normal;box-sizing:border-box;margin:0px 0px 16px;padding:0px 1em;color:rgb(106,115,125);border-left-width:0.25em;border-left-style:solid;border-left-color:rgb(223,226,229);font-family:-apple-system,BlinkMacSystemFont,&#39;Segoe UI&#39;,Helvetica,Arial,sans-serif,&#39;Apple Color Emoji&#39;,&#39;Segoe UI Emoji&#39;,&#39;Segoe UI Symbol&#39;;font-size:16px"><div style="box-sizing:border-box;margin-top:0px;margin-bottom:0px">Other replies</div></blockquote></h3><h5 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-size:0.875em;line-height:1.25;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,&#39;Segoe UI&#39;,Helvetica,Arial,sans-serif,&#39;Apple Color Emoji&#39;,&#39;Segoe UI Emoji&#39;,&#39;Segoe UI Symbol&#39;"><a id="m_1878787250475038781m_-4771834191320988260user-content-what-goes-into-a-review-1" class="m_1878787250475038781m_-4771834191320988260anchor" href="https://github.com/apple/swift-evolution#what-goes-into-a-review-1" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1" target="_blank"><u></u><u></u><u></u><u></u></a></h5></div></blockquote></div><div><h3 id="m_1878787250475038781m_-4771834191320988260toc_2" style="margin:20px 0px 10px;padding:0px;font-size:18px;font-family:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">What goes into a review?</h3><p style="margin:15px 0px;font-family:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, determine the direction of Swift. When writing your review, here are some questions you might want to answer in your review:</p><ul style="margin:15px 0px;padding-left:30px;font-family:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)"><li style="margin:0px">What is your evaluation of the proposal?</li><li style="margin:0px">Is the problem being addressed significant enough to warrant a change to Swift?</li><li style="margin:0px">Does this proposal fit well with the feel and direction of Swift?</li><li style="margin:0px">If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?</li><li style="margin:0px">How much effort did you put into your review? A glance, a quick reading, or an in-depth study?</li></ul><p style="margin:15px 0px;font-family:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)">More information about the Swift evolution process is available at:</p><p style="margin:15px 0px;font-family:-apple-system-body,Helvetica,arial,sans-serif;background-color:rgb(255,255,255)"><a href="https://github.com/apple/swift-evolution/blob/master/process.md" style="color:rgb(65,131,196)" target="_blank">https://github.com/apple/swift<wbr>-evolution/blob/master/process<wbr>.md</a></p></div><div><br></div><div>Thanks,</div><div>John McCall</div><div>Review Manager</div></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/<wbr>mailman/listinfo/swift-<wbr>evolution</a><br></div></blockquote></div><br></div></div></div><br>______________________________<wbr>_________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-<wbr>evolution</a><br>
<br></blockquote></div><br></div>