[swift-evolution] [Pitch] deprecating ManagedBufferPointer
Erik Eckstein
eeckstein at apple.com
Mon Oct 10 17:12:28 CDT 2016
The purpose of ManagedBufferPointer is to create a buffer with a custom class-metadata to be able to implement a custom deinit (e.g. to destroy the tail allocated elements).
It was used in Array (before I replaced it with the new tail-allocated-array-built-ins). But now it’s not used anymore in the standard library.
As a replacement for ManagedBufferPointer one can just derive a class from ManagedBuffer and implement the deinit in the derived class.
final class MyBuffer : ManagedBuffer<MyHeader, MyElements> {
deinit {
// do whatever needs to be done
}
}
// creating MyBuffer:
let b = MyBuffer.create(minimumCapacity: 27, makingHeaderWith: { myb in return MyHeader(...) })
IMO ManagedBuffer is much cleaner than ManagedBufferPointer (it doesn’t need this custom bufferClass to be passed to the constructor). Also ManagedBufferPointer doesn’t use SIL tail-allocated arrays internally. Although this is not something visible to the programmer, it makes life easier for the compiler.
So I suggest that we deprecate ManagedBufferPointer.
Erik
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20161010/a34336e9/attachment.html>
More information about the swift-evolution
mailing list