From 861642642164ddd95f05d1067cc1b19a416626d8 Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Sat, 25 Jun 2022 05:16:24 +0000 Subject: [PATCH 1/3] Fix 5.7 build since String.init has now more overloads --- Sources/TokamakDOM/Storage/WebStorage.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/TokamakDOM/Storage/WebStorage.swift b/Sources/TokamakDOM/Storage/WebStorage.swift index 2daecf53f..2cbe27562 100644 --- a/Sources/TokamakDOM/Storage/WebStorage.swift +++ b/Sources/TokamakDOM/Storage/WebStorage.swift @@ -73,6 +73,6 @@ extension WebStorage { } public func read(key: String) -> String? { - getItem(key: key, String.init) + getItem(key: key, { $0 }) } } From 6b7c3850610e891ddfa3e4f89d1419f4aa1fdcd5 Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Sat, 25 Jun 2022 05:33:44 +0000 Subject: [PATCH 2/3] Data pointers in constant metadata are relative since 5.7 --- Sources/TokamakCore/Reflection/Pointers/MetadataOffset.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Sources/TokamakCore/Reflection/Pointers/MetadataOffset.swift b/Sources/TokamakCore/Reflection/Pointers/MetadataOffset.swift index 83cec8ced..794e3faa7 100644 --- a/Sources/TokamakCore/Reflection/Pointers/MetadataOffset.swift +++ b/Sources/TokamakCore/Reflection/Pointers/MetadataOffset.swift @@ -24,7 +24,9 @@ struct MetadataOffset { let offset: Int32 func apply(to ptr: UnsafeRawPointer) -> UnsafePointer { - #if arch(wasm32) + // Data pointers in constant metadata are absolute until SwiftWasm 5.6 + // Since SwiftWasm 5.7, they are relative as well as other platforms. + #if arch(wasm32) && !compiler(>=5.7) return UnsafePointer(bitPattern: Int(offset))! #else return ptr.advanced(by: numericCast(offset)).assumingMemoryBound(to: Pointee.self) From 3f26a3730389bd20e14a43e6c17aa475595fcc8b Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Sat, 25 Jun 2022 05:42:46 +0000 Subject: [PATCH 3/3] Test several toolchain on CI --- .github/workflows/ci.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9d3a3617d..d56b77522 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,11 +20,19 @@ jobs: ls -la Bundle ls -lh Bundle/*.wasm | awk '{printf "::warning file=Sources/TokamakDemo/main.swift,line=1,col=1::TokamakDemo Wasm is %s.",$5}' - swiftwasm_test_5_6: + swiftwasm_test: runs-on: ubuntu-20.04 + strategy: + fail-fast: true + matrix: + include: + - { toolchain: wasm-5.6.0-RELEASE } + - { toolchain: wasm-5.7-SNAPSHOT-2022-06-01-a } + - { toolchain: wasm-DEVELOPMENT-SNAPSHOT-2022-06-23-a } steps: - uses: actions/checkout@v2 + - run: echo "${{ matrix.toolchain }}" > .swift-version - uses: swiftwasm/swiftwasm-action@v5.6 with: shell-action: carton test --environment node