With the commit of the Catalina merge into 5.3, swift-corelibs-foundation is now more closely aligned to the behavior and functionality of macOS Catalina. (Up until 5.2, it was aligned to macOS Mojave.) I wanted to highlight this merge because it may have some effects you want to look out for:
Several changes have occurred to multiple Core Foundation components that correspond to bug fixes and performance improvements that also occurred in macOS Catalina.
URL parsing (through
NSURL) has changed to match the deprecation, and the new behavior, of
NSURL.parameterStringin macOS Catalina. (Parameter strings are no longer returned separately from that property, but as part of the
.path.) On Apple platforms, this affects code that is built using the Catalina or iOS 13 SDK; on Swift for Linux, all application code is affected as soon as you upgrade to the Swift version that contains the new Foundation (e.g. by basing your Docker container on a newer image once available.)
Certain uses of NSString methods to examine strings that contain emoji that became available alongside Catalina and iOS 13 will now correctly match the behavior you'd expect when e.g. iterating substrings.
In general, starting with Swift 5.1, we have been much stricter about source compatibility in a way that matches more closely the Darwin approach: you will not see API disappear, but, rather, changes will be marked deprecated with replacements added much in the way API do when changed on Apple platforms. In cases like
parameterString, deprecations that occur on Apple platforms will also eventually sync up like they did today.
While Linux is the focus of the announcement, this version of Foundation is available to all ports of Swift, and some care has been taken to avoid breaking builds for popular ports. Please let me know ASAP if you manage a platform port that requires corrective intervention in Foundation for building.
You will be able to test this new version of Foundation soon with a Swift 5.3 development snapshot download. If you find issues, I will watch both this thread and our preferred way of getting Swift bugs via Jira at https://bugs.swift.org/.