Thanks for your replies.

Something like an OrderedSet should always be in the standard library to serve 
the best possible performance and thats why I’m not in favor of a third party 
implementation.

The biggest issue seems to be bridging. I really don’t want to „ignore“ 
bridging, because having a NSorderedSset from CoreData will definitely an usual 
case and CoreData is written in objective-c. So in a lot of use cases having a 
NSOrderedSet or an (Swift-)OrderedSet without bridging won’t make a difference. 
So it doesn’t make sense for me to implement it without bridging.

I don’t know whats planned for swift 5 and later but source breaking changes 
will most likely be worse when waiting.

- Maik

> Am 10.06.2017 um 17:42 schrieb Tony Parker <[email protected]>:
> 
> This is still something I want to do, but I suspect it will require some 
> coordination work with the NSOrderedSet ref type in Foundation.
> 
> Also, as Doug says, there is a larger question too of how we make source 
> breaking changes like this in Swift 5 (I think we’re probably out of runway 
> for Swift 4 at this point).
> 
> We would want to bridge this in from the SDK, but if it follows the pattern 
> of our value types, we need to make API changes from the ref type to make it 
> fit in correctly with Swift-only concepts like the Collection protocols.
> 
> - Tony
> 
>> On Jun 9, 2017, at 4:28 PM, Douglas Gregor via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> 
>>> 
>>> On Jun 9, 2017, at 10:19 AM, Xiaodi Wu via swift-evolution 
>>> <[email protected] <mailto:[email protected]>> wrote:
>>> 
>>> Let me try to redirect this conversation, if I may.
>>> 
>>> As far as I can tell, SE-0069 states plainly that the plan of record is to 
>>> offer a value type called OrderedSet in Foundation, but resources to design 
>>> and implement were not then available.
>>> 
>>> So, little point in having a vote as to whether one is in favor of 
>>> OrderedSet or not. In my view, the questions to be answered are:
>>> 
>>> For the core team–
>>> 
>>> * Is it still the plan to offer value types postponed from SE-0069 as a 
>>> future addition to Foundation?
>> 
>> *I* think it’s still a good idea, and I suspect that others on the core team 
>> will agree.
>> 
>>> * If so, is that a priority in the Swift 5 timeframe, and how can the 
>>> community help to bring about this addition?
>> 
>> I wouldn’t consider it a “priority”, in the sense that I can’t imagine 
>> anything in Swift 5 that would absolutely require us to introduce this 
>> functionality in that time frame. It’s a bit of a nice-to-have-at-any-point, 
>> noting of course that bridging NSOrderedSet in existing APIs is a nontrivial 
>> source-breaking change.
>> 
>> Having a proposed API and implementation on hand makes it easier to add this 
>> functionality, of course.
>> 
>>> If not, for the whole community–
>>> 
>>> * Is it wise to implement such a type in the standard library? Should we 
>>> simply bring over the native implementation from Swift Package Manager? 
>>> What are the implications for bridging?
>> 
>> Obviously, we’d want an efficient copy-on-write, native implementation; the 
>> Swift Package Manager implementation is a bit more bare-bones than we’d 
>> want: absolute performance matters, so having a separate Set + Array in the 
>> struct probably isn’t good enough. Bridging performance matters, so we’d 
>> probably want the one-pointer representation like array uses where the 
>> pointer can be vended directly to Objective-C.
>> 
>>      - Doug
>> 
>>> On Fri, Jun 9, 2017 at 11:38 Remy Demarest via swift-evolution 
>>> <[email protected] <mailto:[email protected]>> wrote:
>>> +1 for ordered set and dictionary, and please add ordered dictionary in 
>>> ObjC as well.
>>> 
>>> Envoyé de mon iPhone
>>> 
>>> Le 9 juin 2017 à 03:11, Robert Bennett via swift-evolution 
>>> <[email protected] <mailto:[email protected]>> a écrit :
>>> 
>>>> +1, and would also like to see OrderedDictionary as well.
>>>> 
>>>> On Jun 9, 2017, at 12:50 AM, Jeff Kelley via swift-evolution 
>>>> <[email protected] <mailto:[email protected]>> wrote:
>>>> 
>>>>> I would be in favor of it; there have been a few times (including Core 
>>>>> Data, as you mentioned) where I would have used it had it been available.
>>>>> 
>>>>> 
>>>>> Jeff Kelley
>>>>> 
>>>>> [email protected] <mailto:[email protected]> | @SlaunchaMan 
>>>>> <https://twitter.com/SlaunchaMan> | jeffkelley.org 
>>>>> <http://jeffkelley.org/>
>>>>>> On Jun 7, 2017, at 2:10 PM, Maik Koslowski via swift-evolution 
>>>>>> <[email protected] <mailto:[email protected]>> wrote:
>>>>>> 
>>>>>> Hello,
>>>>>> 
>>>>>> in the past there have been a few requests for an OrderedSet 
>>>>>> implementation in Swift. In the proposal 
>>>>>> https://github.com/apple/swift-evolution/blob/master/proposals/0069-swift-mutability-for-foundation.md
>>>>>>  
>>>>>> <https://github.com/apple/swift-evolution/blob/master/proposals/0069-swift-mutability-for-foundation.md>
>>>>>>  was mentioned that the OrderedSet will be considered for the feature.
>>>>>> 
>>>>>> However, since then there were a few discussions on OrderedSet but it 
>>>>>> doesn’t get much attention and there wasn’t any comment about it from 
>>>>>> the swift team.
>>>>>> 
>>>>>> I want to bring up some points, why an OrderedSet is needed in the base 
>>>>>> library.
>>>>>> 
>>>>>> 1. CoreData is probably the most obvious place where people would use an 
>>>>>> ordered set. Especially when working with large amounts of data, 
>>>>>> presorting can save a lot of time and battery life. If a bridgeable 
>>>>>> ordered set was part of the standard library we could use a ordered set 
>>>>>> in swift without having to use the NSOrderedSet from objective c. Which 
>>>>>> would be pretty nice in my opinion. Even when using a NSOrderedSet we 
>>>>>> couldn’t have a generic version of it.
>>>>>> 
>>>>>> 2. A shared datamodel between App and Server. One main advantage of 
>>>>>> having web servers written in Swift is that we can share code between 
>>>>>> the server and the app. For servers performance does matter a lot, since 
>>>>>> they are usually working with much more data than apps. Databases are 
>>>>>> represented as sets and fetching sorted data from the database can be 
>>>>>> represented as an ordered set. However, since we don’t have ordered sets 
>>>>>> we have to choose either a normal set or an array. Sets don’t have an 
>>>>>> order and arrays can contain the same object multiple times, which makes 
>>>>>> them both a less suitable choice.
>>>>>> 
>>>>>> 3. Swift has the potential to be used for education. There is a lot of 
>>>>>> support, for example the playground app on iPad. When it comes to the 
>>>>>> theory behind data structures and algorithms or to the theory of 
>>>>>> computation a defined order plays an important role.
>>>>>> 
>>>>>> The biggest issue is that we always have to copy data from a set into an 
>>>>>> array to have it in a sorted order with losing the safety of uniqueness. 
>>>>>> Which is not suitable for a safe and performance oriented programming 
>>>>>> language at all.
>>>>>> 
>>>>>> Last but not least, it fits in the goals of Swift 4 stage 2 and an 
>>>>>> ordered set can be found in other popular programming languages, too.
>>>>>> 
>>>>>> What do you think?
>>>>>> 
>>>>>> Best regards,
>>>>>> 
>>>>>> Maik
>>>>>> 
>>>>>> _______________________________________________
>>>>>> 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>
>>>>> 
>>>>> _______________________________________________
>>>>> 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>
>>>> _______________________________________________
>>>> 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>
>>> _______________________________________________
>>> 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>
>>> _______________________________________________
>>> 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>
>> 
>> _______________________________________________
>> 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>

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to