diff --git a/.github/workflows/compatibility_tests.yml b/.github/workflows/compatibility_tests.yml index 0e127baf..eb20b1ce 100644 --- a/.github/workflows/compatibility_tests.yml +++ b/.github/workflows/compatibility_tests.yml @@ -36,6 +36,8 @@ jobs: - name: Swift version run: swift --version - name: Run tests against Apple's AttributeGraph on macOS via SwiftPM + env: + OPENGRAPH_LIBRARY_EVOLUTION: 0 run: | swift test \ --build-path .build-compatibility-test-debug diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index f299b1c8..18fdca4e 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -35,6 +35,8 @@ jobs: - name: Swift version run: swift --version - name: Build and run tests in debug mode with coverage + env: + OPENGRAPH_LIBRARY_EVOLUTION: 0 run: | swift test \ -c debug \ @@ -45,6 +47,8 @@ jobs: .build-test-debug/debug/OpenGraphPackageTests.xctest/Contents/MacOS/OpenGraphPackageTests \ > coverage.txt - name: Build and run tests in release mode + env: + OPENGRAPH_LIBRARY_EVOLUTION: 0 run: | swift test \ -c release \ diff --git a/Package.swift b/Package.swift index 6b915acd..3394cf49 100644 --- a/Package.swift +++ b/Package.swift @@ -34,8 +34,8 @@ var sharedCSettings: [CSetting] = [ var sharedSwiftSettings: [SwiftSetting] = [ .enableUpcomingFeature("InternalImportsByDefault"), + .enableExperimentalFeature("Extern"), .swiftLanguageMode(.v5), - .unsafeFlags(["-enable-library-evolution"]), ] // MARK: [env] OPENGRAPH_SWIFT_TOOLCHAIN_PATH @@ -119,6 +119,7 @@ let libraryEvolutionCondition = envEnable("OPENGRAPH_LIBRARY_EVOLUTION") #endif if libraryEvolutionCondition { + // NOTE: -enable-library-evolution is not supported on `swift build` yet. sharedSwiftSettings.append(.unsafeFlags(["-enable-library-evolution"])) } diff --git a/Sources/OpenGraph/Runtime/TupleType.swift b/Sources/OpenGraph/Runtime/TupleType.swift index e8f296ff..fddf1e4b 100644 --- a/Sources/OpenGraph/Runtime/TupleType.swift +++ b/Sources/OpenGraph/Runtime/TupleType.swift @@ -75,15 +75,15 @@ extension UnsafeTuple { // MARK: - UnsafeMutableTuple -@_silgen_name("swift_slowAlloc") -private func slowAlloc(_ size: Int, _ alignMask: Int) -> UnsafeMutableRawPointer - -@_silgen_name("swift_slowDealloc") -private func slowDealloc(_ ptr: UnsafeMutableRawPointer, _ size: Int, _ alignMask: Int) - extension UnsafeMutableTuple { public init(with tupleType: TupleType) { - self.init(type: tupleType, value: slowAlloc(tupleType.size, -1)) + self.init( + type: tupleType, + value: UnsafeMutableRawPointer.allocate( + byteCount: tupleType.size, + alignment: -1 + ) + ) } public func initialize(at index: Int, to element: T) { @@ -104,7 +104,7 @@ extension UnsafeMutableTuple { if initialized { deinitialize() } - slowDealloc(value, -1, -1) + value.deallocate() } public var count: Int { type.count }