[swift-evolution] Open Issues Affecting Standard Library API Stability
Dave Abrahams
dabrahams at apple.com
Wed Jul 6 18:54:20 CDT 2016
on Wed Jul 06 2016, Karl <razielim-AT-gmail.com> wrote:
> I’m quite interested in this point:
>
>> Figure out whether RangeReplaceableCollection.replaceRange should accept a Sequence as its argument, and if so implement it.
>
> At the moment `replaceSubrange` takes a sequence,
No, actually at the moment it takes a Collection.
> and lots of methods on RangeReplaceableCollection use that to perform
> their mutation operations. That means that Collections gets iterated
> item-by-item; for example, a String will get parsed out in to
> Characters and added individually to the existing string.
And a String is neither a Sequence nor a Collection.
> In general, depending on which methods you use to mutate a RRC, you
> can expect wildly different performance characteristics. So it’s more
> important to fix than the name might suggest.
It depends on the RRC. Some RRCs can be restructured at the front or
back more cheaply than in the middle.
> I had a PR open for this which added a Collection specialisation, but
> you said this could be handled in a more general way which allows for
> more optimised mutations. I’m curious how this would work; how does
> `RangeReplaceableCollection.replaceSubrange<S:Sequence>(range:, with:
> S)` call a more optimised implementation if S also conforms to
> Collection, if not by adding a specialisation?
I'm sorry, I don't know what you're referring to here. If you have
specific questions about a response to a PR, could you ask them in the
PR? (It doesn't have to be open)
>> On 6 Jul 2016, at 07:50, Dmitri Gribenko via swift-evolution <swift-evolution at swift.org> wrote:
>>
>> On Tue, Jul 5, 2016 at 9:24 PM, Chris Lattner <clattner at apple.com> wrote:
>>> On Jul 5, 2016, at 6:57 PM, Dmitri Gribenko via swift-evolution <swift-evolution at swift.org> wrote:
>>>>
>>>> Hi swift-evolution,
>>>>
>>>> Dave, Max and I have compiled a list of open issues in the standard
>>>> library for which the resolutions could result non-additive API
>>>> changes. Having a resolution (and an implementation of the
>>>> resolution!) for these issues is blocking API stability.
>>>>
>>>> https://gist.github.com/gribozavr/37e811f12b27c6365fc88e6f9645634d
>>>
>>> Thank you for collecting this Dmitri! For the issues in the “low
>>> hanging fruit” list, are the changes all sufficiently "obvious”?
>>> If so, having one proposal tackle all of them in one sweep would be
>>> preferable to reduce process overhead.
>>
>> My subjective assessment:
>>
>>> The global function withUnsafe[Mutable]Pointer(&x) should have an argument label “to”.
>> Obvious.
>>
>>> UnicodeScalar.init(Int) should be failable.
>> Obvious.
>>
>>> withUnsafePointer shouldn't take its argument as inout.
>> Jordan has objections, see https://bugs.swift.org/browse/SR-1956
>>
>>> Remove unsafeAddressOf. We are not aware of any real usecases for
>>> it. If there are any, it should be renamed to unsafeAddress(of:) to
>>> follow the guidelines.
>> Obvious, unless someone comes up with use cases during the review period.
>>
>>> Consider renaming or eliminating ManagedProtoBuffer.
>>> The reason why ManagedProtoBuffer exists is to give the users an
>>> extra bit of type safety inside of the closure passed to
>>> ManagedBuffer.create().
>> Debatable.
>>
>>> String.CharacterView.Iterator should be a custom type rather than
>>> the default, to allow performance optimizations. Audit all other
>>> collections for such opportunities.
>> Obvious.
>>
>>> String(count:, repeatedValue:) and String.append() are ambiguous without an explicit cast to Character.
>> Obvious.
>>
>>> Rename the ~LiteralConvertible protocols according to the resolution of the proposal currently under review.
>> A separate review.
>>
>> Dmitri
>>
>> --
>> main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
>> (j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>
--
Dave
More information about the swift-evolution
mailing list