From 998c8670a30094b22113404d089a942a6bf50992 Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Wed, 1 Oct 2025 14:54:03 -0600 Subject: [PATCH 1/8] update dependencies - WASI-SDK v27 - CPython v3.14.0rc3 - Wasmtime v37.0.1 - pyo3 v0.26.0 - wasm-tools v1.239.0 - etc. Signed-off-by: Joel Dice --- .github/workflows/release.yaml | 11 +- .github/workflows/test.yaml | 13 +- CONTRIBUTING.md | 17 +- Cargo.lock | 632 ++++++++++++++++++--------------- Cargo.toml | 19 +- build.rs | 39 +- cpython | 2 +- pyo3-config.txt | 4 +- runtime/Cargo.toml | 4 +- runtime/pyo3-config-clippy.txt | 4 +- runtime/src/lib.rs | 44 +-- src/lib.rs | 29 +- src/prelink.rs | 6 +- src/test.rs | 2 +- src/test/echoes.rs | 4 +- src/test/tests.rs | 126 +++---- test-generator/src/lib.rs | 20 +- tests/componentize.rs | 2 +- 18 files changed, 523 insertions(+), 455 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 65b848f..6d638db 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -12,8 +12,7 @@ on: env: CARGO_TERM_COLOR: always - WASI_SDK_VERSION: 20.46gf3a1f8991535 - WASI_SDK_RELEASE: wasi-sockets-alpha-5 + WASI_SDK_VERSION: 27 permissions: contents: write @@ -57,9 +56,9 @@ jobs: shell: bash run: | cd /tmp - curl -LO https://github.com/dicej/wasi-sdk/releases/download/${WASI_SDK_RELEASE}/wasi-sdk-${WASI_SDK_VERSION}-linux.tar.gz - tar xf wasi-sdk-${WASI_SDK_VERSION}-linux.tar.gz - mv wasi-sdk-${WASI_SDK_VERSION} /opt/wasi-sdk + curl -LO https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_VERSION}.0-x86_64-linux.tar.gz + tar xf wasi-sdk-${WASI_SDK_VERSION}-x86_64-linux.tar.gz + mv wasi-sdk-${WASI_SDK_VERSION}-x86_64-linux /opt/wasi-sdk - name: Cache CPython id: cache-cpython-wasi @@ -139,7 +138,7 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: "3.12" + python-version: "3.14.0-rc3" - name: Install latest Rust nightly toolchain uses: dtolnay/rust-toolchain@nightly diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index df8abb0..6fc67f5 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -14,8 +14,7 @@ concurrency: env: CARGO_TERM_COLOR: always - WASI_SDK_VERSION: 20.46gf3a1f8991535 - WASI_SDK_RELEASE: wasi-sockets-alpha-5 + WASI_SDK_VERSION: 27 jobs: linux: @@ -29,7 +28,7 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: "3.12" + python-version: "3.14.0-rc3" - name: Install latest Rust nightly toolchain uses: dtolnay/rust-toolchain@nightly @@ -55,9 +54,9 @@ jobs: shell: bash run: | cd /tmp - curl -LO https://github.com/dicej/wasi-sdk/releases/download/${WASI_SDK_RELEASE}/wasi-sdk-${WASI_SDK_VERSION}-linux.tar.gz - tar xf wasi-sdk-${WASI_SDK_VERSION}-linux.tar.gz - mv wasi-sdk-${WASI_SDK_VERSION} /opt/wasi-sdk + curl -LO https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_VERSION}.0-x86_64-linux.tar.gz + tar xf wasi-sdk-${WASI_SDK_VERSION}-x86_64-linux.tar.gz + mv wasi-sdk-${WASI_SDK_VERSION}-x86_64-linux /opt/wasi-sdk - name: Cache CPython id: cache-cpython-wasi @@ -143,7 +142,7 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: "3.12" + python-version: "3.14.0-rc3" - name: Test shell: bash diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d84b9ef..fc49574 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,10 +14,6 @@ channel](https://bytecodealliance.zulipchat.com/#narrow/stream/394175-SIG-Guest- ## Building from source -For the time being, we use temporary forks of `wasi-sdk` and `wasi-libc` which -enable support for `wasi-sockets`. Once that support is upstreamed, we'll -switch. - ### Prerequisites - Tools needed to build [CPython](https://github.com/python/cpython) (Make, Clang, etc.) @@ -42,15 +38,16 @@ First, make sure you've got all the submodules cloned. git submodule update --init --recursive ``` -Next, install WASI SDK to `/opt/wasi-sdk` (alternatively, you can specify a +Next, install WASI-SDK 27 to `/opt/wasi-sdk` (alternatively, you can specify a different location and reference it later using the `WASI_SDK_PATH` environment -variable). Replace `linux` with `macos` or `mingw` (Windows) below depending on -your OS. +variable). Replace `arm64-linux` with `x86_64-linux`, `arm64-macos`, +`x86_64-macos`, `arm64-windows`, or `x86_64-windows` below depending on your +architecure and OS, if necessary. ```shell -curl -LO https://github.com/dicej/wasi-sdk/releases/download/wasi-sockets-alpha-5/wasi-sdk-20.46gf3a1f8991535-linux.tar.gz -tar xf wasi-sdk-20.46gf3a1f8991535-linux.tar.gz -sudo mv wasi-sdk-20.46gf3a1f8991535 /opt/wasi-sdk +curl -LO https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-27/wasi-sdk-27.0-arm64-linux.tar.gz +tar xf wasi-sdk-27.0-arm64-linux.tar.gz +sudo mv wasi-sdk-27.0-arm64-linux /opt/wasi-sdk export WASI_SDK_PATH=/opt/wasi-sdk ``` diff --git a/Cargo.lock b/Cargo.lock index 1bac962..b08f022 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,7 +8,16 @@ version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ - "gimli", + "gimli 0.31.1", +] + +[[package]] +name = "addr2line" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9acbfca36652500c911ddb767ed433e3ed99b032b5d935be73c6923662db1d43" +dependencies = [ + "gimli 0.32.2", ] [[package]] @@ -199,11 +208,11 @@ version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "addr2line", + "addr2line 0.24.2", "cfg-if", "libc", "miniz_oxide", - "object", + "object 0.36.5", "rustc-demangle", "windows-targets 0.52.6", ] @@ -464,15 +473,15 @@ checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "component-init-transform" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602204303fafe3d9582c7b6f80d8ec594ff7ee033ee584f29b269ee698fc198c" +version = "0.2.0" +source = "git+https://github.com/dicej/component-init?rev=3800ab6e#3800ab6ef88c4a9817119ccfe5fa9de8ff2afff1" dependencies = [ "anyhow", "async-trait", "futures", - "wasm-encoder 0.235.0", - "wasmparser 0.235.0", + "wasm-encoder 0.238.1", + "wasm-metadata 0.238.1", + "wasmparser 0.238.1", ] [[package]] @@ -508,12 +517,12 @@ dependencies = [ "test-generator", "tokio", "toml", - "wasm-encoder 0.235.0", - "wasmparser 0.235.0", + "wasm-encoder 0.239.0", + "wasmparser 0.239.0", "wasmtime", "wasmtime-wasi", - "wit-component 0.235.0", - "wit-parser 0.235.0", + "wit-component 0.239.0", + "wit-parser 0.239.0", "zstd", ] @@ -570,36 +579,36 @@ dependencies = [ [[package]] name = "cranelift-assembler-x64" -version = "0.121.1" +version = "0.124.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226b7077389885873ffad5d778e8512742580a6e11b0f723072f41f305d3652f" +checksum = "d3e8ca189363907c025c5debe2bfe56c8c18503d4575d750f87e4ccbbfbd8681" dependencies = [ "cranelift-assembler-x64-meta", ] [[package]] name = "cranelift-assembler-x64-meta" -version = "0.121.1" +version = "0.124.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9cfeae5a23c8cf9c43381f49211f3ce6dc1da1d46f1c5d06966e6258cc483fa" +checksum = "e169461bfd463df68b01b196522f263c905eadc852f6e57fd4ce4c5d76115ead" dependencies = [ "cranelift-srcgen", ] [[package]] name = "cranelift-bforest" -version = "0.121.1" +version = "0.124.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c88c577c6af92b550cb83455c331cf8e1bc89fe0ccc3e7eb0fa617ed1d63056" +checksum = "2a98298338375075287834defe333d552847110f3a04db0ce19bd308b4c40fbb" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-bitset" -version = "0.121.1" +version = "0.124.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370f0aa7f1816bf0f838048d69b72d6cf12ef2fc3b37f6997fe494ffb9feb3ad" +checksum = "edf5f49a2e2ae284db75437a49cc13220a7fb394983d5545af1209ab0bbadee3" dependencies = [ "serde", "serde_derive", @@ -607,9 +616,9 @@ dependencies = [ [[package]] name = "cranelift-codegen" -version = "0.121.1" +version = "0.124.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d1a10a8a2958b68ecd261e565eef285249e242a8447ac959978319eabbb4a55" +checksum = "c354d6db9e344f647f38c88849c482c6014b79a295aca23fa82f73b62caeda2d" dependencies = [ "bumpalo", "cranelift-assembler-x64", @@ -620,7 +629,7 @@ dependencies = [ "cranelift-control", "cranelift-entity", "cranelift-isle", - "gimli", + "gimli 0.32.2", "hashbrown", "log", "pulley-interpreter", @@ -629,41 +638,42 @@ dependencies = [ "serde", "smallvec", "target-lexicon", - "wasmtime-math", + "wasmtime-internal-math", ] [[package]] name = "cranelift-codegen-meta" -version = "0.121.1" +version = "0.124.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f319986d5ae1386cfec625c70f8c01e52dc1f910aa6aaee7740bf8842d4e19c7" +checksum = "9bb8008396957de750e26d0b40a76bea6e5623d970a5bfe4266ef0a79ccb8341" dependencies = [ "cranelift-assembler-x64-meta", "cranelift-codegen-shared", "cranelift-srcgen", + "heck", "pulley-interpreter", ] [[package]] name = "cranelift-codegen-shared" -version = "0.121.1" +version = "0.124.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed52f5660397039c3c741c3acf18746445f4e20629b7280d9f2ccfe57e2b1efd" +checksum = "98ecb53eafe1ad1f7d7f7d0585ae5d42b2050978fa812216b0420d4752eb41cb" [[package]] name = "cranelift-control" -version = "0.121.1" +version = "0.124.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79bde8d48e1840702574e28c5d7d4499441435af71e6c47450881f84ce2b60a5" +checksum = "b9c43ac27fe178cadb17e7f4cf1320ba89b8875cc2bdee265cccfca49bc76c95" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.121.1" +version = "0.124.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0335ac187211ac94c254826b6e78d23b8654ae09ebf0830506a827a2647162f" +checksum = "15513ee4bf648d366654c6a9864fe870ca64f1eed4acabf9139056e68b3d44dc" dependencies = [ "cranelift-bitset", "serde", @@ -672,9 +682,9 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.121.1" +version = "0.124.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fce5fcf93c1fece95d0175b15fbaf0808b187430bc06c8ecde80db0ed58c5e" +checksum = "c5e4399d31f06b50fcb3fa0117ff4c393c22e521574eecf524cf932fc99cd78f" dependencies = [ "cranelift-codegen", "log", @@ -684,15 +694,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.121.1" +version = "0.124.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13fc8d838a2bf28438dbaf6ccdbc34531b6a972054f43fd23be7f124121ce6e0" +checksum = "9a751ec2b7c2f281274a3798e37ba2344b55f60789e67aaa10d6bbea3f3f8a6b" [[package]] name = "cranelift-native" -version = "0.121.1" +version = "0.124.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0975ce66adcf2e0729d06b1d3efea0398d793d1f39c2e0a6f52a347537836693" +checksum = "546500d7cb424c423e118dfddc169aa61ed611c47fc1cf48783ed4e3f9800619" dependencies = [ "cranelift-codegen", "libc", @@ -701,9 +711,9 @@ dependencies = [ [[package]] name = "cranelift-srcgen" -version = "0.121.1" +version = "0.124.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4493a9b500bb02837ea2fb7d4b58c1c21c37a470ae33c92659f4e637aad14c9" +checksum = "edeb6b718b23108a123ad1c8eecf6fa34d21a6b5518fc340dda80ce5bdf42377" [[package]] name = "crc32fast" @@ -1101,6 +1111,12 @@ name = "gimli" version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "gimli" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6298e594375a7fead9efd5568f0a46e6a154fb6a9bdcbe3c06946ffd81a5f6" dependencies = [ "fallible-iterator", "indexmap", @@ -1273,7 +1289,7 @@ dependencies = [ "hyper", "libc", "pin-project-lite", - "socket2", + "socket2 0.5.9", "tokio", "tower-service", "tracing", @@ -1365,6 +1381,17 @@ version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a611371471e98973dbcab4e0ec66c31a10bc356eeb4d54a0e05eac8158fe38c" +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags", + "cfg-if", + "libc", +] + [[package]] name = "ipnet" version = "2.10.1" @@ -1497,9 +1524,9 @@ checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "log" -version = "0.4.22" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "mach2" @@ -1624,6 +1651,15 @@ name = "object" version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +dependencies = [ + "memchr", +] + +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "crc32fast", "hashbrown", @@ -1633,9 +1669,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "openssl" @@ -1811,32 +1847,23 @@ dependencies = [ "unarray", ] -[[package]] -name = "psm" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" -dependencies = [ - "cc", -] - [[package]] name = "pulley-interpreter" -version = "34.0.1" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe0e8f39bc99694ce6fc8df7df7ed258d38d255a9268e2ff964f67f4a6588cdb" +checksum = "4338089093bf5f2f50e77602a4b8bb938e16bead1419ed9cd6484c9ef7050b10" dependencies = [ "cranelift-bitset", "log", "pulley-macros", - "wasmtime-math", + "wasmtime-internal-math", ] [[package]] name = "pulley-macros" -version = "34.0.1" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9276d404009cc49f3b8befeb8ffc1d868c5ea732bd9d72ab3e64231187f908c5" +checksum = "23e93c268176831e893721022bb923f41b892b3c9e41875f276025fddb1a0ea8" dependencies = [ "proc-macro2", "quote", @@ -1845,8 +1872,9 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.25.0" -source = "git+https://github.com/dicej/pyo3?branch=v0.25.0-no-wasm32-unwind#d0cf051de41c3cefeee95c9524aa460cde7e849d" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ba0117f4212101ee6544044dae45abe1083d30ce7b29c4b5cbdfa2354e07383" dependencies = [ "indoc", "libc", @@ -1862,17 +1890,18 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.25.0" -source = "git+https://github.com/dicej/pyo3?branch=v0.25.0-no-wasm32-unwind#d0cf051de41c3cefeee95c9524aa460cde7e849d" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fc6ddaf24947d12a9aa31ac65431fb1b851b8f4365426e182901eabfb87df5f" dependencies = [ - "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" -version = "0.25.0" -source = "git+https://github.com/dicej/pyo3?branch=v0.25.0-no-wasm32-unwind#d0cf051de41c3cefeee95c9524aa460cde7e849d" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "025474d3928738efb38ac36d4744a74a400c901c7596199e20e45d98eb194105" dependencies = [ "libc", "pyo3-build-config", @@ -1880,8 +1909,9 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.25.0" -source = "git+https://github.com/dicej/pyo3?branch=v0.25.0-no-wasm32-unwind#d0cf051de41c3cefeee95c9524aa460cde7e849d" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e64eb489f22fe1c95911b77c44cc41e7c19f3082fc81cce90f657cdc42ffded" dependencies = [ "proc-macro2", "pyo3-macros-backend", @@ -1891,8 +1921,9 @@ dependencies = [ [[package]] name = "pyo3-macros-backend" -version = "0.25.0" -source = "git+https://github.com/dicej/pyo3?branch=v0.25.0-no-wasm32-unwind#d0cf051de41c3cefeee95c9524aa460cde7e849d" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "100246c0ecf400b475341b8455a9213344569af29a3c841d29270e53102e0fcf" dependencies = [ "heck", "proc-macro2", @@ -2006,9 +2037,9 @@ dependencies = [ [[package]] name = "regalloc2" -version = "0.12.2" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5216b1837de2149f8bc8e6d5f88a9326b63b8c836ed58ce4a0a29ec736a59734" +checksum = "efd8138ce7c3d7c13be4f61893154b5d711bd798d2d7be3ecb8dcc7e7a06ca98" dependencies = [ "allocator-api2", "bumpalo", @@ -2368,6 +2399,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "spdx" version = "0.10.6" @@ -2564,25 +2605,27 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.0" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "pin-project-lite", - "socket2", + "slab", + "socket2 0.6.0", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", @@ -2720,17 +2763,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "trait-variant" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "try-lock" version = "0.2.5" @@ -2936,22 +2968,22 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.233.0" +version = "0.238.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9679ae3cf7cfa2ca3a327f7fab97f27f3294d402fd1a76ca8ab514e17973e4d3" +checksum = "d50d48c31c615f77679b61c607b8151378a5d03159616bf3d17e8e2005afdaf5" dependencies = [ "leb128fmt", - "wasmparser 0.233.0", + "wasmparser 0.238.1", ] [[package]] name = "wasm-encoder" -version = "0.235.0" +version = "0.239.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3bc393c395cb621367ff02d854179882b9a351b4e0c93d1397e6090b53a5c2a" +checksum = "5be00faa2b4950c76fe618c409d2c3ea5a3c9422013e079482d78544bb2d184c" dependencies = [ "leb128fmt", - "wasmparser 0.235.0", + "wasmparser 0.239.0", ] [[package]] @@ -2975,14 +3007,33 @@ dependencies = [ [[package]] name = "wasm-metadata" -version = "0.235.0" +version = "0.238.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00094573b000c92134f2ef0f8afa4f6f892de37e78442988c946243a8c44364e" +dependencies = [ + "anyhow", + "auditable-serde", + "flate2", + "indexmap", + "serde", + "serde_derive", + "serde_json", + "spdx", + "url", + "wasm-encoder 0.238.1", + "wasmparser 0.238.1", +] + +[[package]] +name = "wasm-metadata" +version = "0.239.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b055604ba04189d54b8c0ab2c2fc98848f208e103882d5c0b984f045d5ea4d20" +checksum = "20b3ec880a9ac69ccd92fbdbcf46ee833071cf09f82bb005b2327c7ae6025ae2" dependencies = [ "anyhow", "indexmap", - "wasm-encoder 0.235.0", - "wasmparser 0.235.0", + "wasm-encoder 0.239.0", + "wasmparser 0.239.0", ] [[package]] @@ -2999,9 +3050,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.233.0" +version = "0.238.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b51cb03afce7964bbfce46602d6cb358726f36430b6ba084ac6020d8ce5bc102" +checksum = "3fa99c8328024423875ae4a55345cfde8f0371327fb2d0f33b0f52a06fc44408" dependencies = [ "bitflags", "hashbrown", @@ -3012,9 +3063,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.235.0" +version = "0.239.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "161296c618fa2d63f6ed5fffd1112937e803cb9ec71b32b01a76321555660917" +checksum = "8c9d90bb93e764f6beabf1d02028c70a2156a6583e63ac4218dd07ef733368b0" dependencies = [ "bitflags", "hashbrown", @@ -3025,22 +3076,22 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.233.0" +version = "0.239.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf8e5b732895c99b21aa615f1b73352e51bbe2b2cb6c87eae7f990d07c1ac18" +checksum = "b3981f3d51f39f24f5fc90f93049a90f08dbbca8deba602cd46bb8ca67a94718" dependencies = [ "anyhow", "termcolor", - "wasmparser 0.233.0", + "wasmparser 0.239.0", ] [[package]] name = "wasmtime" -version = "34.0.1" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2523d3347356a74e9c312c2c96e709c82d998dcafdca97f6d620e69c032fd043" +checksum = "eae1ef7649330697f0374eca8af0a437cf349605afce261bb64ba66fa0663c80" dependencies = [ - "addr2line", + "addr2line 0.25.0", "anyhow", "async-trait", "bitflags", @@ -3049,7 +3100,7 @@ dependencies = [ "cfg-if", "encoding_rs", "fxprof-processed-profile", - "gimli", + "gimli 0.32.2", "hashbrown", "indexmap", "ittapi", @@ -3057,10 +3108,9 @@ dependencies = [ "log", "mach2", "memfd", - "object", + "object 0.37.3", "once_cell", "postcard", - "psm", "pulley-interpreter", "rayon", "rustix 1.0.7", @@ -3070,40 +3120,67 @@ dependencies = [ "serde_json", "smallvec", "target-lexicon", - "trait-variant", - "wasm-encoder 0.233.0", - "wasmparser 0.233.0", - "wasmtime-asm-macros", - "wasmtime-cache", - "wasmtime-component-macro", - "wasmtime-component-util", - "wasmtime-cranelift", + "wasm-encoder 0.239.0", + "wasmparser 0.239.0", "wasmtime-environ", - "wasmtime-fiber", - "wasmtime-jit-debug", - "wasmtime-jit-icache-coherence", - "wasmtime-math", - "wasmtime-slab", - "wasmtime-versioned-export-macros", - "wasmtime-winch", + "wasmtime-internal-asm-macros", + "wasmtime-internal-cache", + "wasmtime-internal-component-macro", + "wasmtime-internal-component-util", + "wasmtime-internal-cranelift", + "wasmtime-internal-fiber", + "wasmtime-internal-jit-debug", + "wasmtime-internal-jit-icache-coherence", + "wasmtime-internal-math", + "wasmtime-internal-slab", + "wasmtime-internal-unwinder", + "wasmtime-internal-versioned-export-macros", + "wasmtime-internal-winch", "wat", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] -name = "wasmtime-asm-macros" -version = "34.0.1" +name = "wasmtime-environ" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c45ecc343d3ad4629d5882e94f3b0f0fac22a043c07e64373381168ae00c259" +checksum = "d6bf9ff7210fa31880e7cf3cfa1b83648c777090aa11ac1c448dff11e6c466a2" +dependencies = [ + "anyhow", + "cpp_demangle", + "cranelift-bitset", + "cranelift-entity", + "gimli 0.32.2", + "indexmap", + "log", + "object 0.37.3", + "postcard", + "rustc-demangle", + "semver", + "serde", + "serde_derive", + "smallvec", + "target-lexicon", + "wasm-encoder 0.239.0", + "wasmparser 0.239.0", + "wasmprinter", + "wasmtime-internal-component-util", +] + +[[package]] +name = "wasmtime-internal-asm-macros" +version = "37.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "761159dea98c5f585497f715d9d80b38baa7c6334cf9e033a76d01b291719416" dependencies = [ "cfg-if", ] [[package]] -name = "wasmtime-cache" -version = "34.0.1" +name = "wasmtime-internal-cache" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb1976337108c8b9f80b05e9b909bf603f85c4ea97e31c112876a36d3cdcb98" +checksum = "0ea7c17c1d771c923f63c08bd79d6714ca8bb503cf4ecb6f39d82043280020bd" dependencies = [ "anyhow", "base64", @@ -3115,36 +3192,36 @@ dependencies = [ "serde_derive", "sha2", "toml", - "windows-sys 0.59.0", + "windows-sys 0.60.2", "zstd", ] [[package]] -name = "wasmtime-component-macro" -version = "34.0.1" +name = "wasmtime-internal-component-macro" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3491c0f2511be561a92ac9b086351abc3a0f48c5f5f7d14f3975e246c13838be" +checksum = "fd634b96656a0740f2b5fdb01e69bfc670bafbb292436826022a26153b33e818" dependencies = [ "anyhow", "proc-macro2", "quote", "syn", - "wasmtime-component-util", - "wasmtime-wit-bindgen", - "wit-parser 0.233.0", + "wasmtime-internal-component-util", + "wasmtime-internal-wit-bindgen", + "wit-parser 0.239.0", ] [[package]] -name = "wasmtime-component-util" -version = "34.0.1" +name = "wasmtime-internal-component-util" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26bc084e249f74e61c79077d8937c34fb0af223752b9b1725e3d7ed94b006f23" +checksum = "2a29a22837e16da7263e3622a7451917684971f65d21f4f9b97049babfacee37" [[package]] -name = "wasmtime-cranelift" -version = "34.0.1" +name = "wasmtime-internal-cranelift" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0010bd93362c634837e6bb13e213c2d83673b28dc12208b64ddd821fa55f7d33" +checksum = "da2055ee07c1782ec3bb96bd7b91328e003de1a327eb02c48c2dfc937f490547" dependencies = [ "anyhow", "cfg-if", @@ -3153,118 +3230,136 @@ dependencies = [ "cranelift-entity", "cranelift-frontend", "cranelift-native", - "gimli", + "gimli 0.32.2", "itertools", "log", - "object", + "object 0.37.3", "pulley-interpreter", "smallvec", "target-lexicon", "thiserror 2.0.12", - "wasmparser 0.233.0", + "wasmparser 0.239.0", "wasmtime-environ", - "wasmtime-math", - "wasmtime-versioned-export-macros", -] - -[[package]] -name = "wasmtime-environ" -version = "34.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36a035dc308ff6be3d790dafdc2e41a128415e20ad864580da49470073e21dc1" -dependencies = [ - "anyhow", - "cpp_demangle", - "cranelift-bitset", - "cranelift-entity", - "gimli", - "indexmap", - "log", - "object", - "postcard", - "rustc-demangle", - "semver", - "serde", - "serde_derive", - "smallvec", - "target-lexicon", - "wasm-encoder 0.233.0", - "wasmparser 0.233.0", - "wasmprinter", - "wasmtime-component-util", + "wasmtime-internal-math", + "wasmtime-internal-unwinder", + "wasmtime-internal-versioned-export-macros", ] [[package]] -name = "wasmtime-fiber" -version = "34.0.1" +name = "wasmtime-internal-fiber" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc3c1e4e70cdd3a4572dff79062caa48988f7f1ccf6850d98a4e4c41bf3cfc8" +checksum = "781b52cb6e688a6a50b90051b20a87a841c35638a18e309e00fed9daca7e36aa" dependencies = [ "anyhow", "cc", "cfg-if", "libc", "rustix 1.0.7", - "wasmtime-asm-macros", - "wasmtime-versioned-export-macros", - "windows-sys 0.59.0", + "wasmtime-internal-asm-macros", + "wasmtime-internal-versioned-export-macros", + "windows-sys 0.60.2", ] [[package]] -name = "wasmtime-jit-debug" -version = "34.0.1" +name = "wasmtime-internal-jit-debug" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d83fa2dea686f76b5437b66045aae6351d359ee11cc4124f9842de63837b81" +checksum = "b771527002767c3c84f7edee5255925c1dce5fd41e9de5b46aeaaee6e5242971" dependencies = [ "cc", - "object", + "object 0.37.3", "rustix 1.0.7", - "wasmtime-versioned-export-macros", + "wasmtime-internal-versioned-export-macros", ] [[package]] -name = "wasmtime-jit-icache-coherence" -version = "34.0.1" +name = "wasmtime-internal-jit-icache-coherence" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c71d64e8ebe132cd45e9d299a4d0daf261d66bd05cf50a204a1bf8cf96ff1f" +checksum = "4aea2b284343796fbbe749c36db092b43809762f8b9e46626561a8be4003dd85" dependencies = [ "anyhow", "cfg-if", "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] -name = "wasmtime-math" -version = "34.0.1" +name = "wasmtime-internal-math" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222bfa4769c6931c985711eb49a92748ea0acc4ca85fcd24e945a2f1bacda0c1" +checksum = "5a058122e659373c3648a71de03436105f213037d8016bb68550c259d4b37931" dependencies = [ "libm", ] [[package]] -name = "wasmtime-slab" -version = "34.0.1" +name = "wasmtime-internal-slab" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ac42c7fb0639f7c3e0c1ed0c984050245c55410f3fae334dd5b102e0edfab14" +checksum = "65cafe64859a9df2b2391bb4cc1139eace115c02ba363e22cfd19eb675282f5a" [[package]] -name = "wasmtime-versioned-export-macros" -version = "34.0.1" +name = "wasmtime-internal-unwinder" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e052e1d9c30b8f31aff64380caaaff492a9890a412658bcc8866fe626b8e91f" +checksum = "be561ffc6e3dcbd07b49d463af1a325412e58550d1514fbfb6c37e1bf4c80928" +dependencies = [ + "anyhow", + "cfg-if", + "cranelift-codegen", + "log", + "object 0.37.3", +] + +[[package]] +name = "wasmtime-internal-versioned-export-macros" +version = "37.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d16a0ea81107fc7e269d504bb586296eaf9c4d79d99aaa4f4135d18bc6fbc86" dependencies = [ "proc-macro2", "quote", "syn", ] +[[package]] +name = "wasmtime-internal-winch" +version = "37.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a99416e4805ffc48b718b5b967d3bda44aa8765c7bfcc6993f8b5819e8427cb6" +dependencies = [ + "anyhow", + "cranelift-codegen", + "gimli 0.32.2", + "log", + "object 0.37.3", + "target-lexicon", + "wasmparser 0.239.0", + "wasmtime-environ", + "wasmtime-internal-cranelift", + "winch-codegen", +] + +[[package]] +name = "wasmtime-internal-wit-bindgen" +version = "37.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d04509ae5bfb09b509e22ce83168add9b2a92dc7a902d68f31d391c9b23a36d6" +dependencies = [ + "anyhow", + "bitflags", + "heck", + "indexmap", + "wit-parser 0.239.0", +] + [[package]] name = "wasmtime-wasi" -version = "34.0.1" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8392e2256e2b56167a69c4d5ea5505fc3cd164f088ce7009824ee0abd1671dc" +checksum = "78179e5f067030bcc032cb4c149bbe92688e3fc9960b9d45eb06c38b817e6b8b" dependencies = [ "anyhow", "async-trait", @@ -3288,14 +3383,14 @@ dependencies = [ "wasmtime", "wasmtime-wasi-io", "wiggle", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "wasmtime-wasi-io" -version = "34.0.1" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92a8348338594ee5b46c2decdb921a54fabaaed4cb448f6effb97c49d09e44e7" +checksum = "aa0974abaf5ec96584ed75928689a95e79b553182939337fa284779cb6b8a4e3" dependencies = [ "anyhow", "async-trait", @@ -3304,35 +3399,6 @@ dependencies = [ "wasmtime", ] -[[package]] -name = "wasmtime-winch" -version = "34.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d71e002033124221f6633a462c26067280519fdd7527ba2751f585db779cc6" -dependencies = [ - "anyhow", - "cranelift-codegen", - "gimli", - "object", - "target-lexicon", - "wasmparser 0.233.0", - "wasmtime-cranelift", - "wasmtime-environ", - "winch-codegen", -] - -[[package]] -name = "wasmtime-wit-bindgen" -version = "34.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f967f5efaaac7694e6bd0d67542a5a036830860e4adf95684260181e85a5d299" -dependencies = [ - "anyhow", - "heck", - "indexmap", - "wit-parser 0.233.0", -] - [[package]] name = "wast" version = "35.0.2" @@ -3344,24 +3410,24 @@ dependencies = [ [[package]] name = "wast" -version = "235.0.0" +version = "239.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eda4293f626c99021bb3a6fbe4fbbe90c0e31a5ace89b5f620af8925de72e13" +checksum = "9139176fe8a2590e0fb174cdcaf373b224cb93c3dde08e4297c1361d2ba1ea5d" dependencies = [ "bumpalo", "leb128fmt", "memchr", "unicode-width", - "wasm-encoder 0.235.0", + "wasm-encoder 0.239.0", ] [[package]] name = "wat" -version = "1.235.0" +version = "1.239.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e777e0327115793cb96ab220b98f85327ec3d11f34ec9e8d723264522ef206aa" +checksum = "3e1c941927d34709f255558166f8901a2005f8ab4a9650432e9281b7cc6f3b75" dependencies = [ - "wast 235.0.0", + "wast 239.0.0", ] [[package]] @@ -3376,9 +3442,9 @@ dependencies = [ [[package]] name = "wiggle" -version = "34.0.1" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab89466227933ce3d44f2b60eedd2cc46ba3dfd350cf1e938b6422bea18aa422" +checksum = "b35aad501cfca310289a22bdc95c571c15047967b02295a4df56de391b4d90ef" dependencies = [ "anyhow", "async-trait", @@ -3391,9 +3457,9 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "34.0.1" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f650b2d5981c3359778c49eada0796fcc98e9135bc6f7bb894cab2e2bc4fd04d" +checksum = "66a1516334f2191ef393f754a8689f0c2193cf304828725b4708d377c6b0a185" dependencies = [ "anyhow", "heck", @@ -3405,9 +3471,9 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "34.0.1" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4e5f692091b53dbb0835f74cfc03cbd8f384fd3fb493bde6bdc96426e105e84" +checksum = "8c6a0b969afcee961240d696375f29e3c42e6a55e2fcf9a1798f500fe0fdd242" dependencies = [ "proc-macro2", "quote", @@ -3448,22 +3514,22 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "34.0.1" +version = "37.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d2bf456780101aff8950642fdf984f182816d7f555d5375699200242be78762" +checksum = "20581fd07c028fc1c151cd5c15719da62dfd852502c1751df8a93a0637a86791" dependencies = [ "anyhow", "cranelift-assembler-x64", "cranelift-codegen", - "gimli", + "gimli 0.32.2", "regalloc2", "smallvec", "target-lexicon", "thiserror 2.0.12", - "wasmparser 0.233.0", - "wasmtime-cranelift", + "wasmparser 0.239.0", "wasmtime-environ", - "wasmtime-math", + "wasmtime-internal-cranelift", + "wasmtime-internal-math", ] [[package]] @@ -3477,9 +3543,9 @@ dependencies = [ [[package]] name = "windows-link" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] name = "windows-registry" @@ -3489,7 +3555,7 @@ checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ "windows-result", "windows-strings", - "windows-targets 0.53.0", + "windows-targets 0.53.3", ] [[package]] @@ -3528,6 +3594,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.3", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -3546,10 +3621,11 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.0" +version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ + "windows-link", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -3757,9 +3833,9 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.235.0" +version = "0.239.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a57a11109cc553396f89f3a38a158a97d0b1adaec113bd73e0f64d30fb601f" +checksum = "88a866b19dba2c94d706ec58c92a4c62ab63e482b4c935d2a085ac94caecb136" dependencies = [ "anyhow", "bitflags", @@ -3768,10 +3844,10 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "wasm-encoder 0.235.0", - "wasm-metadata 0.235.0", - "wasmparser 0.235.0", - "wit-parser 0.235.0", + "wasm-encoder 0.239.0", + "wasm-metadata 0.239.0", + "wasmparser 0.239.0", + "wit-parser 0.239.0", ] [[package]] @@ -3794,27 +3870,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.233.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22f1cd55247a2e616870b619766e9522df36b7abafbb29bbeb34b7a9da7e9f0" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser 0.233.0", -] - -[[package]] -name = "wit-parser" -version = "0.235.0" +version = "0.239.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a1f95a87d03a33e259af286b857a95911eb46236a0f726cbaec1227b3dfc67a" +checksum = "55c92c939d667b7bf0c6bf2d1f67196529758f99a2a45a3355cc56964fd5315d" dependencies = [ "anyhow", "id-arena", @@ -3825,7 +3883,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.235.0", + "wasmparser 0.239.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index f102d47..faa3cf7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,23 +15,21 @@ tar = "0.4.42" tempfile = "3.13.0" zstd = "0.13.2" componentize-py-shared = { path = "shared" } -wasm-encoder = "0.235.0" -wit-parser = "0.235.0" -wit-component = "0.235.0" -wasmparser = "0.235.0" +wasm-encoder = "0.239.0" +wit-parser = "0.239.0" +wit-component = "0.239.0" +wasmparser = "0.239.0" indexmap = "2.6.0" bincode = "1.3.3" heck = "0.5.0" -# TODO: switch back to upstream once we've updated to Python 3.14, at which -# point the following patch will no longer be needed: -pyo3 = { git = "https://github.com/dicej/pyo3", branch = "v0.25.0-no-wasm32-unwind", features = [ +pyo3 = { version = "0.26.0", features = [ "abi3-py39", "extension-module", ], optional = true } -wasmtime = "34.0.1" -wasmtime-wasi = "34.0.1" +wasmtime = "37.0.1" +wasmtime-wasi = "37.0.1" once_cell = "1.20.2" -component-init-transform = "0.1" +component-init-transform = { version = "0.2", git = "https://github.com/dicej/component-init", rev = "3800ab6e" } async-trait = "0.1.83" futures = "0.3.31" tokio = { version = "1.41.0", features = [ @@ -73,3 +71,4 @@ test-generator = { path = "test-generator" } [workspace] members = ["runtime", "shared", "test-generator"] + diff --git a/build.rs b/build.rs index fb91dc1..cbe7f40 100644 --- a/build.rs +++ b/build.rs @@ -53,7 +53,7 @@ fn stubs_for_clippy(out_dir: &Path) -> Result<()> { let files = [ "libcomponentize_py_runtime.so.zst", - "libpython3.12.so.zst", + "libpython3.14.so.zst", "libc.so.zst", "libwasi-emulated-mman.so.zst", "libwasi-emulated-process-clocks.so.zst", @@ -150,7 +150,7 @@ fn package_all_the_things(out_dir: &Path) -> Result<()> { .arg(&path) .arg("-Wl,--no-whole-archive") .arg(format!("-L{}", cpython_wasi_dir.to_str().unwrap())) - .arg("-lpython3.12"))?; + .arg("-lpython3.14"))?; compress(out_dir, name, out_dir, false)?; } else { @@ -172,16 +172,16 @@ fn package_all_the_things(out_dir: &Path) -> Result<()> { for library in libraries { compress( - &wasi_sdk.join("share/wasi-sysroot/lib/wasm32-wasi"), + &wasi_sdk.join("share/wasi-sysroot/lib/wasm32-wasip2"), library, out_dir, true, )?; } - compress(&cpython_wasi_dir, "libpython3.12.so", out_dir, true)?; + compress(&cpython_wasi_dir, "libpython3.14.so", out_dir, true)?; - let path = repo_dir.join("cpython/builddir/wasi/install/lib/python3.12"); + let path = repo_dir.join("cpython/builddir/wasi/install/lib/python3.14"); if path.exists() { let mut builder = Builder::new(Encoder::new( @@ -267,8 +267,8 @@ fn add(builder: &mut Builder, root: &Path, path: &Path) -> Result<() fn maybe_make_cpython(repo_dir: &Path, wasi_sdk: &Path) -> Result<()> { let cpython_wasi_dir = repo_dir.join("cpython/builddir/wasi"); - if !cpython_wasi_dir.join("libpython3.12.so").exists() { - if !cpython_wasi_dir.join("libpython3.12.a").exists() { + if !cpython_wasi_dir.join("libpython3.14.so").exists() { + if !cpython_wasi_dir.join("libpython3.14.a").exists() { let cpython_native_dir = repo_dir.join("cpython/builddir/build"); if !cpython_native_dir.join(PYTHON_EXECUTABLE).exists() { fs::create_dir_all(&cpython_native_dir)?; @@ -288,13 +288,16 @@ fn maybe_make_cpython(repo_dir: &Path, wasi_sdk: &Path) -> Result<()> { run(Command::new("../../config.guess").current_dir(&cpython_wasi_dir))?; run(Command::new("../../Tools/wasm/wasi-env") - .env("CONFIG_SITE", "../../Tools/wasm/config.site-wasm32-wasi") + .env( + "CONFIG_SITE", + "../../Tools/wasm/wasi/config.site-wasm32-wasi", + ) .env("CFLAGS", "-fPIC") .current_dir(&cpython_wasi_dir) .args([ "../../configure", "-C", - "--host=wasm32-unknown-wasi", + "--host=wasm32-unknown-wasip2", &format!("--build={}", String::from_utf8(config_guess)?), &format!( "--with-build-python={}/../build/{PYTHON_EXECUTABLE}", @@ -307,19 +310,29 @@ fn maybe_make_cpython(repo_dir: &Path, wasi_sdk: &Path) -> Result<()> { run(Command::new("make") .current_dir(&cpython_wasi_dir) - .arg("install"))?; + .args(["build_all", "install"]))?; } run(Command::new(wasi_sdk.join("bin/clang")) + .arg("--target=wasm32-wasip2") .arg("-shared") .arg("-o") - .arg(cpython_wasi_dir.join("libpython3.12.so")) + .arg(cpython_wasi_dir.join("libpython3.14.so")) .arg("-Wl,--whole-archive") - .arg(cpython_wasi_dir.join("libpython3.12.a")) + .arg(cpython_wasi_dir.join("libpython3.14.a")) .arg("-Wl,--no-whole-archive") + .arg(cpython_wasi_dir.join("Modules/_hacl/libHacl_HMAC.a")) + .arg(cpython_wasi_dir.join("Modules/_hacl/libHacl_Hash_BLAKE2.a")) + .arg(cpython_wasi_dir.join("Modules/_hacl/libHacl_Hash_MD5.a")) + .arg(cpython_wasi_dir.join("Modules/_hacl/libHacl_Hash_SHA1.a")) .arg(cpython_wasi_dir.join("Modules/_hacl/libHacl_Hash_SHA2.a")) + .arg(cpython_wasi_dir.join("Modules/_hacl/libHacl_Hash_SHA3.a")) .arg(cpython_wasi_dir.join("Modules/_decimal/libmpdec/libmpdec.a")) - .arg(cpython_wasi_dir.join("Modules/expat/libexpat.a")))?; + .arg(cpython_wasi_dir.join("Modules/expat/libexpat.a")) + .arg("-lwasi-emulated-signal") + .arg("-lwasi-emulated-getpid") + .arg("-lwasi-emulated-process-clocks") + .arg("-ldl"))?; } Ok(()) diff --git a/cpython b/cpython index 118e9d8..267f0e2 160000 --- a/cpython +++ b/cpython @@ -1 +1 @@ -Subproject commit 118e9d8eeabb6345d57295f6cec1616694eacbc2 +Subproject commit 267f0e225186719674344c06ccc3aab68b621ee1 diff --git a/pyo3-config.txt b/pyo3-config.txt index 33d87e7..5764495 100644 --- a/pyo3-config.txt +++ b/pyo3-config.txt @@ -1,8 +1,8 @@ implementation=CPython -version=3.12 +version=3.14 shared=true abi3=false -lib_name=python3.12 +lib_name=python3.14 pointer_width=32 build_flags= suppress_build_script_link_lines=false diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index c99929c..b2920b6 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -9,9 +9,7 @@ crate-type = ["staticlib"] [dependencies] anyhow = "1.0.91" once_cell = "1.20.2" -# TODO: switch back to upstream once we've updated to Python 3.14, at which -# point the following patch will no longer be needed: -pyo3 = { git = "https://github.com/dicej/pyo3", branch = "v0.25.0-no-wasm32-unwind", features = ["abi3-py312", "num-bigint"] } +pyo3 = { version="0.26.0", features = ["abi3-py312", "num-bigint"] } componentize-py-shared = { path = "../shared" } num-bigint = "0.4.6" wit-bindgen = { version = "0.40.0", default-features = false, features = ["macros", "realloc"] } diff --git a/runtime/pyo3-config-clippy.txt b/runtime/pyo3-config-clippy.txt index b0b78fa..df49ac5 100644 --- a/runtime/pyo3-config-clippy.txt +++ b/runtime/pyo3-config-clippy.txt @@ -1,8 +1,8 @@ implementation=CPython -version=3.12 +version=3.14 shared=false abi3=false -lib_name=python3.12 +lib_name=python3.14 pointer_width=64 build_flags= suppress_build_script_link_lines=false diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 68d906a..2d1a721 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -27,7 +27,7 @@ use { PyListMethods, PyMapping, PyMappingMethods, PyModule, PyModuleMethods, PyString, PyTuple, }, - Borrowed, Bound, IntoPyObject, Py, PyAny, PyErr, PyObject, PyResult, Python, + Borrowed, Bound, IntoPyObject, Py, PyAny, PyErr, PyResult, Python, }, std::{ alloc::{self, Layout}, @@ -53,12 +53,12 @@ static STUB_WASI: OnceCell = OnceCell::new(); static EXPORTS: OnceCell> = OnceCell::new(); static TYPES: OnceCell> = OnceCell::new(); static ENVIRON: OnceCell> = OnceCell::new(); -static SOME_CONSTRUCTOR: OnceCell = OnceCell::new(); -static OK_CONSTRUCTOR: OnceCell = OnceCell::new(); -static ERR_CONSTRUCTOR: OnceCell = OnceCell::new(); -static FINALIZE: OnceCell = OnceCell::new(); -static DROP_RESOURCE: OnceCell = OnceCell::new(); -static SEED: OnceCell = OnceCell::new(); +static SOME_CONSTRUCTOR: OnceCell> = OnceCell::new(); +static OK_CONSTRUCTOR: OnceCell> = OnceCell::new(); +static ERR_CONSTRUCTOR: OnceCell> = OnceCell::new(); +static FINALIZE: OnceCell> = OnceCell::new(); +static DROP_RESOURCE: OnceCell> = OnceCell::new(); +static SEED: OnceCell> = OnceCell::new(); static ARGV: OnceCell> = OnceCell::new(); struct Borrow { @@ -73,14 +73,14 @@ const PAYLOAD_FIELD_INDEX: i32 = 1; #[derive(Debug)] struct Case { - constructor: PyObject, + constructor: Py, has_payload: bool, } #[derive(Debug)] enum Type { Record { - constructor: PyObject, + constructor: Py, fields: Vec, }, Variant { @@ -88,11 +88,11 @@ enum Type { cases: Vec, }, Enum { - constructor: PyObject, + constructor: Py, count: usize, }, Flags { - constructor: PyObject, + constructor: Py, u32_count: usize, }, Option, @@ -101,7 +101,7 @@ enum Type { Tuple(usize), Handle, Resource { - constructor: PyObject, + constructor: Py, local: Option, #[allow(dead_code)] remote: Option, @@ -111,13 +111,13 @@ enum Type { #[derive(Debug)] enum Export { Freestanding { - instance: PyObject, + instance: Py, name: Py, }, - Constructor(PyObject), + Constructor(Py), Method(Py), Static { - class: PyObject, + class: Py, name: Py, }, } @@ -199,7 +199,7 @@ fn componentize_py_module(_py: Python<'_>, module: &Bound) -> PyResult fn do_init(app_name: String, symbols: Symbols, stub_wasi: bool) -> Result<(), String> { pyo3::append_to_inittab!(componentize_py_module); - pyo3::prepare_freethreaded_python(); + Python::initialize(); let init = |py: Python| { let app = match py.import(app_name.as_str()) { @@ -393,7 +393,7 @@ fn do_init(app_name: String, symbols: Symbols, stub_wasi: bool) -> Result<(), St Ok::<_, Error>(()) }; - Python::with_gil(|py| init(py).map_err(|e| format!("{e:?}"))) + Python::attach(|py| init(py).map_err(|e| format!("{e:?}"))) } struct MyExports; @@ -439,7 +439,7 @@ pub unsafe extern "C" fn componentize_py_dispatch( params_canon: *const c_void, results_canon: *mut c_void, ) { - Python::with_gil(|py| { + Python::attach(|py| { let mut params_py = vec![ptr::null_mut::(); param_count.try_into().unwrap()]; componentize_py_call_indirect( @@ -1056,7 +1056,7 @@ pub extern "C" fn componentize_py_from_canon_handle<'a>( if local != 0 { if borrow != 0 { - unsafe { PyObject::from_borrowed_ptr(*py, value as usize as _) }.into_bound(*py) + unsafe { Py::::from_borrowed_ptr(*py, value as usize as _) }.into_bound(*py) } else { let Some(LocalResource { rep, .. }) = resource_local else { panic!("expected local resource, found {ty:?}"); @@ -1076,7 +1076,7 @@ pub extern "C" fn componentize_py_from_canon_handle<'a>( } }; - let value = unsafe { PyObject::from_borrowed_ptr(*py, rep as _) }.into_bound(*py); + let value = unsafe { Py::::from_borrowed_ptr(*py, rep as _) }.into_bound(*py); value .delattr(intern!(*py, "__componentize_py_handle")) @@ -1160,7 +1160,7 @@ pub extern "C" fn componentize_py_to_canon_handle( if value.hasattr(name).unwrap() { value.getattr(name).unwrap().extract().unwrap() } else { - let rep = PyObject::from(value.to_owned()).into_ptr(); + let rep = Py::::from(value.to_owned()).into_ptr(); let handle = { let params = [rep as usize]; let mut results = [MaybeUninit::::uninit()]; @@ -1175,7 +1175,7 @@ pub extern "C" fn componentize_py_to_canon_handle( } }; - let instance = unsafe { PyObject::from_borrowed_ptr(*py, rep) }; + let instance = unsafe { Py::::from_borrowed_ptr(*py, rep) }; instance .setattr(*py, name, handle.into_pyobject(*py).unwrap()) diff --git a/src/lib.rs b/src/lib.rs index a5a7645..135dbea 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,11 +22,8 @@ use { Config, Engine, Store, }, wasmtime_wasi::{ - p2::{ - pipe::{MemoryInputPipe, MemoryOutputPipe}, - IoView, WasiCtx, WasiCtxBuilder, WasiView, - }, - DirPerms, FilePerms, + p2::pipe::{MemoryInputPipe, MemoryOutputPipe}, + DirPerms, FilePerms, WasiCtx, WasiCtxBuilder, WasiCtxView, WasiView, }, wit_parser::{Resolve, TypeDefKind, UnresolvedPackageGroup, WorldId, WorldItem, WorldKey}, }; @@ -53,7 +50,7 @@ static DEFAULT_WORLD_MODULE: &str = "wit_world"; wasmtime::component::bindgen!({ path: "wit", world: "init", - async: true + exports: { default: async } }); pub struct Ctx { @@ -68,14 +65,11 @@ pub struct Library { } impl WasiView for Ctx { - fn ctx(&mut self) -> &mut WasiCtx { - &mut self.wasi - } -} - -impl IoView for Ctx { - fn table(&mut self) -> &mut ResourceTable { - &mut self.table + fn ctx(&mut self) -> WasiCtxView<'_> { + WasiCtxView { + ctx: &mut self.wasi, + table: &mut self.table, + } } } @@ -329,7 +323,9 @@ pub async fn componentize( .iter() .any(|&id| app_name == resolve.worlds[id].name.to_snake_case().escape()) { - bail!("App name `{app_name}` conflicts with world name; please rename your application module."); + bail!( + "App name `{app_name}` conflicts with world name; please rename your application module." + ); } let summary = Summary::try_new( @@ -597,7 +593,8 @@ fn parse_wit( } let pkg = last_pkg.unwrap(); // The paths should not be empty - let world = resolve.select_world(pkg, world)?; + let world = resolve.select_world(&[pkg], world)?; + Ok((resolve, world)) } diff --git a/src/prelink.rs b/src/prelink.rs index 5a6df15..0a2f4bf 100644 --- a/src/prelink.rs +++ b/src/prelink.rs @@ -16,7 +16,7 @@ use zstd::Decoder; use crate::{ComponentizePyConfig, ConfigContext, Library, RawComponentizePyConfig}; -static NATIVE_EXTENSION_SUFFIX: &str = ".cpython-312-wasm32-wasi.so"; +static NATIVE_EXTENSION_SUFFIX: &str = ".cpython-314-wasm32-wasi.so"; type ConfigsMatchedWorlds<'a> = IndexMap, Option<&'a str>)>; @@ -60,10 +60,10 @@ pub fn bundle_libraries(library_path: Vec<(&str, Vec)>) -> Result Result<()> { impl HostThing for Ctx { async fn new(&mut self, v: u32) -> Result> { - Ok(self.table().push(ThingU32(v + 8))?) + Ok(self.ctx().table.push(ThingU32(v + 8))?) } async fn foo(&mut self, this: Resource) -> Result { - Ok(self.table().get(&this)?.0 + 1) + Ok(self.ctx().table.get(&this)?.0 + 1) } async fn bar(&mut self, this: Resource, v: u32) -> Result<()> { - self.table().get_mut(&this)?.0 = v + 5; + self.ctx().table.get_mut(&this)?.0 = v + 5; Ok(()) } @@ -212,14 +208,14 @@ fn resource_import_and_export() -> Result<()> { a: Resource, b: Resource, ) -> Result> { - let a = self.table().get(&a)?.0; - let b = self.table().get(&b)?.0; + let a = self.ctx().table.get(&a)?.0; + let b = self.ctx().table.get(&b)?.0; - Ok(self.table().push(ThingU32(a + b + 6))?) + Ok(self.ctx().table.push(ThingU32(a + b + 6))?) } async fn drop(&mut self, this: Resource) -> Result<()> { - Ok(self.table().delete(this).map(|_| ())?) + Ok(self.ctx().table.delete(this).map(|_| ())?) } } @@ -268,17 +264,17 @@ fn resource_borrow_import() -> Result<()> { impl HostThing for Ctx { async fn new(&mut self, v: u32) -> Result> { - Ok(self.table().push(ThingU32(v + 2))?) + Ok(self.ctx().table.push(ThingU32(v + 2))?) } async fn drop(&mut self, this: Resource) -> Result<()> { - Ok(self.table().delete(this).map(|_| ())?) + Ok(self.ctx().table.delete(this).map(|_| ())?) } } impl Host for Ctx { async fn foo(&mut self, this: Resource) -> Result { - Ok(self.table().get(&this)?.0 + 3) + Ok(self.ctx().table.get(&this)?.0 + 3) } } @@ -314,18 +310,18 @@ fn resource_with_lists() -> Result<()> { impl HostThing for Ctx { async fn new(&mut self, mut v: Vec) -> Result> { v.extend(b" HostThing.new"); - Ok(self.table().push(ThingList(v))?) + Ok(self.ctx().table.push(ThingList(v))?) } async fn foo(&mut self, this: Resource) -> Result> { - let mut v = self.table().get(&this)?.0.clone(); + let mut v = self.ctx().table.get(&this)?.0.clone(); v.extend(b" HostThing.foo"); Ok(v) } async fn bar(&mut self, this: Resource, mut v: Vec) -> Result<()> { v.extend(b" HostThing.bar"); - self.table().get_mut(&this)?.0 = v; + self.ctx().table.get_mut(&this)?.0 = v; Ok(()) } @@ -335,7 +331,7 @@ fn resource_with_lists() -> Result<()> { } async fn drop(&mut self, this: Resource) -> Result<()> { - Ok(self.table().delete(this).map(|_| ())?) + Ok(self.ctx().table.delete(this).map(|_| ())?) } } @@ -378,11 +374,11 @@ fn resource_aggregates() -> Result<()> { impl HostThing for Ctx { async fn new(&mut self, v: u32) -> Result> { - Ok(self.table().push(ThingU32(v + 2))?) + Ok(self.ctx().table.push(ThingU32(v + 2))?) } async fn drop(&mut self, this: Resource) -> Result<()> { - Ok(self.table().delete(this).map(|_| ())?) + Ok(self.ctx().table.delete(this).map(|_| ())?) } } @@ -405,28 +401,28 @@ fn resource_aggregates() -> Result<()> { ) -> Result { let V1::Thing(v1) = v1; let V2::Thing(v2) = v2; - Ok(self.table().get(&r1.thing)?.0 - + self.table().get(&r2.thing)?.0 - + self.table().get(&r3.thing1)?.0 - + self.table().get(&r3.thing2)?.0 - + self.table().get(&t1.0)?.0 - + self.table().get(&t1.1.thing)?.0 - + self.table().get(&t2.0)?.0 - + self.table().get(&v1)?.0 - + self.table().get(&v2)?.0 + Ok(self.ctx().table.get(&r1.thing)?.0 + + self.ctx().table.get(&r2.thing)?.0 + + self.ctx().table.get(&r3.thing1)?.0 + + self.ctx().table.get(&r3.thing2)?.0 + + self.ctx().table.get(&t1.0)?.0 + + self.ctx().table.get(&t1.1.thing)?.0 + + self.ctx().table.get(&t2.0)?.0 + + self.ctx().table.get(&v1)?.0 + + self.ctx().table.get(&v2)?.0 + l1.into_iter() - .try_fold(0, |n, v| Ok::<_, Error>(self.table().get(&v)?.0 + n))? + .try_fold(0, |n, v| Ok::<_, Error>(self.ctx().table.get(&v)?.0 + n))? + l2.into_iter() - .try_fold(0, |n, v| Ok::<_, Error>(self.table().get(&v)?.0 + n))? - + o1.map(|v| Ok::<_, Error>(self.table().get(&v)?.0)) + .try_fold(0, |n, v| Ok::<_, Error>(self.ctx().table.get(&v)?.0 + n))? + + o1.map(|v| Ok::<_, Error>(self.ctx().table.get(&v)?.0)) .unwrap_or(Ok(0))? - + o2.map(|v| Ok::<_, Error>(self.table().get(&v)?.0)) + + o2.map(|v| Ok::<_, Error>(self.ctx().table.get(&v)?.0)) .unwrap_or(Ok(0))? + result1 - .map(|v| Ok::<_, Error>(self.table().get(&v)?.0)) + .map(|v| Ok::<_, Error>(self.ctx().table.get(&v)?.0)) .unwrap_or(Ok(0))? + result2 - .map(|v| Ok::<_, Error>(self.table().get(&v)?.0)) + .map(|v| Ok::<_, Error>(self.ctx().table.get(&v)?.0)) .unwrap_or(Ok(0))? + 3) } @@ -482,15 +478,15 @@ fn resource_alias() -> Result<()> { impl HostThing for Ctx { async fn new(&mut self, s: String) -> Result> { - Ok(self.table().push(ThingString(s + " HostThing::new"))?) + Ok(self.ctx().table.push(ThingString(s + " HostThing::new"))?) } async fn get(&mut self, this: Resource) -> Result { - Ok(format!("{} HostThing.get", self.table().get(&this)?.0)) + Ok(format!("{} HostThing.get", self.ctx().table.get(&this)?.0)) } async fn drop(&mut self, this: Resource) -> Result<()> { - Ok(self.table().delete(this).map(|_| ())?) + Ok(self.ctx().table.delete(this).map(|_| ())?) } } @@ -517,7 +513,8 @@ fn resource_alias() -> Result<()> { runtime.block_on(async { let thing1 = store .data_mut() - .table() + .ctx() + .table .push(ThingString("Ni Hao".to_string()))?; fn host_things_to_strings( @@ -526,7 +523,7 @@ fn resource_alias() -> Result<()> { ) -> Result> { let mut strings = Vec::new(); for thing in things { - strings.push(store.data_mut().table().get(&thing)?.0.clone()); + strings.push(store.data_mut().ctx().table.get(&thing)?.0.clone()); } Ok(strings) @@ -599,20 +596,20 @@ fn resource_floats() -> Result<()> { impl HostFloat for Ctx { async fn new(&mut self, v: f64) -> Result> { - Ok(self.table().push(MyFloat(v + 2_f64))?) + Ok(self.ctx().table.push(MyFloat(v + 2_f64))?) } async fn get(&mut self, this: Resource) -> Result { - Ok(self.table().get(&this)?.0 + 4_f64) + Ok(self.ctx().table.get(&this)?.0 + 4_f64) } async fn add(&mut self, a: Resource, b: f64) -> Result> { - let a = self.table().get(&a)?.0; - Ok(self.table().push(MyFloat(a + b + 6_f64))?) + let a = self.ctx().table.get(&a)?.0; + Ok(self.ctx().table.push(MyFloat(a + b + 6_f64))?) } async fn drop(&mut self, this: Resource) -> Result<()> { - Ok(self.table().delete(this).map(|_| ())?) + Ok(self.ctx().table.delete(this).map(|_| ())?) } } @@ -624,15 +621,15 @@ fn resource_floats() -> Result<()> { impl HostFloat for Ctx { async fn new(&mut self, v: f64) -> Result> { - Ok(self.table().push(MyFloat(v + 1_f64))?) + Ok(self.ctx().table.push(MyFloat(v + 1_f64))?) } async fn get(&mut self, this: Resource) -> Result { - Ok(self.table().get(&this)?.0 + 3_f64) + Ok(self.ctx().table.get(&this)?.0 + 3_f64) } async fn drop(&mut self, this: Resource) -> Result<()> { - Ok(self.table().delete(this).map(|_| ())?) + Ok(self.ctx().table.delete(this).map(|_| ())?) } } @@ -641,13 +638,13 @@ fn resource_floats() -> Result<()> { TESTER.test(|world, store, runtime| { runtime.block_on(async { - let float1 = store.data_mut().table().push(MyFloat(42_f64))?; - let float2 = store.data_mut().table().push(MyFloat(55_f64))?; + let float1 = store.data_mut().ctx().table.push(MyFloat(42_f64))?; + let float2 = store.data_mut().ctx().table.push(MyFloat(55_f64))?; let sum = world.call_add(&mut *store, float1, float2).await?; assert_eq!( 42_f64 + 3_f64 + 55_f64 + 3_f64 + 5_f64 + 1_f64, - store.data_mut().table().get(&sum)?.0 + store.data_mut().ctx().table.get(&sum)?.0 ); let instance = world.resource_floats_exports(); @@ -688,15 +685,15 @@ fn resource_borrow_in_record() -> Result<()> { impl HostThing for Ctx { async fn new(&mut self, v: String) -> Result> { - Ok(self.table().push(ThingString(v + " HostThing::new"))?) + Ok(self.ctx().table.push(ThingString(v + " HostThing::new"))?) } async fn get(&mut self, this: Resource) -> Result { - Ok(format!("{} HostThing.get", self.table().get(&this)?.0)) + Ok(format!("{} HostThing.get", self.ctx().table.get(&this)?.0)) } async fn drop(&mut self, this: Resource) -> Result<()> { - Ok(self.table().delete(this).map(|_| ())?) + Ok(self.ctx().table.delete(this).map(|_| ())?) } } @@ -704,8 +701,11 @@ fn resource_borrow_in_record() -> Result<()> { async fn test(&mut self, list: Vec) -> Result>> { list.into_iter() .map(|foo| { - let value = self.table().get(&foo.thing)?.0.clone(); - Ok(self.table().push(ThingString(value + " HostThing::test"))?) + let value = self.ctx().table.get(&foo.thing)?.0.clone(); + Ok(self + .ctx() + .table + .push(ThingString(value + " HostThing::test"))?) }) .collect() } diff --git a/test-generator/src/lib.rs b/test-generator/src/lib.rs index 01621bc..8e1a8b2 100644 --- a/test-generator/src/lib.rs +++ b/test-generator/src/lib.rs @@ -382,7 +382,9 @@ fn equality(a: &str, b: &str, ty: &Type) -> String { } Type::Option(ty) => { let test = equality("a", "b", ty); - format!("(match (&{a}, &{b}) {{ (Some(a), Some(b)) => {test}, (None, None) => true, _ => false }})") + format!( + "(match (&{a}, &{b}) {{ (Some(a), Some(b)) => {test}, (None, None) => true, _ => false }})" + ) } Type::Result { ok, err } => { let ok = ok @@ -393,7 +395,9 @@ fn equality(a: &str, b: &str, ty: &Type) -> String { .as_ref() .map(|ty| equality("a", "b", ty)) .unwrap_or_else(|| "true".to_owned()); - format!("(match (&{a}, &{b}) {{ (Ok(a), Ok(b)) => {ok}, (Err(a), Err(b)) => {err}, _ => false }})") + format!( + "(match (&{a}, &{b}) {{ (Ok(a), Ok(b)) => {ok}, (Err(a), Err(b)) => {err}, _ => false }})" + ) } Type::Tuple(types) => { if types.is_empty() { @@ -479,7 +483,9 @@ fn strategy(ty: &Type, max_list_size: usize) -> String { }) .collect::>() .join(", "); - format!("(0..{length}).prop_flat_map(move |index| match index {{ {cases}, _ => unreachable!() }})") + format!( + "(0..{length}).prop_flat_map(move |index| match index {{ {cases}, _ => unreachable!() }})" + ) } Type::Flags { id, count } => { let name = format!("{PREFIX}::Flags{id}Type"); @@ -502,7 +508,9 @@ fn strategy(ty: &Type, max_list_size: usize) -> String { .map(|index| format!("index => {name}::C{index}")) .collect::>() .join(", "); - format!("(0..{count}).prop_map(move |index| match index {{ {cases}, _ => unreachable!() }})") + format!( + "(0..{count}).prop_map(move |index| match index {{ {cases}, _ => unreachable!() }})" + ) } Type::Option(ty) => { format!("proptest::option::of({})", strategy(ty, max_list_size)) @@ -810,8 +818,8 @@ use {{ wasmtime::component::bindgen!({{ path: {wit_path:?}, world: "echoes-generated-test", - async: true, - trappable_imports: true, + imports: {{ default: async | trappable }}, + exports: {{ default: async }}, }}); pub struct Exports {{ diff --git a/tests/componentize.rs b/tests/componentize.rs index 713501c..fc28b79 100644 --- a/tests/componentize.rs +++ b/tests/componentize.rs @@ -295,7 +295,7 @@ fn venv_path(path: &Path) -> PathBuf { fn install_numpy(path: &Path) -> anyhow::Result<()> { let bytes = reqwest::blocking::get( - "https://github.com/dicej/wasi-wheels/releases/download/v0.0.1/numpy-wasi.tar.gz", + "https://github.com/dicej/wasi-wheels/releases/download/v0.0.2/numpy-wasi.tar.gz", )? .error_for_status()? .bytes()?; From f19cc83783f5bf9d8988d7407cc8d5e44f746b58 Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Thu, 2 Oct 2025 14:46:54 -0600 Subject: [PATCH 2/8] bump version to 0.18.0 Signed-off-by: Joel Dice --- Cargo.lock | 2 +- Cargo.toml | 2 +- examples/cli/README.md | 10 +++++----- examples/http/README.md | 10 +++++----- examples/matrix-math/README.md | 10 +++++----- examples/sandbox/README.md | 6 +++--- examples/tcp/README.md | 10 +++++----- pyproject.toml | 2 +- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b08f022..e1c193a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -486,7 +486,7 @@ dependencies = [ [[package]] name = "componentize-py" -version = "0.17.2" +version = "0.18.0" dependencies = [ "anyhow", "assert_cmd", diff --git a/Cargo.toml b/Cargo.toml index faa3cf7..d30e20d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "componentize-py" -version = "0.17.2" +version = "0.18.0" edition = "2021" exclude = ["cpython"] diff --git a/examples/cli/README.md b/examples/cli/README.md index ca4b995..389e990 100644 --- a/examples/cli/README.md +++ b/examples/cli/README.md @@ -9,16 +9,16 @@ run a Python-based component targetting the [wasi-cli] `command` world. ## Prerequisites -* `Wasmtime` 26.0.0 or later -* `componentize-py` 0.17.2 +* `Wasmtime` 37.0.1 or later +* `componentize-py` 0.18.0 Below, we use [Rust](https://rustup.rs/)'s `cargo` to install `Wasmtime`. If you don't have `cargo`, you can download and install from -https://github.com/bytecodealliance/wasmtime/releases/tag/v26.0.0. +https://github.com/bytecodealliance/wasmtime/releases/tag/v37.0.1. ``` -cargo install --version 26.0.0 wasmtime-cli -pip install componentize-py==0.17.2 +cargo install --version 37.0.1 wasmtime-cli +pip install componentize-py==0.18.0 ``` ## Running the demo diff --git a/examples/http/README.md b/examples/http/README.md index 8083727..cc50efd 100644 --- a/examples/http/README.md +++ b/examples/http/README.md @@ -9,16 +9,16 @@ run a Python-based component targetting the [wasi-http] `proxy` world. ## Prerequisites -* `Wasmtime` 26.0.0 or later -* `componentize-py` 0.17.2 +* `Wasmtime` 37.0.1 or later +* `componentize-py` 0.18.0 Below, we use [Rust](https://rustup.rs/)'s `cargo` to install `Wasmtime`. If you don't have `cargo`, you can download and install from -https://github.com/bytecodealliance/wasmtime/releases/tag/v26.0.0. +https://github.com/bytecodealliance/wasmtime/releases/tag/v37.0.1. ``` -cargo install --version 26.0.0 wasmtime-cli -pip install componentize-py==0.17.2 +cargo install --version 37.0.1 wasmtime-cli +pip install componentize-py==0.18.0 ``` ## Running the demo diff --git a/examples/matrix-math/README.md b/examples/matrix-math/README.md index 5d6c61f..d5b97cf 100644 --- a/examples/matrix-math/README.md +++ b/examples/matrix-math/README.md @@ -10,8 +10,8 @@ within a guest component. ## Prerequisites -* `wasmtime` 26.0.0 or later -* `componentize-py` 0.17.2 +* `wasmtime` 37.0.1 or later +* `componentize-py` 0.18.0 * `NumPy`, built for WASI Note that we use an unofficial build of NumPy since the upstream project does @@ -19,11 +19,11 @@ not yet publish WASI builds. Below, we use [Rust](https://rustup.rs/)'s `cargo` to install `Wasmtime`. If you don't have `cargo`, you can download and install from -https://github.com/bytecodealliance/wasmtime/releases/tag/v26.0.0. +https://github.com/bytecodealliance/wasmtime/releases/tag/v37.0.1. ``` -cargo install --version 26.0.0 wasmtime-cli -pip install componentize-py==0.17.2 +cargo install --version 37.0.1 wasmtime-cli +pip install componentize-py==0.18.0 curl -OL https://github.com/dicej/wasi-wheels/releases/download/v0.0.1/numpy-wasi.tar.gz tar xf numpy-wasi.tar.gz ``` diff --git a/examples/sandbox/README.md b/examples/sandbox/README.md index 4fc57d9..39d6ca0 100644 --- a/examples/sandbox/README.md +++ b/examples/sandbox/README.md @@ -7,11 +7,11 @@ sandboxed Python code snippets from within a Python app. ## Prerequisites -* `wasmtime-py` 25.0.0 or later -* `componentize-py` 0.17.2 +* `wasmtime-py` 37.0.1 or later +* `componentize-py` 0.18.0 ``` -pip install componentize-py==0.17.2 wasmtime==25.0.0 +pip install componentize-py==0.18.0 wasmtime==37.0.1 ``` ## Running the demo diff --git a/examples/tcp/README.md b/examples/tcp/README.md index 2fbe1ef..9e5312d 100644 --- a/examples/tcp/README.md +++ b/examples/tcp/README.md @@ -10,16 +10,16 @@ making an outbound TCP request using `wasi-sockets`. ## Prerequisites -* `Wasmtime` 26.0.0 or later -* `componentize-py` 0.17.2 +* `Wasmtime` 37.0.1 or later +* `componentize-py` 0.18.0 Below, we use [Rust](https://rustup.rs/)'s `cargo` to install `Wasmtime`. If you don't have `cargo`, you can download and install from -https://github.com/bytecodealliance/wasmtime/releases/tag/v26.0.0. +https://github.com/bytecodealliance/wasmtime/releases/tag/v37.0.1. ``` -cargo install --version 26.0.0 wasmtime-cli -pip install componentize-py==0.17.2 +cargo install --version 37.0.1 wasmtime-cli +pip install componentize-py==0.18.0 ``` ## Running the demo diff --git a/pyproject.toml b/pyproject.toml index 1aaff47..076f50e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ features = ["pyo3/extension-module"] [project] name = "componentize-py" -version = "0.17.2" +version = "0.18.0" description = "Tool to package Python applications as WebAssembly components" readme = "README.md" license = { file = "LICENSE" } From b4cad42c2873164382ba99826085bf04a3858886 Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Thu, 2 Oct 2025 14:51:42 -0600 Subject: [PATCH 3/8] update python versions to use in CI Signed-off-by: Joel Dice --- .github/workflows/release.yaml | 2 +- .github/workflows/test.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 6d638db..18b812e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -138,7 +138,7 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: "3.14.0-rc3" + python-version: "3.14.0-rc.3" - name: Install latest Rust nightly toolchain uses: dtolnay/rust-toolchain@nightly diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 6fc67f5..8d276ee 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -28,7 +28,7 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: "3.14.0-rc3" + python-version: "3.14.0-rc.3" - name: Install latest Rust nightly toolchain uses: dtolnay/rust-toolchain@nightly @@ -142,7 +142,7 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: "3.14.0-rc3" + python-version: "3.14.0-rc.3" - name: Test shell: bash From de44e1ea24575cc3baf183e5f8c2235914e71340 Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Thu, 2 Oct 2025 14:59:52 -0600 Subject: [PATCH 4/8] more CI updates Signed-off-by: Joel Dice --- .github/workflows/release.yaml | 22 +++++++++++----------- .github/workflows/test.yaml | 4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 18b812e..4e6e332 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -57,8 +57,8 @@ jobs: run: | cd /tmp curl -LO https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_VERSION}.0-x86_64-linux.tar.gz - tar xf wasi-sdk-${WASI_SDK_VERSION}-x86_64-linux.tar.gz - mv wasi-sdk-${WASI_SDK_VERSION}-x86_64-linux /opt/wasi-sdk + tar xf wasi-sdk-${WASI_SDK_VERSION}.0-x86_64-linux.tar.gz + mv wasi-sdk-${WASI_SDK_VERSION}.0-x86_64-linux /opt/wasi-sdk - name: Cache CPython id: cache-cpython-wasi @@ -84,7 +84,7 @@ jobs: os: "ubuntu-latest", arch: "amd64", maturin_target: "x86_64", - wasiSDK: "linux", + wasiSDK: "x86_64-linux", extension: "", buildArgs: "", target: "", @@ -94,7 +94,7 @@ jobs: os: "ubuntu-latest", arch: "aarch64", maturin_target: "aarch64", - wasiSDK: "linux", + wasiSDK: "x86_64-linux", extension: "", buildArgs: "--target aarch64-unknown-linux-gnu", target: "aarch64-unknown-linux-gnu", @@ -104,7 +104,7 @@ jobs: os: "macos-latest", arch: "amd64", maturin_target: "x86_64", - wasiSDK: "macos", + wasiSDK: "arm64-macos", extension: "", buildArgs: "", target: "", @@ -114,7 +114,7 @@ jobs: os: "macos-latest", arch: "aarch64", maturin_target: "aarch64", - wasiSDK: "macos", + wasiSDK: "arm64-macos", extension: "", buildArgs: "--target aarch64-apple-darwin", target: "aarch64-apple-darwin", @@ -124,7 +124,7 @@ jobs: os: "windows-latest", arch: "amd64", maturin_target: "x64", - wasiSDK: "mingw", + wasiSDK: "x86_64-windows", extension: ".exe", buildArgs: "", target: "", @@ -181,18 +181,18 @@ jobs: shell: bash run: | cd /tmp - curl -LO https://github.com/dicej/wasi-sdk/releases/download/${WASI_SDK_RELEASE}/wasi-sdk-${WASI_SDK_VERSION}-${{ matrix.config.wasiSDK }}.tar.gz - tar xf wasi-sdk-${WASI_SDK_VERSION}-${{ matrix.config.wasiSDK }}.tar.gz + curl -LO https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_VERSION}.0-${{ matrix.config.wasiSDK }}.tar.gz + tar xf wasi-sdk-${WASI_SDK_VERSION}.0-${{ matrix.config.wasiSDK }}.tar.gz - name: Install WASI-SDK if: runner.os != 'Windows' shell: bash - run: sudo mv /tmp/wasi-sdk-${WASI_SDK_VERSION} /opt/wasi-sdk + run: sudo mv /tmp/wasi-sdk-${WASI_SDK_VERSION}.0-${{ matrix.config.wasiSDK }} /opt/wasi-sdk - name: Install WASI-SDK on Windows if: runner.os == 'Windows' shell: bash - run: echo "WASI_SDK_PATH=$(cygpath -m /tmp/wasi-sdk-${WASI_SDK_VERSION})" >> ${GITHUB_ENV} + run: echo "WASI_SDK_PATH=$(cygpath -m /tmp/wasi-sdk-${WASI_SDK_VERSION}.0-${{ matrix.config.wasiSDK }})" >> ${GITHUB_ENV} - name: Restore CPython id: cache-cpython-wasi diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 8d276ee..4a571a5 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -55,8 +55,8 @@ jobs: run: | cd /tmp curl -LO https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_VERSION}.0-x86_64-linux.tar.gz - tar xf wasi-sdk-${WASI_SDK_VERSION}-x86_64-linux.tar.gz - mv wasi-sdk-${WASI_SDK_VERSION}-x86_64-linux /opt/wasi-sdk + tar xf wasi-sdk-${WASI_SDK_VERSION}.0-x86_64-linux.tar.gz + mv wasi-sdk-${WASI_SDK_VERSION}.0-x86_64-linux /opt/wasi-sdk - name: Cache CPython id: cache-cpython-wasi From d4ba83a37397c5f5b39e018908ddd13261f48586 Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Thu, 2 Oct 2025 15:23:08 -0600 Subject: [PATCH 5/8] yet another CI fix Signed-off-by: Joel Dice --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4e6e332..09dfcfd 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -30,7 +30,7 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: "3.12" + python-version: "3.14.0-rc.3" - name: Install latest Rust nightly toolchain uses: dtolnay/rust-toolchain@nightly From 1f5338567c8a6113c7b358b4f149570408eb002b Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Thu, 2 Oct 2025 15:30:34 -0600 Subject: [PATCH 6/8] and yet another CI fix Signed-off-by: Joel Dice --- .github/workflows/test.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 4a571a5..8c818ca 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -77,9 +77,9 @@ jobs: fail-fast: false matrix: config: - - { os: "ubuntu-latest", wasiSDK: "linux" } - - { os: "macos-latest", wasiSDK: "macos" } - - { os: "windows-latest", wasiSDK: "mingw" } + - { os: "ubuntu-latest", wasiSDK: "x86_64-linux" } + - { os: "macos-latest", wasiSDK: "arm64-macos" } + - { os: "windows-latest", wasiSDK: "x86_64-windows" } runs-on: ${{ matrix.config.os }} steps: - name: Checkout @@ -111,18 +111,18 @@ jobs: shell: bash run: | cd /tmp - curl -LO https://github.com/dicej/wasi-sdk/releases/download/${WASI_SDK_RELEASE}/wasi-sdk-${WASI_SDK_VERSION}-${{ matrix.config.wasiSDK }}.tar.gz - tar xf wasi-sdk-${WASI_SDK_VERSION}-${{ matrix.config.wasiSDK }}.tar.gz + curl -LO https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_VERSION}.0-${{ matrix.config.wasiSDK }}.tar.gz + tar xf wasi-sdk-${WASI_SDK_VERSION}.0-${{ matrix.config.wasiSDK }}.tar.gz - name: Install WASI-SDK if: runner.os != 'Windows' shell: bash - run: sudo mv /tmp/wasi-sdk-${WASI_SDK_VERSION} /opt/wasi-sdk + run: sudo mv /tmp/wasi-sdk-${WASI_SDK_VERSION}.0-${{ matrix.config.wasiSDK }} /opt/wasi-sdk - name: Install WASI-SDK on Windows if: runner.os == 'Windows' shell: bash - run: echo "WASI_SDK_PATH=$(cygpath -m /tmp/wasi-sdk-${WASI_SDK_VERSION})" >> ${GITHUB_ENV} + run: echo "WASI_SDK_PATH=$(cygpath -m /tmp/wasi-sdk-${WASI_SDK_VERSION}.0-${{ matrix.config.wasiSDK }})" >> ${GITHUB_ENV} - name: Restore CPython id: cache-cpython-wasi From 1fde8cc3b7119cf4b55b8922dc32f42059957f44 Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Thu, 2 Oct 2025 16:11:10 -0600 Subject: [PATCH 7/8] how about another CI fix? Signed-off-by: Joel Dice --- .github/workflows/release.yaml | 4 ++-- .github/workflows/test.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 09dfcfd..072ce3a 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -65,7 +65,7 @@ jobs: uses: actions/cache@v4 with: path: cpython/builddir/wasi - key: cpython-wasi + key: cpython-wasi-v1 enableCrossOsArchive: true - name: Build @@ -199,7 +199,7 @@ jobs: uses: actions/cache/restore@v4 with: path: cpython/builddir/wasi - key: cpython-wasi + key: cpython-wasi-v1 enableCrossOsArchive: true - name: Build wheels diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 8c818ca..969dbf3 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -63,7 +63,7 @@ jobs: uses: actions/cache@v4 with: path: cpython/builddir/wasi - key: cpython-wasi + key: cpython-wasi-v1 enableCrossOsArchive: true - name: Build @@ -129,7 +129,7 @@ jobs: uses: actions/cache/restore@v4 with: path: cpython/builddir/wasi - key: cpython-wasi + key: cpython-wasi-v1 enableCrossOsArchive: true - name: Lint From 4cdec56507c797cfec6221b83491641928c4b441 Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Thu, 2 Oct 2025 16:36:44 -0600 Subject: [PATCH 8/8] update matrix-math example to point to new numpy build Signed-off-by: Joel Dice --- examples/matrix-math/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/matrix-math/README.md b/examples/matrix-math/README.md index d5b97cf..41da95b 100644 --- a/examples/matrix-math/README.md +++ b/examples/matrix-math/README.md @@ -24,7 +24,7 @@ https://github.com/bytecodealliance/wasmtime/releases/tag/v37.0.1. ``` cargo install --version 37.0.1 wasmtime-cli pip install componentize-py==0.18.0 -curl -OL https://github.com/dicej/wasi-wheels/releases/download/v0.0.1/numpy-wasi.tar.gz +curl -OL https://github.com/dicej/wasi-wheels/releases/download/v0.0.2/numpy-wasi.tar.gz tar xf numpy-wasi.tar.gz ```