Build Information
Successful build of PowerMetricsKit, reference main (3be0fd), with Swift 6.4 for macOS (SPM) on 20 Sep 2026 20:38:44 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/Androp0v/PowerMetricsKit.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/Androp0v/PowerMetricsKit
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 3be0fd2 Create LICENSE
Cloned https://github.com/Androp0v/PowerMetricsKit.git
Revision (git rev-parse @):
3be0fd2d61785d848a32b6f5ea59aacad7739909
SUCCESS checkout https://github.com/Androp0v/PowerMetricsKit.git at main
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.4
Building package at path: $PWD
https://github.com/Androp0v/PowerMetricsKit.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64
Building for debugging...
[Pre-planning 1 / 96]
[Planning deferred tasks]
[23 / 39]
[27 / 40] SampleThreads
[34 / 57]
[36 / 57]
[39 / 57]
[40 / 57] PowerMetricsKit
[51 / 135] SampleThreads
[60 / 135] SampleThreads
[65 / 135]
[70 / 135]
[72 / 135]
[78 / 135]
[80 / 135]
[82 / 135]
[85 / 135]
[90 / 135]
[93 / 135]
[95 / 135]
[96 / 135]
[106 / 135]
[108 / 135]
[109 / 135]
[112 / 135]
[114 / 135]
[126 / 135] PowerMetricsKit
[127 / 135] PowerMetricsKit
[132 / 135] PowerMetricsKit
[135 / 135] PowerMetricsKit-product
Build complete! (10.73 sec)
Fetching https://github.com/apple/swift-docc-plugin
[1/2345] Fetching swift-docc-plugin
Fetched https://github.com/apple/swift-docc-plugin (1.92s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.5.0 (5.15s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3824] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit (1.39s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (2.16s)
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.5.0
warning: /Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/BacktraceGraph.swift:50:14 non-breaking space (U+00A0) used instead of regular space: FixIt(sourceRange: XCBuild.SwiftBuildMessage.DiagnosticInfo.SourceRange(path: "/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/BacktraceGraph.swift", startLine: 50, startColumn: 14, endLine: 50, endColumn: 16), textToInsert: " ")
warning: /Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/Models/RingBuffer.swift:36:62 non-breaking space (U+00A0) used instead of regular space: FixIt(sourceRange: XCBuild.SwiftBuildMessage.DiagnosticInfo.SourceRange(path: "/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/Models/RingBuffer.swift", startLine: 36, startColumn: 62, endLine: 36, endColumn: 64), textToInsert: " ")
warning: /Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/Models/RingBuffer.swift:41:78 non-breaking space (U+00A0) used instead of regular space: FixIt(sourceRange: XCBuild.SwiftBuildMessage.DiagnosticInfo.SourceRange(path: "/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/Models/RingBuffer.swift", startLine: 41, startColumn: 78, endLine: 41, endColumn: 80), textToInsert: " ")
warning: /Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/Models/RingBuffer.swift:42:70 non-breaking space (U+00A0) used instead of regular space: FixIt(sourceRange: XCBuild.SwiftBuildMessage.DiagnosticInfo.SourceRange(path: "/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/Models/RingBuffer.swift", startLine: 42, startColumn: 70, endLine: 42, endColumn: 72), textToInsert: " ")
[1m/Users/admin/builder/spi-builder-workspace/Sources/SampleThreads/get_cpu_usage.c:23:45: [0m[0;1;35mwarning: [0m[1mpassing 'int *' to parameter of type 'natural_t *' (aka 'unsigned int *') converts between pointers to integer types with different sign [-Wpointer-sign][0m
23 | &num_CPUs,[0m
| [0;1;32m ^~~~~~~~~
[0mIn module 'Darwin' imported from /Users/admin/builder/spi-builder-workspace/Sources/SampleThreads/get_cpu_usage.c:11:
[1m/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/usr/include/mach/mach_host.h:140:13: [0m[0;1;36mnote: [0mpassing argument to parameter 'out_processor_count' here[0m
140 | natural_t *out_processor_count,[0m
| [0;1;32m ^
[0m1 warning generated.
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/BacktraceGraph.swift:50:14: [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m48 |[0;0m }
[0;36m49 |[0;0m nodeLock.lock()
[0;36m50 |[0;0m defer {
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m51 |[0;0m nodeLock.unlock()
[0;36m52 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/Models/RingBuffer.swift:36:62: [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m34 |[0;0m }
[0;36m35 |[0;0m guard isFull else {
[0;36m36 |[0;0m return Array(array.prefix(index)).compactMap { $0 }
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m37 |[0;0m }
[0;36m38 |[0;0m if index == (length - 1) {
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/Models/RingBuffer.swift:41:78: [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m39 |[0;0m return array.map { $0! }
[0;36m40 |[0;0m } else {
[0;36m41 |[0;0m let firstHalf = Array(array.suffix(length - index - 1)).map { $0! }
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m42 |[0;0m let secondHalf = Array(array.prefix(index + 1)).map { $0! }
[0;36m43 |[0;0m return firstHalf + secondHalf
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/Models/RingBuffer.swift:42:70: [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m40 |[0;0m } else {
[0;36m41 |[0;0m let firstHalf = Array(array.suffix(length - index - 1)).map { $0! }
[0;36m42 |[0;0m let secondHalf = Array(array.prefix(index + 1)).map { $0! }
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m43 |[0;0m return firstHalf + secondHalf
[0;36m44 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/Models/RingBuffer.swift:36:62: [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m34 |[0;0m }
[0;36m35 |[0;0m guard isFull else {
[0;36m36 |[0;0m return Array(array.prefix(index)).compactMap { $0 }
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m37 |[0;0m }
[0;36m38 |[0;0m if index == (length - 1) {
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/Models/RingBuffer.swift:41:78: [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m39 |[0;0m return array.map { $0! }
[0;36m40 |[0;0m } else {
[0;36m41 |[0;0m let firstHalf = Array(array.suffix(length - index - 1)).map { $0! }
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m42 |[0;0m let secondHalf = Array(array.prefix(index + 1)).map { $0! }
[0;36m43 |[0;0m return firstHalf + secondHalf
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/Models/RingBuffer.swift:42:70: [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m40 |[0;0m } else {
[0;36m41 |[0;0m let firstHalf = Array(array.suffix(length - index - 1)).map { $0! }
[0;36m42 |[0;0m let secondHalf = Array(array.prefix(index + 1)).map { $0! }
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m43 |[0;0m return firstHalf + secondHalf
[0;36m44 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/BacktraceGraph.swift:50:14: [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m48 |[0;0m }
[0;36m49 |[0;0m nodeLock.lock()
[0;36m50 |[0;0m defer {
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-breaking space (U+00A0) used instead of regular space[0;0m
[0;36m51 |[0;0m nodeLock.unlock()
[0;36m52 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/BacktraceGraph.swift:27:16: [1;33mwarning: [1;39mvariable 'insertionPoint' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\]
[0;36m25 |[0;0m
[0;36m26 |[0;0m private func insertInGraph(at insertionPoint: MutableBacktraceInfo?, newInfo: MutableBacktraceInfo) {
[0;36m27 |[0;0m if var insertionPoint {
[0;36m|[0;0m `- [1;33mwarning: [1;39mvariable 'insertionPoint' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\]
[0;36m28 |[0;0m // precondition(addressToBacktrace.keys.contains(insertionPoint.address))
[0;36m29 |[0;0m insertionPoint.children.append(newInfo)
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/BacktraceGraph.swift:53:16: [1;33mwarning: [1;39mvariable 'existingInfo' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\]
[0;36m51 |[0;0m nodeLock.unlock()
[0;36m52 |[0;0m }
[0;36m53 |[0;0m if var existingInfo = _nodes.first(where: { $0.address == outermostAddress }) {
[0;36m|[0;0m `- [1;33mwarning: [1;39mvariable 'existingInfo' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\]
[0;36m54 |[0;0m
[0;36m55 |[0;0m // Add the energy information from the new backtrace to the outermost node
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/BacktraceGraph.swift:72:31: [1;33mwarning: [1;39mvariable 'matchingChild' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\]
[0;36m70 |[0;0m remainingAddresses: Array(remainingAddresses)
[0;36m71 |[0;0m )
[0;36m72 |[0;0m } else if var matchingChild = insertionPoint.children.first(where: { $0.address == nextAddress }) {
[0;36m|[0;0m `- [1;33mwarning: [1;39mvariable 'matchingChild' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\]
[0;36m73 |[0;0m // Add the energy information from the new backtrace to the children
[0;36m74 |[0;0m matchingChild.energy += newBacktrace.energy ?? .zero
[#VariableNeverMutated]: <https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated>
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/SampleThreads/SymbolicateBacktraces.swift:31:46: [1;33mwarning: [1;39mvalue 'symbolNamePointer' was defined but never used; consider replacing with boolean test[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m29 |[0;0m let imageName = (String(cString: dlInfo.dli_fname) as NSString).lastPathComponent
[0;36m30 |[0;0m let addressInImage = address - (unsafeBitCast(dlInfo.dli_fbase, to: UInt64.self))
[0;36m31 |[0;0m let symbolName: String? = if let symbolNamePointer = dlInfo.dli_sname {
[0;36m|[0;0m `- [1;33mwarning: [1;39mvalue 'symbolNamePointer' was defined but never used; consider replacing with boolean test[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m32 |[0;0m (String(cString: dlInfo.dli_sname) as NSString).lastPathComponent
[0;36m33 |[0;0m } else {
[#NoUsage]: <https://docs.swift.org/compiler/documentation/diagnostics/no-usage>
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/Views/Charts/CoreUsageChart/CoreUsageChart.swift:44:33: [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m42 |[0;0m if let cpuUsage = cpuUsageManager.getCPUUsage() {
[0;36m43 |[0;0m Grid {
[0;36m44 |[0;0m ForEach(0..<numberOfRows(cpuUsage: cpuUsage)) { rowIndex in
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m45 |[0;0m GridRow {
[0;36m46 |[0;0m ForEach(0..<numberOfColumns(row: rowIndex, cpuUsage: cpuUsage)) { columnIndex in
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/Views/Charts/CoreUsageChart/CoreUsageChart.swift:46:41: [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m44 |[0;0m ForEach(0..<numberOfRows(cpuUsage: cpuUsage)) { rowIndex in
[0;36m45 |[0;0m GridRow {
[0;36m46 |[0;0m ForEach(0..<numberOfColumns(row: rowIndex, cpuUsage: cpuUsage)) { columnIndex in
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m47 |[0;0m CoreUsageMeter(
[0;36m48 |[0;0m usage: cpuUsage.coreUsages[rowIndex * 4 + columnIndex],
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/Views/Charts/CoreUsageChart/CoreUsageMeter.swift:28:29: [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m26 |[0;0m ZStack(alignment: .topLeading) {
[0;36m27 |[0;0m VStack(spacing: spacing) {
[0;36m28 |[0;0m ForEach(0..<numberOfLevels) { level in
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m29 |[0;0m Rectangle()
[0;36m30 |[0;0m .foregroundStyle(levelColor(for: level))
/Users/admin/builder/spi-builder-workspace/Sources/PowerMetricsKit/Views/CallStack/CallStackViewModel.swift:31:17: [1;33mwarning: [1;39minitialization of immutable value 'sortedFlatBacktraces' was never used; consider replacing with assignment to '_' or removing it[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m29 |[0;0m .sorted(by: { $0.energy > $1.energy })
[0;36m30 |[0;0m }
[0;36m31 |[0;0m let sortedFlatBacktraces = await symbolicator.flatBacktraces
[0;36m|[0;0m `- [1;33mwarning: [1;39minitialization of immutable value 'sortedFlatBacktraces' was never used; consider replacing with assignment to '_' or removing it[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m32 |[0;0m .sorted(by: { $0.energy > $1.energy })
[0;36m33 |[0;0m
[#NoUsage]: <https://docs.swift.org/compiler/documentation/diagnostics/no-usage>
Build complete.
{
"dependencies" : [
{
"identity" : "swift-docc-plugin",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-docc-plugin"
}
],
"manifest_display_name" : "PowerMetricsKit",
"name" : "PowerMetricsKit",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "17.0"
},
{
"name" : "macos",
"version" : "14.0"
}
],
"products" : [
{
"name" : "PowerMetricsKit",
"targets" : [
"PowerMetricsKit"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"5",
"6"
],
"targets" : [
{
"c99name" : "SampleThreads",
"module_type" : "ClangTarget",
"name" : "SampleThreads",
"path" : "Sources/SampleThreads",
"product_memberships" : [
"PowerMetricsKit"
],
"sources" : [
"get_backtrace.c",
"get_cpu_usage.c",
"sample_threads.c"
],
"type" : "library"
},
{
"c99name" : "PowerMetricsKit",
"module_type" : "SwiftTarget",
"name" : "PowerMetricsKit",
"path" : "Sources/PowerMetricsKit",
"product_memberships" : [
"PowerMetricsKit"
],
"sources" : [
"SampleThreads/BacktraceGraph.swift",
"SampleThreads/CPUUsageManager.swift",
"SampleThreads/Models/Backtrace.swift",
"SampleThreads/Models/CPUUsage.swift",
"SampleThreads/Models/CoreType.swift",
"SampleThreads/Models/CoreUsage.swift",
"SampleThreads/Models/Power.swift",
"SampleThreads/Models/PowerMetricsConfig.swift",
"SampleThreads/Models/RingBuffer.swift",
"SampleThreads/Models/SampleThreadsResult.swift",
"SampleThreads/Models/ThreadSample.swift",
"SampleThreads/SampleThreadsManager.swift",
"SampleThreads/SampledResultsHistory.swift",
"SampleThreads/SymbolicateBacktraces.swift",
"Views/CallStack/BacktraceInfoView.swift",
"Views/CallStack/BacktraceRowContentView.swift",
"Views/CallStack/BacktraceRowView.swift",
"Views/CallStack/CallStackView.swift",
"Views/CallStack/CallStackViewModel.swift",
"Views/Charts/Color+Extensions.swift",
"Views/Charts/CoreTypePowerChart.swift",
"Views/Charts/CoreUsageChart/CoreUsageChart.swift",
"Views/Charts/CoreUsageChart/CoreUsageMeter.swift",
"Views/Charts/ThreadPowerChart/ThreadPowerChart.swift",
"Views/Charts/ThreadPowerChart/ThreadPowerChartModel.swift",
"Views/Charts/ThreadPowerChart/ThreadPowerRow.swift",
"Views/Models/ChartType.swift",
"Views/PowerWidgetOptionsView.swift",
"Views/PowerWidgetView.swift",
"Views/PowerWidgetViewModel.swift"
],
"target_dependencies" : [
"SampleThreads"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Done.