diff --git a/stdlib/public/core/StringBridge.swift b/stdlib/public/core/StringBridge.swift index 168e7ddb04f4f..d3cf810c9f738 100644 --- a/stdlib/public/core/StringBridge.swift +++ b/stdlib/public/core/StringBridge.swift @@ -661,6 +661,19 @@ internal func _SwiftCreateBridgedString_DoNotCall( return Unmanaged.passRetained(str._bridgeToObjectiveCImpl()) } +@available(SwiftStdlib 6.1, *) +@_spi(Foundation) public func _SwiftCreateImmortalString_ForFoundation( + buffer: UnsafeBufferPointer, + isASCII: Bool +) -> String? { + switch validateUTF8(buffer) { + case .success(let extraInfo): + return String(_StringGuts(buffer, isASCII: extraInfo.isASCII)) + default: + return nil + } +} + // At runtime, this class is derived from `__SwiftNativeNSStringBase`, // which is derived from `NSString`. // diff --git a/test/abi/macOS/arm64/stdlib.swift b/test/abi/macOS/arm64/stdlib.swift index 128f8e57ce803..3155f55299c7c 100644 --- a/test/abi/macOS/arm64/stdlib.swift +++ b/test/abi/macOS/arm64/stdlib.swift @@ -827,3 +827,6 @@ Added: _$ss4SlabVsRi__rlE5countSivpZMV // Slab._storage _read accessor Added: _$ss4SlabVsRi__rlE8_storagexq_BVvr + +// Shared string creation for Foundation +Added: _$ss40_SwiftCreateImmortalString_ForFoundation6buffer7isASCIISSSgSRys5UInt8VG_SbtF diff --git a/test/abi/macOS/x86_64/stdlib.swift b/test/abi/macOS/x86_64/stdlib.swift index cb3d2d116d268..3999c5fb46fc6 100644 --- a/test/abi/macOS/x86_64/stdlib.swift +++ b/test/abi/macOS/x86_64/stdlib.swift @@ -828,3 +828,6 @@ Added: _$ss4SlabVsRi__rlE5countSivpZMV // Slab._storage _read accessor Added: _$ss4SlabVsRi__rlE8_storagexq_BVvr + +// Shared string creation for Foundation +Added: _$ss40_SwiftCreateImmortalString_ForFoundation6buffer7isASCIISSSgSRys5UInt8VG_SbtF