> 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