> On Dec 1, 2016, at 11:33 PM, Nate Cook via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> 3) Make all buffer pointers their own slices but use a different index type. 
> If the indices were just wrapped pointers, that would handle the index 
> sharing without needing an additional property on the buffer. We could also 
> maintain integer-based stridable conformance (which greatly simplifies index 
> arithmetic), since the indices would just offset by a byte for raw buffers or 
> a stride for typed buffers.
> 

Unfortunately, switching to non-integer indices would change this from being 
mildly source-breaking to being extremely source-breaking, as there’s lots of 
code out there using buffers today indexing them with integers (including 
integer literals).

The big win with UnsafeBufferPointer having an integer index is it’s a drop-in 
replacement for arrays, so when you hit a performance problem using an array 
you can quickly switch to using a buffer under most circumstances instead 
without having to change much of your code – including code that uses for i in 
0..<myArray.count, of which there is a lot out there in the wild. Switching to 
an opaque index would break anyone doing that.

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to