> 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

Reply via email to