Migration Plan: swift-corelibs-foundation to swift-foundation

Hi everyone,

It's time for an update on this plan. We've made a lot of progress, including landing URL support in swift-foundation, @compnerd's many fixes for Windows, and much more.

One area that has been challenging is sorting out the details on how to move from toolchain development to package development, given the co-dependencies between projects like swift-syntax, swift-testing, and swift-foundation. swiftpm has received some major upgrades in this area, but there is more work to do.

When reviewing our priorities for this new implementation, the most important goal is to get these new implementations of swift-foundation into as many hands as possible as quickly as possible. Therefore, we have decided to focus on shipping swift-foundation in the Swift toolchain in the short term.

Instead of asking clients to modify their Package.swift files, we will install FoundationEssentials and FoundationInternationalization in the toolchain, and they will be available for any package to import. swift-corelibs-foundation will still be based on these implementations. That work is continuing in this branch of swift-corelibs-foundation.

swift-foundation (and its dependencies) will build with both cmake and swiftpm for all supported Swift platforms.

swift-corelibs-foundation will build with cmake and swiftpm, for non-Darwin platforms only. This helps clarify its role as a compatibility layer where Foundation.framework is not present and reduces the amount of non portable cross-platform C code we need to maintain.

Thanks, and I'm happy to answer questions in this thread.

33 Likes