> On 13 Dec 2016, at 20:33, Dave Abrahams via swift-evolution
> <[email protected]> wrote:
>
>
> on Tue Dec 13 2016, Alexey Komnin <[email protected]
> <mailto:[email protected]>> 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
> [email protected] <mailto:[email protected]>
> 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
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution