Build Information
Successful build of SwiftMath, reference main (48ff18), with Swift 6.0 for macOS (SPM) on 4 Feb 2026 04:30:03 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 4.68.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/mgriebling/SwiftMath.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/mgriebling/SwiftMath
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 48ff188 Merge pull request #60 from nguillot/feat/tokenization-infrastructure
Cloned https://github.com/mgriebling/SwiftMath.git
Revision (git rev-parse @):
48ff188ba118c37d024551238041113560ab09b9
SUCCESS checkout https://github.com/mgriebling/SwiftMath.git at main
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.0
Building package at path: $PWD
https://github.com/mgriebling/SwiftMath.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64
Building for debugging...
[0/4] Write sources
[0/4] Copying Info.plist
[2/4] Copying mathFonts.bundle
[3/4] Write swift-version-5BDAB9E9C0126B9D.txt
[5/32] Emitting module SwiftMath
[6/34] Compiling SwiftMath MTLineFitter.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:87:53: warning: immutable value 't' was never used; consider replacing with '_' or removing it
85 | // Check if element fits on current line
86 | if !lines.last!.isEmpty && currentWidth + element.width > maxWidth - margin {
87 | if debugPunctuation, case .text(let t) = element.content {
| `- warning: immutable value 't' was never used; consider replacing with '_' or removing it
88 | print(" Doesn't fit (width=\(currentWidth) + \(element.width) > \(maxWidth)), current line has \(lines.last!.count) elements")
89 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:215:13: warning: initialization of immutable value 'debugFit' was never used; consider replacing with assignment to '_' or removing it
213 |
214 | let debugBreak = false // Enable to debug break point selection
215 | let debugFit = false
| `- warning: initialization of immutable value 'debugFit' was never used; consider replacing with assignment to '_' or removing it
216 |
217 | // Scan from right to left to prefer breaking later in the line
[7/34] Compiling SwiftMath resource_bundle_accessor.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:87:53: warning: immutable value 't' was never used; consider replacing with '_' or removing it
85 | // Check if element fits on current line
86 | if !lines.last!.isEmpty && currentWidth + element.width > maxWidth - margin {
87 | if debugPunctuation, case .text(let t) = element.content {
| `- warning: immutable value 't' was never used; consider replacing with '_' or removing it
88 | print(" Doesn't fit (width=\(currentWidth) + \(element.width) > \(maxWidth)), current line has \(lines.last!.count) elements")
89 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:215:13: warning: initialization of immutable value 'debugFit' was never used; consider replacing with assignment to '_' or removing it
213 |
214 | let debugBreak = false // Enable to debug break point selection
215 | let debugFit = false
| `- warning: initialization of immutable value 'debugFit' was never used; consider replacing with assignment to '_' or removing it
216 |
217 | // Scan from right to left to prefer breaking later in the line
[8/34] Compiling SwiftMath RWLock.swift
[9/34] Compiling SwiftMath MTAtomTokenizer.swift
[10/34] Compiling SwiftMath MTBreakableElement.swift
[11/34] Compiling SwiftMath MTDisplayGenerator.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:122:25: warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
120 | case .display(let preRenderedDisplay):
121 | // Use pre-rendered display (fraction, radical, etc.)
122 | var mutableDisplay = preRenderedDisplay
| `- warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
123 | mutableDisplay.position = elementPosition
124 | displays.append(mutableDisplay)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:180:25: warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
178 | displays.append(display)
179 | case .display(let preRenderedDisplay):
180 | var mutableDisplay = preRenderedDisplay
| `- warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
181 | mutableDisplay.position = basePosition
182 | displays.append(mutableDisplay)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:308:21: warning: variable 'mutableScript' was never mutated; consider changing to 'let' constant
306 |
307 | // Reset the scriptDisplay's position to (0, 0) since it will be positioned by the wrapper
308 | var mutableScript = scriptDisplay
| `- warning: variable 'mutableScript' was never mutated; consider changing to 'let' constant
309 | mutableScript.position = CGPoint.zero
310 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:348:17: warning: variable 'baseDisplay' was never mutated; consider changing to 'let' constant
346 | // Update the first base display's dimensions to reflect the full extent
347 | // Width should be base + script, without the spaceAfterScript (that's for cursor advancement)
348 | var baseDisplay = displays[baseDisplayStartIndex]
| `- warning: variable 'baseDisplay' was never mutated; consider changing to 'let' constant
349 | baseDisplay.ascent = maxAscent
350 | baseDisplay.descent = maxDescent
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayPreRenderer.swift:53:42: warning: conditional cast from 'MTMathListDisplay' to 'MTMathListDisplay' always succeeds
51 | // If the result is a MTMathListDisplay with a single subdisplay, unwrap it
52 | // This matches the behavior of the legacy typesetter
53 | if let mathListDisplay = display as? MTMathListDisplay,
| `- warning: conditional cast from 'MTMathListDisplay' to 'MTMathListDisplay' always succeeds
54 | mathListDisplay.subDisplays.count == 1 {
55 | return mathListDisplay.subDisplays[0]
[12/34] Compiling SwiftMath MTDisplayPreRenderer.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:122:25: warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
120 | case .display(let preRenderedDisplay):
121 | // Use pre-rendered display (fraction, radical, etc.)
122 | var mutableDisplay = preRenderedDisplay
| `- warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
123 | mutableDisplay.position = elementPosition
124 | displays.append(mutableDisplay)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:180:25: warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
178 | displays.append(display)
179 | case .display(let preRenderedDisplay):
180 | var mutableDisplay = preRenderedDisplay
| `- warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
181 | mutableDisplay.position = basePosition
182 | displays.append(mutableDisplay)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:308:21: warning: variable 'mutableScript' was never mutated; consider changing to 'let' constant
306 |
307 | // Reset the scriptDisplay's position to (0, 0) since it will be positioned by the wrapper
308 | var mutableScript = scriptDisplay
| `- warning: variable 'mutableScript' was never mutated; consider changing to 'let' constant
309 | mutableScript.position = CGPoint.zero
310 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:348:17: warning: variable 'baseDisplay' was never mutated; consider changing to 'let' constant
346 | // Update the first base display's dimensions to reflect the full extent
347 | // Width should be base + script, without the spaceAfterScript (that's for cursor advancement)
348 | var baseDisplay = displays[baseDisplayStartIndex]
| `- warning: variable 'baseDisplay' was never mutated; consider changing to 'let' constant
349 | baseDisplay.ascent = maxAscent
350 | baseDisplay.descent = maxDescent
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayPreRenderer.swift:53:42: warning: conditional cast from 'MTMathListDisplay' to 'MTMathListDisplay' always succeeds
51 | // If the result is a MTMathListDisplay with a single subdisplay, unwrap it
52 | // This matches the behavior of the legacy typesetter
53 | if let mathListDisplay = display as? MTMathListDisplay,
| `- warning: conditional cast from 'MTMathListDisplay' to 'MTMathListDisplay' always succeeds
54 | mathListDisplay.subDisplays.count == 1 {
55 | return mathListDisplay.subDisplays[0]
[13/34] Compiling SwiftMath MTElementWidthCalculator.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:122:25: warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
120 | case .display(let preRenderedDisplay):
121 | // Use pre-rendered display (fraction, radical, etc.)
122 | var mutableDisplay = preRenderedDisplay
| `- warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
123 | mutableDisplay.position = elementPosition
124 | displays.append(mutableDisplay)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:180:25: warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
178 | displays.append(display)
179 | case .display(let preRenderedDisplay):
180 | var mutableDisplay = preRenderedDisplay
| `- warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
181 | mutableDisplay.position = basePosition
182 | displays.append(mutableDisplay)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:308:21: warning: variable 'mutableScript' was never mutated; consider changing to 'let' constant
306 |
307 | // Reset the scriptDisplay's position to (0, 0) since it will be positioned by the wrapper
308 | var mutableScript = scriptDisplay
| `- warning: variable 'mutableScript' was never mutated; consider changing to 'let' constant
309 | mutableScript.position = CGPoint.zero
310 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:348:17: warning: variable 'baseDisplay' was never mutated; consider changing to 'let' constant
346 | // Update the first base display's dimensions to reflect the full extent
347 | // Width should be base + script, without the spaceAfterScript (that's for cursor advancement)
348 | var baseDisplay = displays[baseDisplayStartIndex]
| `- warning: variable 'baseDisplay' was never mutated; consider changing to 'let' constant
349 | baseDisplay.ascent = maxAscent
350 | baseDisplay.descent = maxDescent
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayPreRenderer.swift:53:42: warning: conditional cast from 'MTMathListDisplay' to 'MTMathListDisplay' always succeeds
51 | // If the result is a MTMathListDisplay with a single subdisplay, unwrap it
52 | // This matches the behavior of the legacy typesetter
53 | if let mathListDisplay = display as? MTMathListDisplay,
| `- warning: conditional cast from 'MTMathListDisplay' to 'MTMathListDisplay' always succeeds
54 | mathListDisplay.subDisplays.count == 1 {
55 | return mathListDisplay.subDisplays[0]
[14/34] Compiling SwiftMath MTFontMathTableV2.swift
[15/34] Compiling SwiftMath MTFontV2.swift
[16/34] Compiling SwiftMath MathFont.swift
[17/34] Compiling SwiftMath MTConfig.swift
[18/34] Compiling SwiftMath MTFont.swift
[19/34] Compiling SwiftMath MTFontManager.swift
[20/34] Compiling SwiftMath MTMathImage.swift
[21/34] Compiling SwiftMath MTMathList.swift
[22/34] Compiling SwiftMath MTMathListBuilder.swift
[23/34] Compiling SwiftMath MTFontMathTable.swift
[24/34] Compiling SwiftMath MTLabel.swift
[25/34] Compiling SwiftMath MTMathAtomFactory.swift
[26/34] Compiling SwiftMath MTTypesetter+Tokenization.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/MTTypesetter.swift:1507:13: warning: variable 'accentee' was never mutated; consider changing to 'let' constant
1505 | guard let accent = accent else { return nil }
1506 |
1507 | var accentee = MTTypesetter.createLineForMathList(accent.innerList, font:font, style:style, cramped:true)
| `- warning: variable 'accentee' was never mutated; consider changing to 'let' constant
1508 | if accent.nucleus.isEmpty {
1509 | // no accent!
[27/34] Compiling SwiftMath MTTypesetter.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/MTTypesetter.swift:1507:13: warning: variable 'accentee' was never mutated; consider changing to 'let' constant
1505 | guard let accent = accent else { return nil }
1506 |
1507 | var accentee = MTTypesetter.createLineForMathList(accent.innerList, font:font, style:style, cramped:true)
| `- warning: variable 'accentee' was never mutated; consider changing to 'let' constant
1508 | if accent.nucleus.isEmpty {
1509 | // no accent!
[28/34] Compiling SwiftMath MTUnicode.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/MTTypesetter.swift:1507:13: warning: variable 'accentee' was never mutated; consider changing to 'let' constant
1505 | guard let accent = accent else { return nil }
1506 |
1507 | var accentee = MTTypesetter.createLineForMathList(accent.innerList, font:font, style:style, cramped:true)
| `- warning: variable 'accentee' was never mutated; consider changing to 'let' constant
1508 | if accent.nucleus.isEmpty {
1509 | // no accent!
[29/34] Compiling SwiftMath MathImage.swift
[30/34] Compiling SwiftMath MTBezierPath.swift
[31/34] Compiling SwiftMath MTColor.swift
[32/34] Compiling SwiftMath MTMathListDisplay.swift
[33/34] Compiling SwiftMath MTMathListIndex.swift
[34/34] Compiling SwiftMath MTMathUILabel.swift
Build complete! (8.97s)
Build complete.
{
"default_localization" : "en",
"dependencies" : [
],
"manifest_display_name" : "SwiftMath",
"name" : "SwiftMath",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "11.0"
},
{
"name" : "macos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "SwiftMath",
"targets" : [
"SwiftMath"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "SwiftMathTests",
"module_type" : "SwiftTarget",
"name" : "SwiftMathTests",
"path" : "Tests/SwiftMathTests",
"sources" : [
"AccentSpacingComparisonTest.swift",
"ArrowStretchingTest.swift",
"ConcurrencyThreadsafeTests.swift",
"DebugOverlapTest.swift",
"DotlessIJAccentTests.swift",
"GlyphBoundsTest.swift",
"LimitOperatorRegressionTests.swift",
"MTFontMathTableV2Tests.swift",
"MTFontV2Tests.swift",
"MTMathListBuilderTests.swift",
"MTMathListTests.swift",
"MTMathUILabelLineWrappingTests.swift",
"MTTypesetterTests.swift",
"MathDelimiterTests.swift",
"MathFontTests.swift",
"MathImageTests.swift",
"MatricesLineBreakingTest.swift",
"RelationOperatorSpacingTests.swift",
"Tokenization/MTAtomTokenizerTests.swift",
"Tokenization/MTBreakableElementTests.swift",
"Tokenization/MTDisplayGeneratorTests.swift",
"Tokenization/MTDisplayPreRendererTests.swift",
"Tokenization/MTElementWidthCalculatorTests.swift",
"Tokenization/MTLineFitterTests.swift",
"Tokenization/MTTokenizationImprovementTests.swift",
"Tokenization/MTTokenizationRealWorldTests.swift",
"Tokenization/MTTypesetter+TokenizationTests.swift",
"WidehatGlyphTest.swift",
"WidehatTests.swift"
],
"target_dependencies" : [
"SwiftMath"
],
"type" : "test"
},
{
"c99name" : "SwiftMath",
"module_type" : "SwiftTarget",
"name" : "SwiftMath",
"path" : "Sources/SwiftMath",
"product_memberships" : [
"SwiftMath"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/mathFonts.bundle",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"MathBundle/MTFontMathTableV2.swift",
"MathBundle/MTFontV2.swift",
"MathBundle/MathFont.swift",
"MathBundle/MathImage.swift",
"MathRender/MTBezierPath.swift",
"MathRender/MTColor.swift",
"MathRender/MTConfig.swift",
"MathRender/MTFont.swift",
"MathRender/MTFontManager.swift",
"MathRender/MTFontMathTable.swift",
"MathRender/MTLabel.swift",
"MathRender/MTMathAtomFactory.swift",
"MathRender/MTMathImage.swift",
"MathRender/MTMathList.swift",
"MathRender/MTMathListBuilder.swift",
"MathRender/MTMathListDisplay.swift",
"MathRender/MTMathListIndex.swift",
"MathRender/MTMathUILabel.swift",
"MathRender/MTTypesetter+Tokenization.swift",
"MathRender/MTTypesetter.swift",
"MathRender/MTUnicode.swift",
"MathRender/RWLock.swift",
"MathRender/Tokenization/MTAtomTokenizer.swift",
"MathRender/Tokenization/MTBreakableElement.swift",
"MathRender/Tokenization/MTDisplayGenerator.swift",
"MathRender/Tokenization/MTDisplayPreRenderer.swift",
"MathRender/Tokenization/MTElementWidthCalculator.swift",
"MathRender/Tokenization/MTLineFitter.swift"
],
"type" : "library"
}
],
"tools_version" : "5.7"
}
Done.