> On Jan 17, 2018, at 1:46 PM, Itai Ferber via swift-dev <swift-dev@swift.org> > wrote: > > Hi Lance, > > I read Michael’s emails but I don’t remember at the moment — what is the new > string comparison implementation going to be based on? >
It is the lexicographical ordering of NFC-normalized UTF-16 code units. We use ICU to normalize strings, and there are a number of fast paths for scenarios where portions of strings are already in this canonical form. > Also, how will this affect bridged strings? If I compare two NSStrings, I may > get a different result than if I compare the same two strings as bridged > through String, correct? > If they have type String (i.e. they were bridged), they will get the new ordering semantics. I’m not familiar with how the type NSString is ordered in corelibs-foundation, do you know? Either way, as a different type, NSString could independently choose different ordering semantics. > — Itai > > On 17 Jan 2018, at 13:19, Lance Parker via swift-dev wrote: > > Hey Swift-Dev, > > The swift standard library team have been working on a new implementation > for comparing Swift strings for Swift 5. Michael touched on the motivations > in the State of String email but I’ll summarize here: > > The Swift String comparison implementations on Apple platforms and Linux > differ in results and performance. Apple platforms use CFStringCompare with > no locale, while Linux uses ICU libraries. Unifying the algorithms that Swift > strings use for comparison is reason alone for doing a new implementation. > We've come up with some great common fast paths that speed up comparisons for > a lot of common cases. Our microbenchmarks show up to a 6.8x increase in > performance and there is still some low hanging fruit in our implementation > that would bring further speedups. > > Bare in mind this is not intended to be a replacement for sorting strings > that will be presented to users, for that developers should stick to > NSLocalizedString APIs. > _______________________________________________ > swift-dev mailing list > swift-dev@swift.org > https://lists.swift.org/mailman/listinfo/swift-dev > <https://lists.swift.org/mailman/listinfo/swift-dev> > _______________________________________________ > swift-dev mailing list > swift-dev@swift.org > https://lists.swift.org/mailman/listinfo/swift-dev
_______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev