diff --git a/.github/actions/install-swift/action.yml b/.github/actions/install-swift/action.yml index bdc4c9345..d6fbcc969 100644 --- a/.github/actions/install-swift/action.yml +++ b/.github/actions/install-swift/action.yml @@ -1,9 +1,8 @@ +name: 'Install Swift toolchain' +description: 'Install Swift toolchain tarball from URL' inputs: - swift-dir: - description: The directory name part of the distribution URL - required: true - swift-version: - description: Git tag indicating the Swift version + download-url: + description: 'URL to download Swift toolchain tarball' required: true runs: @@ -33,12 +32,6 @@ runs: zlib1g-dev curl - - name: Download Swift - shell: bash - run: curl -fLO https://download.swift.org/${{ inputs.swift-dir }}/${{ inputs.swift-version }}/${{ inputs.swift-version }}-ubuntu22.04.tar.gz - working-directory: ${{ env.RUNNER_TEMP }} - - - name: Unarchive and Install Swift + - name: Install Swift shell: bash - run: sudo tar -xf ${{ inputs.swift-version }}-ubuntu22.04.tar.gz --strip-components=2 -C /usr/local - working-directory: ${{ env.RUNNER_TEMP }} + run: curl -fL ${{ inputs.download-url }} | sudo tar xfz - --strip-components=2 -C /usr/local diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8ba892e06..8ed33aa5d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,22 +23,33 @@ jobs: - { os: ubuntu-20.04, toolchain: wasm-5.9.1-RELEASE, wasi-backend: MicroWASI } - { os: ubuntu-20.04, toolchain: wasm-5.10.0-RELEASE, wasi-backend: MicroWASI } - os: ubuntu-22.04 - toolchain: DEVELOPMENT-SNAPSHOT-2024-06-13-a + toolchain: + download-url: https://download.swift.org/swift-6.0.2-release/ubuntu2204/swift-6.0.2-RELEASE/swift-6.0.2-RELEASE-ubuntu22.04.tar.gz swift-sdk: - id: DEVELOPMENT-SNAPSHOT-2024-06-14-a-wasm32-unknown-wasi - download-url: "https://github.com/swiftwasm/swift/releases/download/swift-wasm-DEVELOPMENT-SNAPSHOT-2024-06-14-a/swift-wasm-DEVELOPMENT-SNAPSHOT-2024-06-14-a-wasm32-unknown-wasi.artifactbundle.zip" + id: 6.0.2-RELEASE-wasm32-unknown-wasi + download-url: "https://github.com/swiftwasm/swift/releases/download/swift-wasm-6.0.2-RELEASE/swift-wasm-6.0.2-RELEASE-wasm32-unknown-wasi.artifactbundle.zip" + checksum: "6ffedb055cb9956395d9f435d03d53ebe9f6a8d45106b979d1b7f53358e1dcb4" wasi-backend: Node - os: ubuntu-22.04 - toolchain: DEVELOPMENT-SNAPSHOT-2024-06-13-a + toolchain: + download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2024-10-30-a/swift-DEVELOPMENT-SNAPSHOT-2024-10-30-a-ubuntu22.04.tar.gz swift-sdk: - id: DEVELOPMENT-SNAPSHOT-2024-06-14-a-wasm32-unknown-wasip1-threads - download-url: "https://github.com/swiftwasm/swift/releases/download/swift-wasm-DEVELOPMENT-SNAPSHOT-2024-06-14-a/swift-wasm-DEVELOPMENT-SNAPSHOT-2024-06-14-a-wasm32-unknown-wasip1-threads.artifactbundle.zip" + id: DEVELOPMENT-SNAPSHOT-2024-10-31-a-wasm32-unknown-wasi + download-url: "https://github.com/swiftwasm/swift/releases/download/swift-wasm-DEVELOPMENT-SNAPSHOT-2024-10-31-a/swift-wasm-DEVELOPMENT-SNAPSHOT-2024-10-31-a-wasm32-unknown-wasi.artifactbundle.zip" + checksum: "e42546397786ea6eaec2d9c07f9118a6f3428784cf3df3840a369f19700c1a69" + wasi-backend: Node + - os: ubuntu-22.04 + toolchain: + download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2024-10-30-a/swift-DEVELOPMENT-SNAPSHOT-2024-10-30-a-ubuntu22.04.tar.gz + swift-sdk: + id: DEVELOPMENT-SNAPSHOT-2024-10-31-a-wasm32-unknown-wasip1-threads + download-url: "https://github.com/swiftwasm/swift/releases/download/swift-wasm-DEVELOPMENT-SNAPSHOT-2024-10-31-a/swift-wasm-DEVELOPMENT-SNAPSHOT-2024-10-31-a-wasm32-unknown-wasip1-threads.artifactbundle.zip" + checksum: "17dbbe61af6ca09c92ee2d68a56d5716530428e28c4c8358aa860cc4fcdc91ae" wasi-backend: Node runs-on: ${{ matrix.entry.os }} env: JAVASCRIPTKIT_WASI_BACKEND: ${{ matrix.entry.wasi-backend }} - SWIFT_VERSION: ${{ matrix.entry.toolchain }} steps: - name: Checkout uses: actions/checkout@v4 @@ -52,12 +63,11 @@ jobs: - uses: ./.github/actions/install-swift if: ${{ matrix.entry.swift-sdk }} with: - swift-dir: development/ubuntu2204 - swift-version: swift-${{ matrix.entry.toolchain }} + download-url: ${{ matrix.entry.toolchain.download-url }} - name: Install Swift SDK if: ${{ matrix.entry.swift-sdk }} run: | - swift sdk install "${{ matrix.entry.swift-sdk.download-url }}" + swift sdk install "${{ matrix.entry.swift-sdk.download-url }}" --checksum "${{ matrix.entry.swift-sdk.checksum }}" echo "SWIFT_SDK_ID=${{ matrix.entry.swift-sdk.id }}" >> $GITHUB_ENV - run: make bootstrap - run: make test @@ -94,11 +104,11 @@ jobs: matrix: entry: - os: ubuntu-22.04 - toolchain: DEVELOPMENT-SNAPSHOT-2024-09-25-a + toolchain: + download-url: https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2024-10-30-a/swift-DEVELOPMENT-SNAPSHOT-2024-10-30-a-ubuntu22.04.tar.gz steps: - uses: actions/checkout@v4 - uses: ./.github/actions/install-swift with: - swift-dir: development/ubuntu2204 - swift-version: swift-${{ matrix.entry.toolchain }} + download-url: ${{ matrix.entry.toolchain.download-url }} - run: ./Examples/Embedded/build.sh diff --git a/IntegrationTests/lib.js b/IntegrationTests/lib.js index ed66c7e86..6c08cddde 100644 --- a/IntegrationTests/lib.js +++ b/IntegrationTests/lib.js @@ -177,7 +177,7 @@ export const startWasiTask = async (wasmPath, wasiConstructorKey = selectWASIBac // We don't have JS API to get memory descriptor of imported memory // at this moment, so we assume 256 pages (16MB) memory is enough // large for initial memory size. - const memory = new WebAssembly.Memory({ initial: 256, maximum: 16384, shared: true }) + const memory = new WebAssembly.Memory({ initial: 1024, maximum: 16384, shared: true }) importObject["env"] = { memory }; importObject["wasi"] = { "thread-spawn": (startArg) => { diff --git a/Package.swift b/Package.swift index 1f35305a1..c33d7e71b 100644 --- a/Package.swift +++ b/Package.swift @@ -44,6 +44,9 @@ let package = Package( "JavaScriptEventLoop", "JavaScriptKit", "JavaScriptEventLoopTestSupport", + ], + swiftSettings: [ + .enableExperimentalFeature("Extern") ] ), .target(name: "_CJavaScriptEventLoop"), diff --git a/scripts/install-toolchain.sh b/scripts/install-toolchain.sh deleted file mode 100755 index ef085aaaf..000000000 --- a/scripts/install-toolchain.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -set -eu - -scripts_dir="$(cd "$(dirname $0)" && pwd)" - -default_swift_version="$(cat $scripts_dir/../.swift-version)" -SWIFT_VERSION="${SWIFT_VERSION:-$default_swift_version}" -swift_tag="swift-$SWIFT_VERSION" - -if [ -z "$(which swiftenv)" ]; then - echo "swiftenv not installed, please install it before this script." - exit 1 -fi - -if [ ! -z "$(swiftenv versions | grep $SWIFT_VERSION)" ]; then - echo "$SWIFT_VERSION is already installed." - exit 0 -fi - -case $(uname -s) in - Darwin) - toolchain_download="$swift_tag-macos_x86_64.pkg" - ;; - Linux) - if [ $(grep RELEASE /etc/lsb-release) == "DISTRIB_RELEASE=18.04" ]; then - toolchain_download="$swift_tag-ubuntu18.04_x86_64.tar.gz" - elif [ $(grep RELEASE /etc/lsb-release) == "DISTRIB_RELEASE=20.04" ]; then - toolchain_download="$swift_tag-ubuntu20.04_x86_64.tar.gz" - else - echo "Unknown Ubuntu version" - exit 1 - fi - ;; - *) - echo "Unrecognised platform $(uname -s)" - exit 1 - ;; -esac - -toolchain_download_url="https://github.com/swiftwasm/swift/releases/download/$swift_tag/$toolchain_download" - -swiftenv install "$toolchain_download_url"