Build Information
Failed to build Timers, reference main (d77a85), with Swift 6.3 for Wasm on 13 Apr 2026 18:43:31 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/swiftpackageindex/spi-images:wasm-6.3-latest swift build --swift-sdk swift-6.3-RELEASE_wasm 2>&1Build Log
========================================
RunAll
========================================
Builder version: 4.70.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/dreymonde/Timers.git
Reference: main
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
From https://github.com/dreymonde/Timers
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at d77a85c update README
Cloned https://github.com/dreymonde/Timers.git
Revision (git rev-parse @):
d77a85ca78b724d8f444fb0d9f6ddb33d0acc06e
SUCCESS checkout https://github.com/dreymonde/Timers.git at main
========================================
Build
========================================
Selected platform: wasm
Swift version: 6.3
Building package at path: $PWD
https://github.com/dreymonde/Timers.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/swiftpackageindex/spi-images:wasm-6.3-latest swift build --swift-sdk swift-6.3-RELEASE_wasm 2>&1
wasm-6.3-latest: Pulling from swiftpackageindex/spi-images
Digest: sha256:d69f4e7582c319245442d62a08b2d7c7fd5a0c0c69f5d2ef11d1530cd8d3329b
Status: Image is up to date for registry.gitlab.com/swiftpackageindex/spi-images:wasm-6.3-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-24593BA9C3E375BF.txt
error: emit-module command failed with exit code 1 (use -v to see invocation)
[3/4] Emitting module Timers
/host/spi-builder-workspace/Sources/Timers/Timers.swift:25:29: error: 'main' is unavailable: RunLoop is not available on WASI
23 | extension Timers {
24 | public func manuallyAddTimer(
25 | runLoop: RunLoop = .main,
| `- error: 'main' is unavailable: RunLoop is not available on WASI
26 | runLoopMode: RunLoop.Mode = .common,
27 | timer: Timer
Foundation.RunLoop.main:3:18: note: 'main' has been explicitly marked unavailable here
1 | class RunLoop {
2 | @available(*, unavailable, message: "RunLoop is not available on WASI")
3 | open class var main: RunLoop { get }}
| `- note: 'main' has been explicitly marked unavailable here
4 |
/host/spi-builder-workspace/Sources/Timers/Timers.swift:38:29: error: 'main' is unavailable: RunLoop is not available on WASI
36 | withTarget target: TargetType,
37 | handler: @escaping (TargetType, Timer) -> Void,
38 | runLoop: RunLoop = .main,
| `- error: 'main' is unavailable: RunLoop is not available on WASI
39 | runLoopMode: RunLoop.Mode = .common,
40 | makeTimer: @escaping (_ timerBlock: @escaping TimerBlock) -> Timer
Foundation.RunLoop.main:3:18: note: 'main' has been explicitly marked unavailable here
1 | class RunLoop {
2 | @available(*, unavailable, message: "RunLoop is not available on WASI")
3 | open class var main: RunLoop { get }}
| `- note: 'main' has been explicitly marked unavailable here
4 |
[4/4] Compiling Timers Timers.swift
/host/spi-builder-workspace/Sources/Timers/Timers.swift:25:29: error: 'main' is unavailable: RunLoop is not available on WASI
23 | extension Timers {
24 | public func manuallyAddTimer(
25 | runLoop: RunLoop = .main,
| `- error: 'main' is unavailable: RunLoop is not available on WASI
26 | runLoopMode: RunLoop.Mode = .common,
27 | timer: Timer
Foundation.RunLoop.main:3:18: note: 'main' has been explicitly marked unavailable here
1 | class RunLoop {
2 | @available(*, unavailable, message: "RunLoop is not available on WASI")
3 | open class var main: RunLoop { get }}
| `- note: 'main' has been explicitly marked unavailable here
4 |
/host/spi-builder-workspace/Sources/Timers/Timers.swift:38:29: error: 'main' is unavailable: RunLoop is not available on WASI
36 | withTarget target: TargetType,
37 | handler: @escaping (TargetType, Timer) -> Void,
38 | runLoop: RunLoop = .main,
| `- error: 'main' is unavailable: RunLoop is not available on WASI
39 | runLoopMode: RunLoop.Mode = .common,
40 | makeTimer: @escaping (_ timerBlock: @escaping TimerBlock) -> Timer
Foundation.RunLoop.main:3:18: note: 'main' has been explicitly marked unavailable here
1 | class RunLoop {
2 | @available(*, unavailable, message: "RunLoop is not available on WASI")
3 | open class var main: RunLoop { get }}
| `- note: 'main' has been explicitly marked unavailable here
4 |
/host/spi-builder-workspace/Sources/Timers/Timers.swift:29:17: error: value of type 'RunLoop' has no member 'add'
27 | timer: Timer
28 | ) {
29 | runLoop.add(timer, forMode: runLoopMode)
| `- error: value of type 'RunLoop' has no member 'add'
30 | timers.append(timer)
31 | }
/host/spi-builder-workspace/Sources/Timers/Timers.swift:65:81: warning: passing non-Sendable parameter 'timerBlock' to function expecting a '@Sendable' closure
62 | handler: @escaping (TargetType, Timer) -> Void
63 | ) {
64 | addCustomTimer(withTarget: target, handler: handler) { timerBlock in
| `- note: parameter 'timerBlock' is implicitly non-Sendable
65 | let timer = Timer(timeInterval: timeInterval, repeats: true, block: timerBlock)
| `- warning: passing non-Sendable parameter 'timerBlock' to function expecting a '@Sendable' closure
66 | timer.tolerance = tolerance
67 | return timer
/host/spi-builder-workspace/Sources/Timers/Timers.swift:102:28: warning: passing non-Sendable parameter 'timerBlock' to function expecting a '@Sendable' closure
95 | withTarget: target,
96 | handler: handler,
97 | makeTimer: { timerBlock in
| `- note: parameter 'timerBlock' is implicitly non-Sendable
98 | let timer = Timer(
99 | fire: fireAt,
100 | interval: timeInterval,
101 | repeats: true,
102 | block: timerBlock
| `- warning: passing non-Sendable parameter 'timerBlock' to function expecting a '@Sendable' closure
103 | )
104 | timer.tolerance = tolerance
/host/spi-builder-workspace/Sources/Timers/Timers.swift:138:73: warning: passing non-Sendable parameter 'timerBlock' to function expecting a '@Sendable' closure
135 | withTarget: target,
136 | handler: { target, _ in handler(target) },
137 | makeTimer: { timerBlock in
| `- note: parameter 'timerBlock' is implicitly non-Sendable
138 | Timer(fire: fireAt, interval: 0, repeats: false, block: timerBlock)
| `- warning: passing non-Sendable parameter 'timerBlock' to function expecting a '@Sendable' closure
139 | }
140 | )
BUILD FAILURE 6.3 wasm