[swift-evolution] [late pitch] UnsafeBytes proposal

Karl razielim at gmail.com
Tue Aug 16 21:13:08 CDT 2016


> On 16 Aug 2016, at 01:14, David Sweeris via swift-evolution <swift-evolution at swift.org> wrote:
> 
>> On Aug 15, 2016, at 13:55, Michael Ilseman via swift-evolution <swift-evolution at swift.org> wrote:
> 
>> 
>> It seems like there’s a potential for confusion here, in that people may see “UInt8” and assume there is some kind of typed-ness, even though the whole point is that this is untyped. Adjusting the header comments slightly might help:
>> 
>> 
>> /// A non-owning view of raw memory as a collection of bytes.
>> ///
>> /// Reads and writes on memory via `UnsafeBytes` are untyped operations that
>> /// do no require binding the memory to a type. These operations are expressed 
>> /// in terms of `UInt8`, though the underlying memory is untyped.
>> 
>>>> 
>> You could go even further towards hinting this fact with a `typealias Byte = UInt8`, and use Byte throughout. But, I don’t know if that’s getting too excessive.
> 
> I don't think that's too excessive at all. I might even go further and say that we should call it "Untyped" instead of "Byte", to really drive home the point (many people see "byte" and think "8-bit int", which is merely a side effect of CPUs generally not having support for types *other* than ints and floats, rather than a reflection of the true "type" of the data).
> 
> - Dave Sweeris
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
‘Byte’ is sufficient, I think.

In some sense, it is typed as bytes. It reflects the fact that anything that is representable to the computer must be expressible as a sequence of bits (the same way we have string de/serialisation — which of course is not to say that the byte representation is good for serialisation purposes). “withUnsafeBytes” can be seen as doing a reversible type conversion the same way LosslessStringConvertible does; only in this case the conversion is free.

Karl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160817/fe71ec4d/attachment.html>


More information about the swift-evolution mailing list