From 9bee9f74e09de42d9a2ef1e9e510a97a73d1dc69 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Wed, 7 Jan 2026 14:32:41 +0000 Subject: [PATCH 1/6] Fix `Examples/Embedded` not building with Swift 6.2.3 The package should build with the Embedded Swift SDK triple and should no longer provide its own allocator or other shim functions, --- Examples/Embedded/Package.swift | 14 -------- .../_thingsThatShouldNotBeNeeded.swift | 36 ------------------- Examples/Embedded/build.sh | 5 ++- 3 files changed, 2 insertions(+), 53 deletions(-) delete mode 100644 Examples/Embedded/Sources/EmbeddedApp/_thingsThatShouldNotBeNeeded.swift diff --git a/Examples/Embedded/Package.swift b/Examples/Embedded/Package.swift index 5ae19adc6..b0df899c3 100644 --- a/Examples/Embedded/Package.swift +++ b/Examples/Embedded/Package.swift @@ -6,31 +6,17 @@ let package = Package( name: "Embedded", dependencies: [ .package(name: "JavaScriptKit", path: "../../"), - .package(url: "https://github.com/swiftwasm/swift-dlmalloc", branch: "0.1.0"), ], targets: [ .executableTarget( name: "EmbeddedApp", dependencies: [ "JavaScriptKit", - .product(name: "dlmalloc", package: "swift-dlmalloc"), ], - cSettings: [.unsafeFlags(["-fdeclspec"])], swiftSettings: [ .enableExperimentalFeature("Embedded"), .enableExperimentalFeature("Extern"), - .unsafeFlags([ - "-Xfrontend", "-gnone", - "-Xfrontend", "-disable-stack-protector", - ]), ], - linkerSettings: [ - .unsafeFlags([ - "-Xclang-linker", "-nostdlib", - "-Xlinker", "--no-entry", - "-Xlinker", "--export-if-defined=__main_argc_argv", - ]) - ] ) ], swiftLanguageModes: [.v5] diff --git a/Examples/Embedded/Sources/EmbeddedApp/_thingsThatShouldNotBeNeeded.swift b/Examples/Embedded/Sources/EmbeddedApp/_thingsThatShouldNotBeNeeded.swift deleted file mode 100644 index 8f45ccee9..000000000 --- a/Examples/Embedded/Sources/EmbeddedApp/_thingsThatShouldNotBeNeeded.swift +++ /dev/null @@ -1,36 +0,0 @@ -import JavaScriptKit - -// NOTE: it seems the embedded tree shaker gets rid of these exports if they are not used somewhere -func _i_need_to_be_here_for_wasm_exports_to_work() { - _ = _swjs_library_features - _ = _swjs_call_host_function - _ = _swjs_free_host_function -} - -// TODO: why do I need this? and surely this is not ideal... figure this out, or at least have this come from a C lib -@_cdecl("strlen") -func strlen(_ s: UnsafePointer) -> Int { - var p = s - while p.pointee != 0 { - p += 1 - } - return p - s -} - -enum LCG { - static var x: UInt8 = 0 - static let a: UInt8 = 0x05 - static let c: UInt8 = 0x0b - - static func next() -> UInt8 { - x = a &* x &+ c - return x - } -} - -@_cdecl("arc4random_buf") -public func arc4random_buf(_ buffer: UnsafeMutableRawPointer, _ size: Int) { - for i in 0.. Date: Wed, 7 Jan 2026 14:37:27 +0000 Subject: [PATCH 2/6] Fix formatting --- Examples/Embedded/Package.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Examples/Embedded/Package.swift b/Examples/Embedded/Package.swift index b0df899c3..522a72908 100644 --- a/Examples/Embedded/Package.swift +++ b/Examples/Embedded/Package.swift @@ -5,13 +5,13 @@ import PackageDescription let package = Package( name: "Embedded", dependencies: [ - .package(name: "JavaScriptKit", path: "../../"), + .package(name: "JavaScriptKit", path: "../../") ], targets: [ .executableTarget( name: "EmbeddedApp", dependencies: [ - "JavaScriptKit", + "JavaScriptKit" ], swiftSettings: [ .enableExperimentalFeature("Embedded"), From 3e6150052be56694ed6bf48d66d00214a5344bfd Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Wed, 7 Jan 2026 14:38:29 +0000 Subject: [PATCH 3/6] Remove unnecessarily hardcoded `.enableExperimentalFeature("Embedded")` --- Examples/Embedded/Package.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/Examples/Embedded/Package.swift b/Examples/Embedded/Package.swift index 522a72908..2c92a1355 100644 --- a/Examples/Embedded/Package.swift +++ b/Examples/Embedded/Package.swift @@ -14,7 +14,6 @@ let package = Package( "JavaScriptKit" ], swiftSettings: [ - .enableExperimentalFeature("Embedded"), .enableExperimentalFeature("Extern"), ], ) From 587c1c8cac1fa5f3c38f4318aa16b80ad620c563 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Wed, 7 Jan 2026 14:39:48 +0000 Subject: [PATCH 4/6] Fix formatting --- Examples/Embedded/Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/Embedded/Package.swift b/Examples/Embedded/Package.swift index 2c92a1355..42702394a 100644 --- a/Examples/Embedded/Package.swift +++ b/Examples/Embedded/Package.swift @@ -14,7 +14,7 @@ let package = Package( "JavaScriptKit" ], swiftSettings: [ - .enableExperimentalFeature("Extern"), + .enableExperimentalFeature("Extern") ], ) ], From e595429720de217e632f3676f66a2ec1a148c216 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Wed, 7 Jan 2026 17:32:40 +0000 Subject: [PATCH 5/6] Remove unusupported `wasm32-unknown-none-wasm` test --- Plugins/PackageToJS/Tests/ExampleTests.swift | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Plugins/PackageToJS/Tests/ExampleTests.swift b/Plugins/PackageToJS/Tests/ExampleTests.swift index e673e6630..0018eb04a 100644 --- a/Plugins/PackageToJS/Tests/ExampleTests.swift +++ b/Plugins/PackageToJS/Tests/ExampleTests.swift @@ -353,20 +353,6 @@ extension Trait where Self == ConditionTrait { } } - // FIXME: This test fails on the current main snapshot - #if !compiler(>=6.3) - @Test(.requireEmbeddedSwiftInToolchain(triple: "wasm32-unknown-none-wasm")) - func embeddedWasmUnknownNone() throws { - try withPackage(at: "Examples/Embedded") { packageDir, _, runSwift in - try runSwift( - ["package", "--triple", "wasm32-unknown-none-wasm", "js", "-c", "release"], - [ - "JAVASCRIPTKIT_EXPERIMENTAL_EMBEDDED_WASM": "true" - ] - ) - } - } - @Test(.requireEmbeddedSwiftInSwiftSDK()) func embeddedWasmUnknownWasi() throws { let swiftSDKID = try #require(Self.getEmbeddedSwiftSDKID()) From 48e6e67198e41803cee93a3f3936fc8eb1dc0145 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Wed, 7 Jan 2026 17:41:45 +0000 Subject: [PATCH 6/6] Add back missing `#if !compiler(>=6.3)` clause --- Plugins/PackageToJS/Tests/ExampleTests.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Plugins/PackageToJS/Tests/ExampleTests.swift b/Plugins/PackageToJS/Tests/ExampleTests.swift index 0018eb04a..6e2b4e1c2 100644 --- a/Plugins/PackageToJS/Tests/ExampleTests.swift +++ b/Plugins/PackageToJS/Tests/ExampleTests.swift @@ -353,6 +353,8 @@ extension Trait where Self == ConditionTrait { } } + // FIXME: This test fails on the current main snapshot + #if !compiler(>=6.3) @Test(.requireEmbeddedSwiftInSwiftSDK()) func embeddedWasmUnknownWasi() throws { let swiftSDKID = try #require(Self.getEmbeddedSwiftSDKID())