Skip to content

Commit 0b78561

Browse files
Merge pull request #443 from swiftwasm/yt/schedulable-executor-rename
Follow up `SchedulableExecutor` -> `SchedulingExecutor` rename
2 parents f0e05f2 + e0e1740 commit 0b78561

File tree

5 files changed

+39
-15
lines changed

5 files changed

+39
-15
lines changed

.github/workflows/test.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ jobs:
2121
target: "wasm32-unknown-wasi"
2222
- os: ubuntu-22.04
2323
toolchain:
24-
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2025-06-12-a/swift-DEVELOPMENT-SNAPSHOT-2025-06-12-a-ubuntu22.04.tar.gz
24+
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2025-08-27-a/swift-DEVELOPMENT-SNAPSHOT-2025-08-27-a-ubuntu22.04.tar.gz
2525
wasi-backend: Node
26-
target: "wasm32-unknown-wasi"
26+
target: "wasm32-unknown-wasip1"
2727
- os: ubuntu-22.04
2828
toolchain:
29-
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2025-06-12-a/swift-DEVELOPMENT-SNAPSHOT-2025-06-12-a-ubuntu22.04.tar.gz
29+
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2025-08-27-a/swift-DEVELOPMENT-SNAPSHOT-2025-08-27-a-ubuntu22.04.tar.gz
3030
wasi-backend: Node
3131
target: "wasm32-unknown-wasip1-threads"
3232

@@ -95,7 +95,7 @@ jobs:
9595
- uses: actions/checkout@v5
9696
- uses: ./.github/actions/install-swift
9797
with:
98-
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2025-06-12-a/swift-DEVELOPMENT-SNAPSHOT-2025-06-12-a-ubuntu22.04.tar.gz
98+
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2025-08-27-a/swift-DEVELOPMENT-SNAPSHOT-2025-08-27-a-ubuntu22.04.tar.gz
9999
- run: make bootstrap
100100
- run: ./Utilities/bridge-js-generate.sh
101101
- name: Check if BridgeJS generated files are up-to-date
@@ -112,17 +112,17 @@ jobs:
112112
- uses: actions/checkout@v5
113113
- uses: ./.github/actions/install-swift
114114
with:
115-
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2025-06-12-a/swift-DEVELOPMENT-SNAPSHOT-2025-06-12-a-ubuntu22.04.tar.gz
115+
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2025-08-27-a/swift-DEVELOPMENT-SNAPSHOT-2025-08-27-a-ubuntu22.04.tar.gz
116116
- uses: swiftwasm/setup-swiftwasm@v2
117-
id: setup-wasm32-unknown-wasi
118-
with: { target: wasm32-unknown-wasi }
117+
id: setup-wasm32-unknown-wasip1
118+
with: { target: wasm32-unknown-wasip1 }
119119
- uses: swiftwasm/setup-swiftwasm@v2
120120
id: setup-wasm32-unknown-wasip1-threads
121121
with: { target: wasm32-unknown-wasip1-threads }
122122
- run: ./Utilities/build-examples.sh
123123
env:
124124
SWIFT_SDK_ID_wasm32_unknown_wasip1_threads: ${{ steps.setup-wasm32-unknown-wasip1-threads.outputs.swift-sdk-id }}
125-
SWIFT_SDK_ID_wasm32_unknown_wasi: ${{ steps.setup-wasm32-unknown-wasi.outputs.swift-sdk-id }}
125+
SWIFT_SDK_ID_wasm32_unknown_wasip1: ${{ steps.setup-wasm32-unknown-wasip1.outputs.swift-sdk-id }}
126126
- name: Upload static files as artifact
127127
id: deployment
128128
uses: actions/upload-pages-artifact@v4

Examples/Basic/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/bin/bash
22
set -euxo pipefail
3-
swift package --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasi:-${SWIFT_SDK_ID:-wasm32-unknown-wasi}}" -c "${1:-debug}" js --use-cdn
3+
swift package --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1}}" -c "${1:-debug}" js --use-cdn

Examples/PlayBridgeJS/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
22
set -euxo pipefail
3-
env JAVASCRIPTKIT_EXPERIMENTAL_BRIDGEJS=1 swift package --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasi:-${SWIFT_SDK_ID:-wasm32-unknown-wasi}}" -c "${1:-debug}" \
3+
env JAVASCRIPTKIT_EXPERIMENTAL_BRIDGEJS=1 swift package --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1}}" -c "${1:-debug}" \
44
plugin --allow-writing-to-package-directory \
55
js --use-cdn --output ./Bundle

Plugins/PackageToJS/Tests/ExampleTests.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,14 @@ extension Trait where Self == ConditionTrait {
8080
else {
8181
return false
8282
}
83+
guard
84+
["wasm32-unknown-wasi", "wasm32-unknown-wasip1"].contains(where: {
85+
swiftSDKID.hasSuffix($0)
86+
})
87+
else {
88+
// Only non-threads SDKs are supported for embedded in Swift SDK
89+
return false
90+
}
8391
let embeddedSDKID = "\(swiftSDKID)-embedded"
8492
return isSwiftSDKAvailable(embeddedSDKID, swiftPath: swiftPath)
8593
}(),
@@ -206,6 +214,7 @@ extension Trait where Self == ConditionTrait {
206214
Swift package should build successfully, check \(destination.appending(path: path).path) for details
207215
stdout: \(stdoutPath.path)
208216
stderr: \(stderrPath.path)
217+
arguments: \(args)
209218
210219
\((try? String(contentsOf: stdoutPath, encoding: .utf8)) ?? "<<stdout is empty>>")
211220
\((try? String(contentsOf: stderrPath, encoding: .utf8)) ?? "<<stderr is empty>>")

Sources/JavaScriptEventLoop/JavaScriptEventLoop+ExecutorFactory.swift

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,37 @@ extension JavaScriptEventLoop: MainExecutor {
2727
extension JavaScriptEventLoop: TaskExecutor {}
2828

2929
@available(macOS 9999, iOS 9999, watchOS 9999, tvOS 9999, visionOS 9999, *)
30-
extension JavaScriptEventLoop: SchedulableExecutor {
30+
extension JavaScriptEventLoop: SchedulingExecutor {
3131
public func enqueue<C: Clock>(
3232
_ job: consuming ExecutorJob,
3333
after delay: C.Duration,
3434
tolerance: C.Duration?,
3535
clock: C
3636
) {
37-
let milliseconds = Self.delayInMilliseconds(from: delay, clock: clock)
37+
let duration: Duration
38+
// Handle clocks we know
39+
if let _ = clock as? ContinuousClock {
40+
duration = delay as! ContinuousClock.Duration
41+
} else if let _ = clock as? SuspendingClock {
42+
duration = delay as! SuspendingClock.Duration
43+
} else {
44+
// Hand-off the scheduling work to Clock implementation for unknown clocks
45+
clock.enqueue(
46+
job,
47+
on: self,
48+
at: clock.now.advanced(by: delay),
49+
tolerance: tolerance
50+
)
51+
return
52+
}
53+
let milliseconds = Self.delayInMilliseconds(from: duration)
3854
self.enqueue(
3955
UnownedJob(job),
4056
withDelay: milliseconds
4157
)
4258
}
4359

44-
private static func delayInMilliseconds<C: Clock>(from duration: C.Duration, clock: C) -> Double {
45-
let swiftDuration = clock.convert(from: duration)!
60+
private static func delayInMilliseconds(from swiftDuration: Duration) -> Double {
4661
let (seconds, attoseconds) = swiftDuration.components
4762
return Double(seconds) * 1_000 + (Double(attoseconds) / 1_000_000_000_000_000)
4863
}
@@ -52,7 +67,7 @@ extension JavaScriptEventLoop: SchedulableExecutor {
5267
@available(macOS 9999, iOS 9999, watchOS 9999, tvOS 9999, visionOS 9999, *)
5368
extension JavaScriptEventLoop: ExecutorFactory {
5469
// Forward all operations to the current thread's JavaScriptEventLoop instance
55-
final class CurrentThread: TaskExecutor, SchedulableExecutor, MainExecutor, SerialExecutor {
70+
final class CurrentThread: TaskExecutor, SchedulingExecutor, MainExecutor, SerialExecutor {
5671
func checkIsolated() {}
5772

5873
func enqueue(_ job: consuming ExecutorJob) {

0 commit comments

Comments
 (0)