[swift-evolution] Add wrappers for allocWithTailElems_{n} routines

Karl razielim at gmail.com
Tue Dec 13 15:37:58 CST 2016

> On 13 Dec 2016, at 20:33, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
> on Tue Dec 13 2016, Alexey Komnin <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> Hi everyone!
>> I really don't know whether you have discussed it before. So, here is the deal.
>> Currently, Builtin routines like allocWithTailElems_{n} not available
>> outside of stdlib. On the other hand, those routines are widely used
>> in implementation of containers: Array, Set, Dictionary and others.
>> On the other hand, some Builtin routines are wrapped by publicly
>> available operators and functions like unsafeBitCast, (==).
>> ManagedBuffer.create(minimumCapacity:) class method is just a wrapper
>> around call to allocWithTailElems_1 builtin function. So, it is
>> possible to implement some containers, like Deque or linked-list using
>> ManagedBuffer, but it's not enough if developer is going to implement
>> advanced data structures like OrderedSet, LRU-cache or something more
>> complex.
>> Instead, the developers are forced to use complex pointer arithmetic
>> with UnsafeRawPtr. My point is: I think the language must provide all
>> the available tools to build algorithms and data structures. First of
>> all, it should provide the tools used for stdlib implementation.
>> Could we make some ManagedBuffer-alike wrappers around
>> allocWithTailElems_{n} routines?
> Feel free to design and propose these interfaces (in phase 2 of course).
> -- 
> -Dave
> _______________________________________________
> 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>
Would the optimiser hints also possibly be up for making public (_onFastPath() and so)?

You can use them anyway; I don’t know why they’re underscored…

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

More information about the swift-evolution mailing list