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

I have not looked into how much of the old API surface the new package covers in an equivalent way, just wondered if you focused on the cross-platform APIs first.

No, I can reproduce with the latest trunk snapshot on linux, and the OSS compiler source shows no change to include these new OS's:

> ../swift-DEVELOPMENT-SNAPSHOT-2024-03-31-a-ubi9/usr/bin/swift build --build-tests
---snip---
/home/fina/swift-foundation/Sources/FoundationEssentials/Data/Data+Error.swift:22:9: warning: unknown operating system for build configuration 'os'
20 │ internal func logFileIOErrno(_ err: Int32, at place: String) {
21 │ #if FOUNDATION_FRAMEWORK
22 │ #if !os(bridgeOS)
   │         ├─ warning: unknown operating system for build configuration 'os'                                                                                        │         ╰─ note: did you mean 'iOS'?
23 │     let errnoDesc = String(cString: strerror(err))
24 │     Logger(_NSOSLog()).error("Encountered \(place) failure \(err) \(errnoDesc)")
---snip---
/home/fina/swift-foundation/Tests/FoundationEssentialsTests/ProcessInfoTests.swift:93:16: warning: unknown operating system for build configuration 'os'            91 │     func testOperatingSystemVersion() {
 92 │         let version = _ProcessInfo.processInfo.operatingSystemVersion
 93 │         #if os(visionOS)
    │                ├─ warning: unknown operating system for build configuration 'os'
    │                ├─ note: did you mean 'iOS'?
    │                ╰─ note: did you mean 'Windows'?
 94 │         let expectedMinMajorVersion = 1
 95 │         #else

The good news is that there are only three instances of calling these new OS's in swift-foundation:

> ag "(vision|bridge)OS" .
Tests/FoundationInternationalizationTests/CalendarRecurrenceRuleTests.swift
20:@available(macOS 15, iOS 18, tvOS 18, watchOS 11, visionOS 2, *)

Tests/FoundationEssentialsTests/ProcessInfoTests.swift
93:        #if os(visionOS)

Sources/FoundationEssentials/Data/Data+Error.swift
22:#if !os(bridgeOS)

The bad news is that SwiftPM will dump such warnings and errors out over and over again, likely once for each file in a target. I wish somebody on the SwiftPM team would work on reducing that.

1 Like