It’s definitely more effort needed than i thought at first. I can create an API 
suggestion, but that will take a while. Since this will happen in Swift 5 or 
later, we will have enough time anyway.

Does it make sense to create a proposal on GitHub or should I wait at least for 
Swift 5 since this is out of scope for Swift 4?

- Maik

> Am 12.06.2017 um 18:35 schrieb Douglas Gregor <[email protected]>:
> 
> 
>> On Jun 10, 2017, at 8:42 AM, Tony Parker <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> 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).
> 
> Definitely too late for Swift 4. 
> 
> Whether we should do it in Swift 5 depends on the source-compatibility story. 
> The Swift 4 compiler has the ability to present imported types to Swift 3.2 
> differently from Swift 4, which we used to stage in (e.g.) subclass 
> existentials and SDK changes. We could conceivably do the same for 
> NSOrderedSet <-> OrderedSet bridging, suppressing bridging of NSOrderedSet in 
> imported APIs for Swift <= 4.
> 
>> 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.
> 
> Sure, we’d need to design it to fit well with the standard library and 
> provide the APIs people expect from NSOrderedSet.
> 
>       - Doug
> 
>> - 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