Thanks i'll try to clarify in the comments that The memory is read out as UInt8 
but the memory is untyped. 

Andy

> On Aug 15, 2016, at 11:55 AM, Michael Ilseman <milse...@apple.com> 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.
> 
> 
>>> On Aug 13, 2016, at 9:34 AM, Andrew Trick via swift-evolution 
>>> <swift-evolution@swift.org> wrote:
>>> 
>>> 
>>> On Aug 13, 2016, at 7:12 AM, Félix Cloutier <felix...@yahoo.ca> wrote:
>>> 
>>> And then, we can't really use UnsafeBufferPointer<UInt8> for the purpose of 
>>> UnsafeBytes because we want to expose a different API. Is that right?
>> 
>> UnsafeBufferPointer<UInt8> should be used in the same situation that 
>> UnsafePointer<T> is used for any T. A view over an array of UInt8 that can 
>> bypasses release bounds checks and can interoperate with C.
>> 
>> UnsafeBufferPointer<UInt8> should not be used to erase the memory’s pointee 
>> type.
>> 
>> UnsafeBytes erases the pointee type and gives algorithms a collection of 
>> bytes to work with. It turns out to be an important use case that I very 
>> much want to distinguish from the UnsafeBufferPointer use case. I don’t want 
>> to present users with a false analogy to UnsafeBufferPointer.
>> 
>> -Andy
>> 
>>> 
>>>>> Le 13 août 2016 à 01:44:28, Andrew Trick <atr...@apple.com> a écrit :
>>>>> 
>>>>> 
>>>>>> On Aug 13, 2016, at 12:17 AM, Brent Royal-Gordon 
>>>>>> <br...@architechies.com> wrote:
>>>>>> 
>>>>>> On Aug 12, 2016, at 9:34 PM, Andrew Trick <atr...@apple.com> wrote:
>>>>>> 
>>>>>> That matrix is the correct starting point. UnsafeRawBufferPointer would 
>>>>>> be in the lower right. But it would be nothing more than a raw pointer 
>>>>>> with length. It wouldn’t be a collection of anything. UnsafeBytes is a 
>>>>>> powerful abstraction on top of what we just called 
>>>>>> UnsafeRawBufferPointer. It is a collection of typed elements `UInt8`. 
>>>>> 
>>>>> But how is that different from UnsafeBufferPointer? Put another way, what 
>>>>> is it about the UnsafeRawPointer -> UnsafeBytes relationship that isn't 
>>>>> true about UnsafePointer -> UnsafeBufferPointer, and that therefore 
>>>>> justifies the different name?
>>>> 
>>>> 
>>>> Giving UnsafeRawPointer a memory size doesn’t imply a collection of any 
>>>> specific type. You’re supposed to used bindMemory(to:capacity:) to get a 
>>>> collection out of it. Giving UnsafeBytes a name analogous to 
>>>> UnsafeBufferPointer only exposes that subtle difference, which is actually 
>>>> irrelevant. In the common case, users don’t need to know how 
>>>> UnsafeRawPointer works, so why start with that analogy?
>>>> 
>>>> The use cases justify the name. `UnsafeBytes` is what developers have been 
>>>> trying to get all along with `UnsafeBufferPointer<UInt8>`. The concept 
>>>> already exists to developers, but we have failed to give them a distinct, 
>>>> simple, and intuitive name for it, not to mention a correct implementation.
>>>> 
>>>> -Andy
>>> 
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to