Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 5 additions & 7 deletions 12 .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
JAVASCRIPTKIT_DISABLE_TRACING_TRAIT=1
- os: ubuntu-24.04
toolchain:
download-url: https://download.swift.org/development/ubuntu2404/swift-DEVELOPMENT-SNAPSHOT-2025-12-01-a/swift-DEVELOPMENT-SNAPSHOT-2025-12-01-a-ubuntu24.04.tar.gz
download-url: https://download.swift.org/development/ubuntu2404/swift-DEVELOPMENT-SNAPSHOT-2026-05-27-a/swift-DEVELOPMENT-SNAPSHOT-2026-05-27-a-ubuntu24.04.tar.gz
wasi-backend: Node
target: "wasm32-unknown-wasip1"
- os: ubuntu-24.04
Expand All @@ -31,7 +31,7 @@ jobs:
target: "wasm32-unknown-wasip1"
- os: ubuntu-22.04
toolchain:
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2025-12-01-a/swift-DEVELOPMENT-SNAPSHOT-2025-12-01-a-ubuntu22.04.tar.gz
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2026-05-27-a/swift-DEVELOPMENT-SNAPSHOT-2026-05-27-a-ubuntu22.04.tar.gz
wasi-backend: Node
target: "wasm32-unknown-wasip1-threads"

Expand Down Expand Up @@ -152,7 +152,7 @@ jobs:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-swift
with:
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2025-09-14-a/swift-DEVELOPMENT-SNAPSHOT-2025-09-14-a-ubuntu22.04.tar.gz
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2026-05-27-a/swift-DEVELOPMENT-SNAPSHOT-2026-05-27-a-ubuntu22.04.tar.gz
- run: make bootstrap
- run: ./Utilities/bridge-js-generate.sh
- name: Check if BridgeJS generated files are up-to-date
Expand All @@ -169,16 +169,14 @@ jobs:
- uses: actions/checkout@v6
- uses: ./.github/actions/install-swift
with:
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a/swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a-ubuntu22.04.tar.gz
download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2026-05-27-a/swift-DEVELOPMENT-SNAPSHOT-2026-05-27-a-ubuntu22.04.tar.gz
- uses: swiftwasm/setup-swiftwasm@v2
id: setup-wasm32-unknown-wasip1
with: { target: wasm32-unknown-wasip1 }
- uses: swiftwasm/setup-swiftwasm@v2
id: setup-wasm32-unknown-wasip1-threads
with: { target: wasm32-unknown-wasip1-threads }
- run: |
swift --version
./Utilities/build-examples.sh
- run: ./Utilities/build-examples.sh
env:
SWIFT_SDK_ID_wasm32_unknown_wasip1_threads: ${{ steps.setup-wasm32-unknown-wasip1-threads.outputs.swift-sdk-id }}
SWIFT_SDK_ID_wasm32_unknown_wasip1: ${{ steps.setup-wasm32-unknown-wasip1.outputs.swift-sdk-id }}
Expand Down
2 changes: 1 addition & 1 deletion 2 Examples/ActorOnWebWorker/build.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
set -euxo pipefail
swift package --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1_threads:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1-threads}}" \
swift package --build-system native --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1_threads:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1-threads}}" \
plugin --allow-writing-to-package-directory \
js --use-cdn --output ./Bundle -c release
2 changes: 1 addition & 1 deletion 2 Examples/Basic/build.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#!/bin/bash
set -euxo pipefail
swift package --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1}}" js --use-cdn -c "${1:-debug}"
swift package --build-system native --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1}}" js --use-cdn -c "${1:-debug}"
2 changes: 1 addition & 1 deletion 2 Examples/Embedded/build.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
set -euxo pipefail
package_dir="$(cd "$(dirname "$0")" && pwd)"
swift package --package-path "$package_dir" \
swift package --build-system native --package-path "$package_dir" \
--swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1}}-embedded" js -c release
2 changes: 1 addition & 1 deletion 2 Examples/Multithreading/build.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
set -euxo pipefail
swift package --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1_threads:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1-threads}}" \
swift package --build-system native --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1_threads:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1-threads}}" \
plugin --allow-writing-to-package-directory \
js --use-cdn --output ./Bundle -c release
2 changes: 1 addition & 1 deletion 2 Examples/OffscrenCanvas/build.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
set -euxo pipefail
swift package --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1_threads:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1-threads}}" \
swift package --build-system native --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1_threads:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1-threads}}" \
plugin --allow-writing-to-package-directory \
js --use-cdn --output ./Bundle -c release
2 changes: 1 addition & 1 deletion 2 Examples/PlayBridgeJS/build.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
set -euxo pipefail
swift package --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1}}" \
swift package --build-system native --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1}}" \
plugin --allow-writing-to-package-directory \
js --use-cdn --output ./Bundle -c "${1:-debug}"
2 changes: 1 addition & 1 deletion 2 Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ unittest:
echo "SWIFT_SDK_ID is not set. Run 'swift sdk list' and pass a matching SDK, e.g. 'make unittest SWIFT_SDK_ID=<id>'."; \
exit 2; \
}
swift package --swift-sdk "$(SWIFT_SDK_ID)" \
swift package --build-system native --swift-sdk "$(SWIFT_SDK_ID)" \
$(TRACING_ARGS) \
--disable-sandbox \
js test --prelude ./Tests/prelude.mjs -Xnode --expose-gc
Expand Down
64 changes: 48 additions & 16 deletions 64 Plugins/PackageToJS/Tests/ExampleTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -246,11 +246,26 @@ extension Trait where Self == ConditionTrait {
func basic() throws {
let swiftSDKID = try #require(Self.getSwiftSDKID())
try withPackage(at: "Examples/Basic") { packageDir, _, runSwift in
try runSwift(["package", "--swift-sdk", swiftSDKID, "js"], [:])
try runSwift(["package", "--swift-sdk", swiftSDKID, "js", "--debug-info-format", "dwarf"], [:])
try runSwift(["package", "--swift-sdk", swiftSDKID, "js", "--debug-info-format", "name"], [:])
try runSwift(["package", "--build-system", "native", "--swift-sdk", swiftSDKID, "js"], [:])
try runSwift(
["package", "--swift-sdk", swiftSDKID, "-Xswiftc", "-DJAVASCRIPTKIT_WITHOUT_WEAKREFS", "js"],
[
"package", "--build-system", "native", "--swift-sdk", swiftSDKID, "js", "--debug-info-format",
"dwarf",
],
[:]
)
try runSwift(
[
"package", "--build-system", "native", "--swift-sdk", swiftSDKID, "js", "--debug-info-format",
"name",
],
[:]
)
try runSwift(
[
"package", "--build-system", "native", "--swift-sdk", swiftSDKID, "-Xswiftc",
"-DJAVASCRIPTKIT_WITHOUT_WEAKREFS", "js",
],
[:]
)
}
Expand All @@ -266,7 +281,10 @@ extension Trait where Self == ConditionTrait {
try runProcess(which("npm"), ["install"], [:])
try runProcess(which("npx"), ["playwright", "install", "chromium-headless-shell"], [:])

try runSwift(["package", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js", "test"], [:])
try runSwift(
["package", "--build-system", "native", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js", "test"],
[:]
)
try withTemporaryDirectory(body: { tempDir, _ in
let scriptContent = """
const fs = require('fs');
Expand All @@ -278,7 +296,8 @@ extension Trait where Self == ConditionTrait {
let scriptPath = tempDir.appending(path: "script.js")
try runSwift(
[
"package", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js", "test",
"package", "--build-system", "native", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js",
"test",
"-Xnode=--require=\(scriptPath.path)",
],
[:]
Expand All @@ -291,7 +310,10 @@ extension Trait where Self == ConditionTrait {
)
})
try runSwift(
["package", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js", "test", "--environment", "browser"],
[
"package", "--build-system", "native", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js", "test",
"--environment", "browser",
],
[:]
)
}
Expand All @@ -304,7 +326,10 @@ extension Trait where Self == ConditionTrait {
let swiftPath = try #require(Self.getSwiftPath())
try withPackage(at: "Examples/Testing") { packageDir, runProcess, runSwift in
try runSwift(
["package", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js", "test", "--enable-code-coverage"],
[
"package", "--build-system", "native", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js", "test",
"--enable-code-coverage",
],
[
"LLVM_PROFDATA_PATH": URL(fileURLWithPath: swiftPath).appending(path: "llvm-profdata").path
]
Expand Down Expand Up @@ -332,23 +357,23 @@ extension Trait where Self == ConditionTrait {
func multithreading() throws {
let swiftSDKID = try #require(Self.getSwiftSDKID())
try withPackage(at: "Examples/Multithreading") { packageDir, _, runSwift in
try runSwift(["package", "--swift-sdk", swiftSDKID, "js"], [:])
try runSwift(["package", "--build-system", "native", "--swift-sdk", swiftSDKID, "js"], [:])
}
}

@Test(.requireSwiftSDK(triple: "wasm32-unknown-wasip1-threads"))
func offscreenCanvas() throws {
let swiftSDKID = try #require(Self.getSwiftSDKID())
try withPackage(at: "Examples/OffscrenCanvas") { packageDir, _, runSwift in
try runSwift(["package", "--swift-sdk", swiftSDKID, "js"], [:])
try runSwift(["package", "--build-system", "native", "--swift-sdk", swiftSDKID, "js"], [:])
}
}

@Test(.requireSwiftSDK(triple: "wasm32-unknown-wasip1-threads"))
func actorOnWebWorker() throws {
let swiftSDKID = try #require(Self.getSwiftSDKID())
try withPackage(at: "Examples/ActorOnWebWorker") { packageDir, _, runSwift in
try runSwift(["package", "--swift-sdk", swiftSDKID, "js"], [:])
try runSwift(["package", "--build-system", "native", "--swift-sdk", swiftSDKID, "js"], [:])
}
}

Expand All @@ -359,7 +384,7 @@ extension Trait where Self == ConditionTrait {
let swiftSDKID = try #require(Self.getEmbeddedSwiftSDKID())
try withPackage(at: "Examples/Embedded") { packageDir, _, runSwift in
try runSwift(
["package", "--swift-sdk", swiftSDKID, "js", "-c", "release"],
["package", "--build-system", "native", "--swift-sdk", swiftSDKID, "js", "-c", "release"],
[
"JAVASCRIPTKIT_EXPERIMENTAL_EMBEDDED_WASM": "true"
]
Expand All @@ -375,7 +400,10 @@ extension Trait where Self == ConditionTrait {
at: "Plugins/PackageToJS/Fixtures/ContinuationLeakInTest/XCTest",
assertTerminationStatus: { $0 != 0 }
) { packageDir, _, runSwift in
try runSwift(["package", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js", "test"], [:])
try runSwift(
["package", "--build-system", "native", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js", "test"],
[:]
)
}
}

Expand All @@ -388,7 +416,10 @@ extension Trait where Self == ConditionTrait {
at: "Plugins/PackageToJS/Fixtures/ContinuationLeakInTest/SwiftTesting",
assertTerminationStatus: { $0 != 0 }
) { packageDir, _, runSwift in
try runSwift(["package", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js", "test"], [:])
try runSwift(
["package", "--build-system", "native", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js", "test"],
[:]
)
}
}
#endif
Expand All @@ -405,7 +436,7 @@ extension Trait where Self == ConditionTrait {

try runSwift(
["package", "--disable-sandbox"] + Self.stackSizeLinkerFlags + [
"--swift-sdk", swiftSDKID, "js", "test", "--environment", "browser",
"--build-system", "native", "--swift-sdk", swiftSDKID, "js", "test", "--environment", "browser",
"--playwright-expose", "../expose.js",
],
[:]
Expand All @@ -427,7 +458,8 @@ extension Trait where Self == ConditionTrait {

try runSwift(
[
"package", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js", "test", "--environment", "browser",
"package", "--build-system", "native", "--disable-sandbox", "--swift-sdk", swiftSDKID, "js", "test",
"--environment", "browser",
"--playwright-expose", "../expose.js",
],
[:]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,25 +57,12 @@ extension JavaScriptEventLoop: SchedulingExecutor {
#endif // #if compiler(>=6.4) (Embedded)
#else // #if hasFeature(Embedded)
let duration: Duration
// Handle clocks we know
if let _ = clock as? ContinuousClock {
duration = delay as! ContinuousClock.Duration
} else if let _ = clock as? SuspendingClock {
duration = delay as! SuspendingClock.Duration
} else {
#if compiler(>=6.4)
// Hand-off the scheduling work to Clock implementation for unknown clocks.
// Clock.enqueue is only available in the development branch (6.4+).
clock.enqueue(
job,
on: self,
at: clock.now.advanced(by: delay),
tolerance: tolerance
)
return
#else
fatalError("Unsupported clock type; only ContinuousClock and SuspendingClock are supported")
#endif // #if compiler(>=6.4) (non-Embedded)
}
let milliseconds = Self.delayInMilliseconds(from: duration)
self.enqueue(
Expand Down
14 changes: 8 additions & 6 deletions 14 Utilities/build-examples.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ EXCLUDED_EXAMPLES=()

for example in Examples/*; do
skip_example=false
for excluded in "${EXCLUDED_EXAMPLES[@]}"; do
if [[ "$example" == *"$excluded"* ]]; then
skip_example=true
break
fi
done
if ((${#EXCLUDED_EXAMPLES[@]})); then
for excluded in "${EXCLUDED_EXAMPLES[@]}"; do
if [[ "$example" == *"$excluded"* ]]; then
skip_example=true
break
fi
done
fi
if [ "$skip_example" = true ]; then
echo "Skipping $example"
continue
Expand Down
Loading
Morty Proxy This is a proxified and sanitized view of the page, visit original site.