<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">On March 2, 2016 at 11:06:55 AM, Dmitri Gribenko (<a href="mailto:gribozavr@gmail.com">gribozavr@gmail.com</a>) wrote:</div> <blockquote type="cite" class="clean_bq"><span><div><div></div><div>On Wed, Mar 2, 2016 at 11:03 AM, William Dillon &lt;william@housedillon.com&gt; wrote:
<br>&gt; It does violate the principle of least astonishment, but we should
<br>&gt; acknowledge that the implementation-specific nature of C's char signedness
<br>&gt; is making code *less* portable, not more -- because the same code can mean
<br>&gt; different things on different platforms.  Reflecting the same in Swift makes
<br>&gt; Swift code less portable, too.
<br>&gt;
<br>&gt; Dmitri
<br>&gt;
<br>&gt; That is a fair point, and I agree for the most part.  However, It is my
<br>&gt; intent and expectation that the use of CChar would be limited to the margins
<br>&gt; where C APIs are imported.  Once values become a part of Swift (and used in
<br>&gt; places outside of the C interface) they should have been cast into a pure
<br>&gt; Swift type (such as UInt8, Int8, Int, etc).
<br>
<br>True, but how can you cast a CChar portably into UInt8 or Int8?  Only
<br>via the bitPattern initializer, because the regular initializer will
<br>trap on values outside of the 0..&lt;128 range on signed platforms or
<br>unsigned platforms.
<br>
<br>Dmitri
<br><br></div></div></span></blockquote><br><div>Yes, that’s true. &nbsp;And I think that really gets to the crux of the issue. &nbsp;Right now, Swift is doing that (bitPattern) for you, and you don’t have a say in the matter. &nbsp;However, when you transition from CChar to either Int8 or UInt8 you probably have an awareness of the implications of your actions. &nbsp;You should know whether the important quality is the bit pattern or the binary representation of a numeric value. &nbsp;If it’s the latter, a trap on overflow might by an excellent diagnostic of failed assumptions, if it’s the former use bitPattern.</div><div><br></div><div>- Will</div></body></html>