<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="">Proposal Link:&nbsp;<a href="https://github.com/apple/swift-evolution/blob/master/proposals/0163-string-revision-1.md" class="">https://github.com/apple/swift-evolution/blob/master/proposals/0163-string-revision-1.md</a><div class=""><div class=""><br class=""></div><div class="">Hello Swift Community,</div><div class=""><br class=""></div><div class="">The review of SE-0163 "Improve Interaction Between `private` Declarations and Extensions” ran from&nbsp;April 5th through 11th, 2017. The proposal is&nbsp;<b class="">accepted with revisions</b>.</div><div class=""><br class=""></div><div class="">Feedback from the community was positive. &nbsp;There was a question during the discussion about how best to construct a String from an array of characters that may or may not be NUL-terminated. &nbsp;Upon reflection, the proposal authors decided that it would best if String provided an initializer that took a collection of code units; feedback on that idea was also positive. &nbsp;The proposal authors also decided that it would be best if strings could be easily converted to a C string with an arbitrary encoding; this was not discussed during the review, but the core team felt that this was obvious enough and sufficiently similar to other API that it did not demand an additional formal review period. &nbsp;Accordingly, this proposal has been accepted with the following two revisions:</div><div class=""><br class=""></div><div class="">1. String will also add the following initializer:</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">&nbsp;&nbsp;///&nbsp;Constructs a `String` having the same contents as `codeUnits`.<br class="">&nbsp;&nbsp;///<br class="">&nbsp;&nbsp;///&nbsp;- Parameter codeUnits: a collection of code units in<br class="">&nbsp;&nbsp;///&nbsp; &nbsp;the given `encoding`.<br class="">&nbsp;&nbsp;///&nbsp;- Parameter encoding: describes the encoding in which the code units<br class="">&nbsp;&nbsp;///&nbsp; &nbsp;should be interpreted.<br class="">&nbsp;&nbsp;init&lt;C:&nbsp;Collection,&nbsp;Encoding:&nbsp;UnicodeEncoding&gt;(codeUnits: C,&nbsp;encoding: Encoding)</font></div><div class=""><br class=""></div><div class="">2. String will also add the following method, analogous to the withCString method that has already been proposed:</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">&nbsp;&nbsp;///&nbsp;Invokes the given closure on the contents of the string, represented as a<br class="">&nbsp;&nbsp;///&nbsp;pointer to a null-terminated sequence of code units in the given encoding.<br class="">&nbsp;&nbsp;func&nbsp;withCString&lt;Result,&nbsp;Encoding:&nbsp;UnicodeEncoding&gt;(encoding: Encoding,<br class="">&nbsp; &nbsp;&nbsp;_&nbsp;body: (UnsafePointer&lt;Encoding.CodeUnit&gt;)&nbsp;throws&nbsp;-&gt;&nbsp;Result)&nbsp;rethrows&nbsp;-&gt;&nbsp;Result</font></div><div class=""><br class=""></div><div class="">John McCall</div><div class="">Review Manager</div></div></body></html>