From 7a275edb3e15a3341409373b28c710bbf4bd597c Mon Sep 17 00:00:00 2001 From: Anthony Shoumikhin Date: Thu, 22 May 2025 18:05:40 -0700 Subject: [PATCH 1/3] Mark native Swift extension public --- .../Exported/ExecuTorch+Tensor.swift | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/extension/apple/ExecuTorch/Exported/ExecuTorch+Tensor.swift b/extension/apple/ExecuTorch/Exported/ExecuTorch+Tensor.swift index f1da13e7ae1..c07b96f08e4 100644 --- a/extension/apple/ExecuTorch/Exported/ExecuTorch+Tensor.swift +++ b/extension/apple/ExecuTorch/Exported/ExecuTorch+Tensor.swift @@ -11,43 +11,40 @@ /// A protocol that types conform to in order to be used as tensor element types. /// Provides the mapping from the Swift type to the underlying `DataType`. @available(*, deprecated, message: "This API is experimental.") -protocol Scalar { +public protocol Scalar { /// The `DataType` corresponding to this scalar type. static var dataType: DataType { get } } @available(*, deprecated, message: "This API is experimental.") -extension UInt8: Scalar { static var dataType: DataType { .byte } } +public extension UInt8: Scalar { static var dataType: DataType { .byte } } @available(*, deprecated, message: "This API is experimental.") -extension Int8: Scalar { static var dataType: DataType { .char } } +public extension Int8: Scalar { static var dataType: DataType { .char } } @available(*, deprecated, message: "This API is experimental.") -extension Int16: Scalar { static var dataType: DataType { .short } } +public extension Int16: Scalar { static var dataType: DataType { .short } } @available(*, deprecated, message: "This API is experimental.") -extension Int32: Scalar { static var dataType: DataType { .int } } +public extension Int32: Scalar { static var dataType: DataType { .int } } @available(*, deprecated, message: "This API is experimental.") -extension Int64: Scalar { static var dataType: DataType { .long } } +public extension Int64: Scalar { static var dataType: DataType { .long } } @available(*, deprecated, message: "This API is experimental.") -extension Int: Scalar { static var dataType: DataType { .long } } -@available(macOS 11.0, *) +public extension Int: Scalar { static var dataType: DataType { .long } } @available(*, deprecated, message: "This API is experimental.") -extension Float16: Scalar { static var dataType: DataType { .half } } +public extension Float: Scalar { static var dataType: DataType { .float } } @available(*, deprecated, message: "This API is experimental.") -extension Float: Scalar { static var dataType: DataType { .float } } +public extension Double: Scalar { static var dataType: DataType { .double } } @available(*, deprecated, message: "This API is experimental.") -extension Double: Scalar { static var dataType: DataType { .double } } +public extension Bool: Scalar { static var dataType: DataType { .bool } } @available(*, deprecated, message: "This API is experimental.") -extension Bool: Scalar { static var dataType: DataType { .bool } } +public extension UInt16: Scalar { static var dataType: DataType { .uInt16 } } @available(*, deprecated, message: "This API is experimental.") -extension UInt16: Scalar { static var dataType: DataType { .uInt16 } } +public extension UInt32: Scalar { static var dataType: DataType { .uInt32 } } @available(*, deprecated, message: "This API is experimental.") -extension UInt32: Scalar { static var dataType: DataType { .uInt32 } } +public extension UInt64: Scalar { static var dataType: DataType { .uInt64 } } @available(*, deprecated, message: "This API is experimental.") -extension UInt64: Scalar { static var dataType: DataType { .uInt64 } } -@available(*, deprecated, message: "This API is experimental.") -extension UInt: Scalar { static var dataType: DataType { .uInt64 } } +public extension UInt: Scalar { static var dataType: DataType { .uInt64 } } @available(*, deprecated, message: "This API is experimental.") -extension Tensor { +public extension Tensor { /// Calls the closure with a typed, immutable buffer pointer over the tensor’s elements. /// /// - Parameter body: A closure that receives an `UnsafeBufferPointer` bound to the tensor’s data. From ee0f6808067576bfaf68ad3fad8f0f3a314be43c Mon Sep 17 00:00:00 2001 From: Anthony Shoumikhin Date: Thu, 22 May 2025 18:13:47 -0700 Subject: [PATCH 2/3] Update ExecuTorch+Tensor.swift --- .../Exported/ExecuTorch+Tensor.swift | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/extension/apple/ExecuTorch/Exported/ExecuTorch+Tensor.swift b/extension/apple/ExecuTorch/Exported/ExecuTorch+Tensor.swift index c07b96f08e4..29af8f78a5a 100644 --- a/extension/apple/ExecuTorch/Exported/ExecuTorch+Tensor.swift +++ b/extension/apple/ExecuTorch/Exported/ExecuTorch+Tensor.swift @@ -17,31 +17,31 @@ public protocol Scalar { } @available(*, deprecated, message: "This API is experimental.") -public extension UInt8: Scalar { static var dataType: DataType { .byte } } +extension UInt8: Scalar { public static var dataType: DataType { .byte } } @available(*, deprecated, message: "This API is experimental.") -public extension Int8: Scalar { static var dataType: DataType { .char } } +extension Int8: Scalar { public static var dataType: DataType { .char } } @available(*, deprecated, message: "This API is experimental.") -public extension Int16: Scalar { static var dataType: DataType { .short } } +extension Int16: Scalar { public static var dataType: DataType { .short } } @available(*, deprecated, message: "This API is experimental.") -public extension Int32: Scalar { static var dataType: DataType { .int } } +extension Int32: Scalar { public static var dataType: DataType { .int } } @available(*, deprecated, message: "This API is experimental.") -public extension Int64: Scalar { static var dataType: DataType { .long } } +extension Int64: Scalar { public static var dataType: DataType { .long } } @available(*, deprecated, message: "This API is experimental.") -public extension Int: Scalar { static var dataType: DataType { .long } } +extension Int: Scalar { public static var dataType: DataType { .long } } @available(*, deprecated, message: "This API is experimental.") -public extension Float: Scalar { static var dataType: DataType { .float } } +extension Float: Scalar { public static var dataType: DataType { .float } } @available(*, deprecated, message: "This API is experimental.") -public extension Double: Scalar { static var dataType: DataType { .double } } +extension Double: Scalar { public static var dataType: DataType { .double } } @available(*, deprecated, message: "This API is experimental.") -public extension Bool: Scalar { static var dataType: DataType { .bool } } +extension Bool: Scalar { public static var dataType: DataType { .bool } } @available(*, deprecated, message: "This API is experimental.") -public extension UInt16: Scalar { static var dataType: DataType { .uInt16 } } +extension UInt16: Scalar { public static var dataType: DataType { .uInt16 } } @available(*, deprecated, message: "This API is experimental.") -public extension UInt32: Scalar { static var dataType: DataType { .uInt32 } } +extension UInt32: Scalar { public static var dataType: DataType { .uInt32 } } @available(*, deprecated, message: "This API is experimental.") -public extension UInt64: Scalar { static var dataType: DataType { .uInt64 } } +extension UInt64: Scalar { public static var dataType: DataType { .uInt64 } } @available(*, deprecated, message: "This API is experimental.") -public extension UInt: Scalar { static var dataType: DataType { .uInt64 } } +extension UInt: Scalar { public static var dataType: DataType { .uInt64 } } @available(*, deprecated, message: "This API is experimental.") public extension Tensor { From a4353646b2ba09e1703b12a08f218c6c6793f96b Mon Sep 17 00:00:00 2001 From: Anthony Shoumikhin Date: Thu, 22 May 2025 18:58:58 -0700 Subject: [PATCH 3/3] Update TensorTest.swift --- extension/apple/ExecuTorch/__tests__/TensorTest.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/apple/ExecuTorch/__tests__/TensorTest.swift b/extension/apple/ExecuTorch/__tests__/TensorTest.swift index 4013cb2b296..3a6dc4cfe75 100644 --- a/extension/apple/ExecuTorch/__tests__/TensorTest.swift +++ b/extension/apple/ExecuTorch/__tests__/TensorTest.swift @@ -153,7 +153,7 @@ class TensorTest: XCTestCase { let tensor = data.withUnsafeMutableBytes { Tensor(bytesNoCopy: $0.baseAddress!, shape: [2, 3], dataType: .float) } - let array: [Float] = try tensor.withUnsafeBytes { Array($0) } + let array = try tensor.withUnsafeBytes([Float].init) XCTAssertEqual(array, data) }