diff --git a/.github/workflows/Benchmarks.yml b/.github/workflows/Benchmarks.yml index 885d8543..ecc4875f 100644 --- a/.github/workflows/Benchmarks.yml +++ b/.github/workflows/Benchmarks.yml @@ -45,7 +45,7 @@ jobs: - name: Download Wasm Modules uses: actions/download-artifact@v5 with: - name: guest-modules + name: guest-modules-latest path: ./x64/${{ matrix.config }} ### Benchmarks ### diff --git a/.github/workflows/CreateRelease.yml b/.github/workflows/CreateRelease.yml index 8fcf8e1c..9a941206 100644 --- a/.github/workflows/CreateRelease.yml +++ b/.github/workflows/CreateRelease.yml @@ -54,7 +54,7 @@ jobs: - name: Download Wasm Modules uses: actions/download-artifact@v5 with: - name: guest-modules + name: guest-modules-latest path: ${{ env.PLATFORM }}/${{ env.CONFIG }} - name: Build rust wasm modules run: just build-rust-wasm-examples ${{ env.CONFIG }} diff --git a/.github/workflows/dep_build_wasm_examples.yml b/.github/workflows/dep_build_wasm_examples.yml index 71c24f36..7f83d98e 100644 --- a/.github/workflows/dep_build_wasm_examples.yml +++ b/.github/workflows/dep_build_wasm_examples.yml @@ -21,19 +21,13 @@ permissions: contents: read jobs: - build-wasm-examples: + build-docker-image: if: ${{ inputs.docs_only == 'false' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 with: fetch-depth: 0 - - name: Remove default clang - run: sudo rm /usr/bin/clang - - name: Hyperlight setup workflow - uses: hyperlight-dev/ci-setup-workflow@v1.8.0 - with: - rust-toolchain: "1.89" - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Registry @@ -76,14 +70,46 @@ jobs: tags: ghcr.io/${{ github.repository_owner }}/wasm-clang-builder:latest cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/wasm-clang-builder:buildcache cache-to: ${{ env.CACHE_TO }} - - name: Build Modules + + build-wasm-examples: + needs: build-docker-image + runs-on: ubuntu-latest + strategy: + matrix: + wasmtime_version: + - name: latest + features: "" + - name: lts + features: "wasmtime_lts" + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + - name: Remove default clang + run: sudo rm /usr/bin/clang + - name: Hyperlight setup workflow + uses: hyperlight-dev/ci-setup-workflow@v1.8.0 + with: + rust-toolchain: "1.90" + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Pull wasm-clang-builder + run: | + docker pull ghcr.io/${{ github.repository_owner }}/wasm-clang-builder:latest + - name: Build Modules (wasmtime ${{ matrix.wasmtime_version.name }}) run: | just ensure-tools - just build-wasm-examples release + just build-wasm-examples release ${{ matrix.wasmtime_version.features }} shell: bash - - name: Upload Wasm Modules + - name: Upload Wasm Modules (wasmtime ${{ matrix.wasmtime_version.name }}) uses: actions/upload-artifact@v4 with: - name: guest-modules + name: guest-modules-${{ matrix.wasmtime_version.name }} path: | x64/release/*.aot diff --git a/.github/workflows/dep_rust.yml b/.github/workflows/dep_rust.yml index 757f6961..2484021b 100644 --- a/.github/workflows/dep_rust.yml +++ b/.github/workflows/dep_rust.yml @@ -40,19 +40,35 @@ jobs: hypervisor: [hyperv, mshv3, kvm] # hyperv is windows, mshv and kvm are linux cpu: [amd, intel] config: [debug, release] + wasmtime: [latest, lts] + exclude: + # Latest testing: skip Windows, Intel, and debug builds to reduce CI load + - wasmtime: latest + hypervisor: hyperv + - wasmtime: latest + cpu: intel + - wasmtime: latest + config: debug runs-on: ${{ fromJson( format('["self-hosted", "{0}", "X64", "1ES.Pool=hld-{1}-{2}"]', matrix.hypervisor == 'hyperv' && 'Windows' || 'Linux', matrix.hypervisor == 'hyperv' && 'win2025' || matrix.hypervisor == 'mshv3' && 'azlinux3-mshv' || matrix.hypervisor, - matrix.cpu)) }} + matrix.cpu)) }} + env: + # Features to pass to cargo. + # On windows hyperv do not pass any features. + # On Windows LTS builds, only add wasmtime_lts. + # On Linux, always pass the hypervisor feature (kvm/mshv3). + # On Linux LTS builds, also add wasmtime_lts. + FEATURES: ${{ matrix.hypervisor != 'hyperv' && format('{0}{1}', matrix.hypervisor, matrix.wasmtime == 'lts' && ',wasmtime_lts' || '') || (matrix.wasmtime == 'lts' && 'wasmtime_lts' || '') }} steps: - uses: actions/checkout@v5 - name: Hyperlight setup uses: hyperlight-dev/ci-setup-workflow@v1.8.0 with: - rust-toolchain: "1.89" + rust-toolchain: "1.90" - name: Add Nightly Rust run: | @@ -70,7 +86,7 @@ jobs: - name: Download Wasm Modules uses: actions/download-artifact@v5 with: - name: guest-modules + name: guest-modules-${{ matrix.wasmtime }} path: ./x64/${{ matrix.config }} - name: Build Rust component model examples @@ -79,7 +95,7 @@ jobs: # because the component model example depends on the wasm component built here just ensure-tools just compile-wit - just build-rust-component-examples ${{ matrix.config }} + just build-rust-component-examples ${{ matrix.config }} ${{ matrix.wasmtime == 'lts' && 'wasmtime_lts' || '' }} - name: Fmt run: just fmt-check @@ -88,15 +104,15 @@ jobs: run: just clippy ${{ matrix.config }} - name: Build - run: just build ${{ matrix.config }} + run: just build ${{ matrix.config }} ${{ env.FEATURES }} working-directory: ./src/hyperlight_wasm - name: Build Rust Wasm examples - run: just build-rust-wasm-examples ${{ matrix.config }} + run: just build-rust-wasm-examples ${{ matrix.config }} ${{ matrix.wasmtime == 'lts' && 'wasmtime_lts' || '' }} working-directory: ./src/hyperlight_wasm - name: Test - run: just test ${{ matrix.config }} + run: just test ${{ matrix.config }} ${{ env.FEATURES }} working-directory: ./src/hyperlight_wasm - name: Install github-cli (Windows) @@ -114,7 +130,7 @@ jobs: shell: pwsh - name: Test Examples - run: just examples-ci ${{ matrix.config }} + run: just examples-ci ${{ matrix.config }} ${{ env.FEATURES }} working-directory: ./src/hyperlight_wasm env: # required for gh cli when downloading @@ -124,7 +140,7 @@ jobs: - name: Download benchmarks from "latest" run: | - just bench-download ${{ runner.os }} ${{ matrix.hypervisor }} ${{ matrix.cpu }} dev-latest + just bench-download ${{ runner.os }} ${{ matrix.hypervisor }} ${{ matrix.cpu }} dev-latest ${{ matrix.wasmtime }} env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} continue-on-error: true @@ -133,6 +149,7 @@ jobs: - name: Run benchmarks run: | - just bench-ci dev ${{ matrix.config }} + just bench-ci dev ${{ matrix.config }} ${{ env.FEATURES }} working-directory: ./src/hyperlight_wasm if: ${{ matrix.config == 'release' }} + diff --git a/Cargo.lock b/Cargo.lock index 8fddd12a..1699b70a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,7 +20,7 @@ dependencies = [ "cfg-if", "once_cell", "version_check", - "zerocopy 0.8.27", + "zerocopy", ] [[package]] @@ -94,9 +94,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" @@ -118,22 +118,22 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.10" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -185,9 +185,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-lc-rs" -version = "1.14.1" +version = "1.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879b6c89592deb404ba4dc0ae6b58ffd1795c78991cbb5b8bc441c48a070440d" +checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc" dependencies = [ "aws-lc-sys", "zeroize", @@ -195,11 +195,10 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.32.3" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107a4e9d9cab9963e04e84bb8dee0e25f2a987f9a8bad5ed054abd439caa8f8c" +checksum = "1fa7e52a4c5c547c741610a2c6f123f3881e409b714cd27e6798ef020c514f0a" dependencies = [ - "bindgen", "cc", "cmake", "dunce", @@ -212,26 +211,6 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "bindgen" -version = "0.72.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" -dependencies = [ - "bitflags 2.11.0", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -298,19 +277,13 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.0" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" dependencies = [ "allocator-api2", ] -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - [[package]] name = "bytes" version = "1.11.1" @@ -319,9 +292,9 @@ checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "camino" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" dependencies = [ "serde_core", ] @@ -347,11 +320,12 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122ec45a44b270afd1402f351b782c676b173e3c3fb28d86ff7ebfb4d86a4ee4" +checksum = "87a0c0e6148f11f01f32650a2ea02d532b2ad4e81d8bd41e6e565b5adc5e6082" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -364,7 +338,7 @@ dependencies = [ "serde", "serde-untagged", "serde-value", - "thiserror 2.0.18", + "thiserror", "toml 0.9.12+spec-1.1.0", "unicode-xid", "url", @@ -381,7 +355,7 @@ dependencies = [ "semver", "serde", "serde_json", - "thiserror 2.0.18", + "thiserror", ] [[package]] @@ -402,15 +376,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - [[package]] name = "cfg-if" version = "1.0.4" @@ -474,17 +439,6 @@ dependencies = [ "half", ] -[[package]] -name = "clang-sys" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" -dependencies = [ - "glob", - "libc", - "libloading", -] - [[package]] name = "clap" version = "4.6.0" @@ -521,15 +475,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "cmake" -version = "0.1.54" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" dependencies = [ "cc", ] @@ -540,24 +494,23 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "thiserror 2.0.18", + "thiserror", ] [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "console" -version = "0.16.1" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b430743a6eb14e9764d4260d4c0d8123087d504eeb9c48f2b2a5e810dd369df4" +checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87" dependencies = [ "encode_unicode", "libc", - "once_cell", "unicode-width", "windows-sys 0.61.2", ] @@ -628,7 +581,16 @@ version = "0.123.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba33ddc4e157cb1abe9da6c821e8824f99e56d057c2c22536850e0141f281d61" dependencies = [ - "cranelift-assembler-x64-meta", + "cranelift-assembler-x64-meta 0.123.6", +] + +[[package]] +name = "cranelift-assembler-x64" +version = "0.128.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50a04121a197fde2fe896f8e7cac9812fc41ed6ee9c63e1906090f9f497845f6" +dependencies = [ + "cranelift-assembler-x64-meta 0.128.4", ] [[package]] @@ -637,7 +599,16 @@ version = "0.123.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69b23dd6ea360e6fb28a3f3b40b7f126509668f58076a4729b2cfd656f26a0ad" dependencies = [ - "cranelift-srcgen", + "cranelift-srcgen 0.123.6", +] + +[[package]] +name = "cranelift-assembler-x64-meta" +version = "0.128.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a09e699a94f477303820fb2167024f091543d6240783a2d3b01a3f21c42bc744" +dependencies = [ + "cranelift-srcgen 0.128.4", ] [[package]] @@ -646,7 +617,16 @@ version = "0.123.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d81afcee8fe27ee2536987df3fadcb2e161af4edb7dbe3ef36838d0ce74382" dependencies = [ - "cranelift-entity", + "cranelift-entity 0.123.6", +] + +[[package]] +name = "cranelift-bforest" +version = "0.128.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f07732c662a9755529e332d86f8c5842171f6e98ba4d5976a178043dad838654" +dependencies = [ + "cranelift-entity 0.128.4", ] [[package]] @@ -659,6 +639,16 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "cranelift-bitset" +version = "0.128.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18391da761cf362a06def7a7cf11474d79e55801dd34c2e9ba105b33dc0aef88" +dependencies = [ + "serde", + "serde_derive", +] + [[package]] name = "cranelift-codegen" version = "0.123.6" @@ -666,24 +656,51 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0230a6ac0660bfe31eb244cbb43dcd4f2b3c1c4e0addc3e0348c6053ea60272e" dependencies = [ "bumpalo", - "cranelift-assembler-x64", - "cranelift-bforest", - "cranelift-bitset", - "cranelift-codegen-meta", - "cranelift-codegen-shared", - "cranelift-control", - "cranelift-entity", - "cranelift-isle", + "cranelift-assembler-x64 0.123.6", + "cranelift-bforest 0.123.6", + "cranelift-bitset 0.123.6", + "cranelift-codegen-meta 0.123.6", + "cranelift-codegen-shared 0.123.6", + "cranelift-control 0.123.6", + "cranelift-entity 0.123.6", + "cranelift-isle 0.123.6", + "gimli", + "hashbrown 0.15.5", + "log", + "pulley-interpreter 36.0.6", + "regalloc2 0.12.2", + "rustc-hash", + "serde", + "smallvec", + "target-lexicon", + "wasmtime-internal-math 36.0.6", +] + +[[package]] +name = "cranelift-codegen" +version = "0.128.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b3a09b3042c69810d255aef59ddc3b3e4c0644d1d90ecfd6e3837798cc88a3c" +dependencies = [ + "bumpalo", + "cranelift-assembler-x64 0.128.4", + "cranelift-bforest 0.128.4", + "cranelift-bitset 0.128.4", + "cranelift-codegen-meta 0.128.4", + "cranelift-codegen-shared 0.128.4", + "cranelift-control 0.128.4", + "cranelift-entity 0.128.4", + "cranelift-isle 0.128.4", "gimli", "hashbrown 0.15.5", "log", - "pulley-interpreter", - "regalloc2", + "pulley-interpreter 41.0.4", + "regalloc2 0.13.5", "rustc-hash", "serde", "smallvec", "target-lexicon", - "wasmtime-internal-math", + "wasmtime-internal-math 41.0.4", ] [[package]] @@ -692,11 +709,24 @@ version = "0.123.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d6817fdc15cb8f236fc9d8e610767d3a03327ceca4abff7a14d8e2154c405e" dependencies = [ - "cranelift-assembler-x64-meta", - "cranelift-codegen-shared", - "cranelift-srcgen", + "cranelift-assembler-x64-meta 0.123.6", + "cranelift-codegen-shared 0.123.6", + "cranelift-srcgen 0.123.6", + "heck", + "pulley-interpreter 36.0.6", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.128.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75817926ec812241889208d1b190cadb7fedded4592a4bb01b8524babb9e4849" +dependencies = [ + "cranelift-assembler-x64-meta 0.128.4", + "cranelift-codegen-shared 0.128.4", + "cranelift-srcgen 0.128.4", "heck", - "pulley-interpreter", + "pulley-interpreter 41.0.4", ] [[package]] @@ -705,6 +735,12 @@ version = "0.123.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0403796328e9e2e7df2b80191cdbb473fd9ea3889eb45ef5632d0fef168ea032" +[[package]] +name = "cranelift-codegen-shared" +version = "0.128.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859158f87a59476476eda3884d883c32e08a143cf3d315095533b362a3250a63" + [[package]] name = "cranelift-control" version = "0.123.6" @@ -714,13 +750,33 @@ dependencies = [ "arbitrary", ] +[[package]] +name = "cranelift-control" +version = "0.128.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b65a9aec442d715cbf54d14548b8f395476c09cef7abe03e104a378291ab88" +dependencies = [ + "arbitrary", +] + [[package]] name = "cranelift-entity" version = "0.123.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43f5e7391167605d505fe66a337e1a69583b3f34b63d359ffa5a430313c555e8" dependencies = [ - "cranelift-bitset", + "cranelift-bitset 0.123.6", + "serde", + "serde_derive", +] + +[[package]] +name = "cranelift-entity" +version = "0.128.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8334c99a7e86060c24028732efd23bac84585770dcb752329c69f135d64f2fc1" +dependencies = [ + "cranelift-bitset 0.128.4", "serde", "serde_derive", ] @@ -731,7 +787,19 @@ version = "0.123.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea5440792eb2b5ba0a0976df371b9f94031bd853ae56f389de610bca7128a7cb" dependencies = [ - "cranelift-codegen", + "cranelift-codegen 0.123.6", + "log", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-frontend" +version = "0.128.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43ac6c095aa5b3e845d7ca3461e67e2b65249eb5401477a5ff9100369b745111" +dependencies = [ + "cranelift-codegen 0.128.4", "log", "smallvec", "target-lexicon", @@ -743,13 +811,30 @@ version = "0.123.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e5c05fab6fce38d729088f3fa1060eaa1ad54eefd473588887205ed2ab2f79e" +[[package]] +name = "cranelift-isle" +version = "0.128.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d3d992870ed4f0f2e82e2175275cb3a123a46e9660c6558c46417b822c91fa" + [[package]] name = "cranelift-native" version = "0.123.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c9a0607a028edf5ba5bba7e7cf5ca1b7f0a030e3ae84dcd401e8b9b05192280" dependencies = [ - "cranelift-codegen", + "cranelift-codegen 0.123.6", + "libc", + "target-lexicon", +] + +[[package]] +name = "cranelift-native" +version = "0.128.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee32e36beaf80f309edb535274cfe0349e1c5cf5799ba2d9f42e828285c6b52e" +dependencies = [ + "cranelift-codegen 0.128.4", "libc", "target-lexicon", ] @@ -760,6 +845,12 @@ version = "0.123.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0f2da72eb2472aaac6cfba4e785af42b1f2d82f5155f30c9c30e8cce351e17" +[[package]] +name = "cranelift-srcgen" +version = "0.128.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "903adeaf4938e60209a97b53a2e4326cd2d356aab9764a1934630204bae381c9" + [[package]] name = "crc32fast" version = "1.5.0" @@ -855,9 +946,9 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", "typenum", @@ -919,16 +1010,16 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elfcore" -version = "2.0.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824386967a6a98e7f99d5c15d40cd1534b0ebfc4193a7109689dcf5322e8d744" +checksum = "0fdaa3d1c27119b3394513f4596894a40cd53cb4acec7fce636a9ca0c4abb171" dependencies = [ "libc", "nix", "smallvec", - "thiserror 1.0.69", + "thiserror", "tracing", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -974,12 +1065,6 @@ dependencies = [ "regex", ] -[[package]] -name = "env_home" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe" - [[package]] name = "env_logger" version = "0.11.9" @@ -1001,9 +1086,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.8" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1035,14 +1120,13 @@ checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "filetime" -version = "0.2.26" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" +checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" dependencies = [ "cfg-if", "libc", "libredox", - "windows-sys 0.60.2", ] [[package]] @@ -1096,9 +1180,9 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -1106,15 +1190,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", @@ -1123,15 +1207,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", @@ -1140,21 +1224,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-core", "futures-io", @@ -1163,29 +1247,28 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] [[package]] name = "gdbstub" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf845b08f7c2ef3b5ad19f80779d43ae20d278652b91bb80adda65baf2d8ed6" +checksum = "5bafc7e33650ab9f05dcc16325f05d56b8d10393114e31a19a353b86fa60cfe7" dependencies = [ "bitflags 2.11.0", "cfg-if", "log", "managed", "num-traits", - "paste", + "pastey", ] [[package]] name = "gdbstub_arch" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22dde0e1b68787036ccedd0b1ff6f953527a0e807e571fbe898975203027278f" +checksum = "6c02bfe7bd65f42bcda751456869dfa1eb2bd1c36e309b9ec27f4888d41cf258" dependencies = [ "gdbstub", "num-traits", @@ -1193,9 +1276,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.9" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -1203,9 +1286,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "js-sys", @@ -1223,20 +1306,20 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 6.0.0", "rand_core 0.10.0", "wasip2", "wasip3", @@ -1298,9 +1381,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" dependencies = [ "atomic-waker", "bytes", @@ -1323,7 +1406,7 @@ checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", - "zerocopy 0.8.27", + "zerocopy", ] [[package]] @@ -1361,12 +1444,11 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "http" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -1461,14 +1543,13 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.17" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ "base64", "bytes", "futures-channel", - "futures-core", "futures-util", "http", "http-body", @@ -1493,7 +1574,7 @@ dependencies = [ "flatbuffers", "log", "spin", - "thiserror 2.0.18", + "thiserror", "tracing", "tracing-core", ] @@ -1623,7 +1704,7 @@ dependencies = [ "serde_json", "sha256", "termcolor", - "thiserror 2.0.18", + "thiserror", "tracing", "tracing-core", "tracing-log", @@ -1689,7 +1770,8 @@ dependencies = [ "cargo_metadata", "clap", "object 0.38.1", - "wasmtime", + "wasmtime 36.0.6", + "wasmtime 41.0.4", ] [[package]] @@ -1718,14 +1800,15 @@ dependencies = [ "reqwest", "spin", "tracing", - "wasmtime", + "wasmtime 36.0.6", + "wasmtime 41.0.4", ] [[package]] name = "iana-time-zone" -version = "0.1.64" +version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1793,9 +1876,9 @@ checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" dependencies = [ "icu_collections", "icu_locale_core", @@ -1807,9 +1890,9 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" [[package]] name = "icu_provider" @@ -1828,9 +1911,9 @@ dependencies = [ [[package]] name = "id-arena" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" [[package]] name = "idna" @@ -1867,15 +1950,15 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" dependencies = [ "memchr", "serde", @@ -1907,28 +1990,28 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.15" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" dependencies = [ "jiff-static", "log", "portable-atomic", "portable-atomic-util", - "serde", + "serde_core", ] [[package]] name = "jiff-static" -version = "0.2.15" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" dependencies = [ "proc-macro2", "quote", @@ -1947,9 +2030,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.82" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" dependencies = [ "once_cell", "wasm-bindgen", @@ -2016,38 +2099,29 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "libloading" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" -dependencies = [ - "cfg-if", - "windows-link", -] - [[package]] name = "libm" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.10" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a" dependencies = [ "bitflags 2.11.0", "libc", - "redox_syscall", + "plain", + "redox_syscall 0.7.3", ] [[package]] name = "libz-sys" -version = "1.1.22" +version = "1.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" +checksum = "d52f4c29e2a68ac30c9087e1b772dc9f44a2b66ed44edf2266cf2be9b03dafc1" dependencies = [ "cc", "libc", @@ -2077,9 +2151,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" @@ -2134,9 +2208,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "memfd" @@ -2174,7 +2248,7 @@ dependencies = [ "metrics-util", "quanta", "rustls", - "thiserror 2.0.18", + "thiserror", "tokio", "tracing", ] @@ -2199,17 +2273,11 @@ dependencies = [ "sketches-ddsketch", ] -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "mio" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", "wasi", @@ -2218,25 +2286,25 @@ dependencies = [ [[package]] name = "mshv-bindings" -version = "0.6.4" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c68716836323af95932a84cee9cd6020ab8ab328b8f825d0a715f4df1ead901" +checksum = "3cbfd4f32d185152003679339751839da77c17e18fa8882a11051a236f841426" dependencies = [ "libc", "num_enum", "vmm-sys-util", - "zerocopy 0.8.27", + "zerocopy", ] [[package]] name = "mshv-ioctls" -version = "0.6.4" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "748f59f22dccd910080a6315fc692bd04bd8c94ae2fc346957ec34b7d985eaa0" +checksum = "f035616abe1e4cbc026a1a8094ff8d3900f5063fe6608309098bc745926fdfd8" dependencies = [ "libc", "mshv-bindings", - "thiserror 2.0.18", + "thiserror", "vmm-sys-util", ] @@ -2251,25 +2319,16 @@ dependencies = [ [[package]] name = "nix" -version = "0.26.4" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +checksum = "5d6d0705320c1e6ba1d912b5e37cf18071b6c2e9b7fa8215a1e8a7651966f5d3" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.11.0", "cfg-if", + "cfg_aliases", "libc", ] -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -2290,9 +2349,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -2300,9 +2359,9 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro2", "quote", @@ -2350,9 +2409,9 @@ checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[package]] name = "openssl-probe" -version = "0.1.6" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" [[package]] name = "opentelemetry" @@ -2364,7 +2423,7 @@ dependencies = [ "futures-sink", "js-sys", "pin-project-lite", - "thiserror 2.0.18", + "thiserror", "tracing", ] @@ -2394,7 +2453,7 @@ dependencies = [ "opentelemetry_sdk", "prost", "reqwest", - "thiserror 2.0.18", + "thiserror", "tokio", "tonic", ] @@ -2430,7 +2489,7 @@ dependencies = [ "opentelemetry", "percent-encoding", "rand 0.9.2", - "thiserror 2.0.18", + "thiserror", "tokio", "tokio-stream", ] @@ -2496,16 +2555,16 @@ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.18", "smallvec", "windows-link", ] [[package]] -name = "paste" -version = "1.0.15" +name = "pastey" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +checksum = "b867cad97c0791bbd3aaa6472142568c6c9e8f71937e98379f584cfb0cf35bec" [[package]] name = "percent-encoding" @@ -2515,18 +2574,18 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", @@ -2535,9 +2594,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pin-utils" @@ -2587,15 +2646,15 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "portable-atomic-util" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" dependencies = [ "portable-atomic", ] @@ -2627,7 +2686,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.27", + "zerocopy", ] [[package]] @@ -2660,9 +2719,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.14.1" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7231bd9b3d3d33c86b58adbac74b5ec0ad9f496b19d22801d773636feaa95f3d" +checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" dependencies = [ "bytes", "prost-derive", @@ -2670,9 +2729,9 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.14.1" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", "itertools 0.14.0", @@ -2687,10 +2746,22 @@ version = "36.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "499d922aa0f9faac8d92351416664f1b7acd914008a90fce2f0516d31efddf67" dependencies = [ - "cranelift-bitset", + "cranelift-bitset 0.123.6", + "log", + "pulley-macros 36.0.6", + "wasmtime-internal-math 36.0.6", +] + +[[package]] +name = "pulley-interpreter" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9812652c1feb63cf39f8780cecac154a32b22b3665806c733cd4072547233a4" +dependencies = [ + "cranelift-bitset 0.128.4", "log", - "pulley-macros", - "wasmtime-internal-math", + "pulley-macros 41.0.4", + "wasmtime-internal-math 41.0.4", ] [[package]] @@ -2704,6 +2775,17 @@ dependencies = [ "syn", ] +[[package]] +name = "pulley-macros" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56000349b6896e3d44286eb9c330891237f40b27fd43c1ccc84547d0b463cb40" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "quanta" version = "0.12.6" @@ -2733,7 +2815,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 2.0.18", + "thiserror", "tokio", "tracing", "web-time", @@ -2754,7 +2836,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.18", + "thiserror", "tinyvec", "tracing", "web-time", @@ -2789,6 +2871,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "radix_trie" version = "0.2.1" @@ -2806,7 +2894,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -2816,7 +2904,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8" dependencies = [ "chacha20", - "getrandom 0.4.1", + "getrandom 0.4.2", "rand_core 0.10.0", ] @@ -2827,14 +2915,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ "getrandom 0.3.4", ] @@ -2851,7 +2939,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" dependencies = [ - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -2892,15 +2980,24 @@ dependencies = [ "bitflags 2.11.0", ] +[[package]] +name = "redox_syscall" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce70a74e890531977d37e532c34d45e9055d2409ed08ddba14529471ed0be16" +dependencies = [ + "bitflags 2.11.0", +] + [[package]] name = "redox_users" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", "libredox", - "thiserror 2.0.18", + "thiserror", ] [[package]] @@ -2917,11 +3014,25 @@ dependencies = [ "smallvec", ] +[[package]] +name = "regalloc2" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08effbc1fa53aaebff69521a5c05640523fab037b34a4a2c109506bc938246fa" +dependencies = [ + "allocator-api2", + "bumpalo", + "hashbrown 0.15.5", + "log", + "rustc-hash", + "smallvec", +] + [[package]] name = "regex" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -2931,9 +3042,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -2942,9 +3053,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "reqwest" @@ -2994,7 +3105,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.16", + "getrandom 0.2.17", "libc", "untrusted", "windows-sys 0.52.0", @@ -3013,9 +3124,9 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "8.9.0" +version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fa2c8c9e8711e10f9c4fd2d64317ef13feaab820a4c51541f1a8c8e2e851ab2" +checksum = "da0902e4c7c8e997159ab384e6d0fc91c221375f6894346ae107f47dd0f3ccaa" dependencies = [ "proc-macro2", "quote", @@ -3027,9 +3138,9 @@ dependencies = [ [[package]] name = "rust-embed-utils" -version = "8.9.0" +version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b161f275cb337fe0a44d924a5f4df0ed69c2c39519858f931ce61c779d3475" +checksum = "5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1" dependencies = [ "globset", "sha2", @@ -3053,9 +3164,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ "bitflags 2.11.0", "errno", @@ -3066,9 +3177,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.34" +version = "0.23.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" dependencies = [ "aws-lc-rs", "once_cell", @@ -3081,9 +3192,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -3093,9 +3204,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.13.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" dependencies = [ "web-time", "zeroize", @@ -3103,9 +3214,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.8" +version = "0.103.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" +checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef" dependencies = [ "aws-lc-rs", "ring", @@ -3121,9 +3232,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.20" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "same-file" @@ -3136,9 +3247,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" dependencies = [ "windows-sys 0.61.2", ] @@ -3171,9 +3282,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.5.1" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ "bitflags 2.11.0", "core-foundation", @@ -3184,9 +3295,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.15.0" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ "core-foundation-sys", "libc", @@ -3323,9 +3434,9 @@ dependencies = [ [[package]] name = "shellexpand" -version = "3.1.1" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1fdf65dd6331831494dd616b30351c38e96e45921a27745cf98490458b90bb" +checksum = "32824fab5e16e6c4d86dc1ba84489390419a39f97699852b66480bb87d297ed8" dependencies = [ "dirs", ] @@ -3338,24 +3449,25 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.6" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] [[package]] name = "sketches-ddsketch" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e9a774a6c28142ac54bb25d25562e6bcf957493a184f15ad4eebccb23e410a" +checksum = "0c6f73aeb92d671e0cc4dca167e59b2deb6387c375391bc99ee743f326994a2b" [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" @@ -3368,12 +3480,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3447,9 +3559,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c" +checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" [[package]] name = "termcolor" @@ -3460,33 +3572,13 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - [[package]] name = "thiserror" version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.18", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "thiserror-impl", ] [[package]] @@ -3531,9 +3623,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -3563,9 +3655,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" dependencies = [ "proc-macro2", "quote", @@ -3584,9 +3676,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", @@ -3595,9 +3687,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.16" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", @@ -3629,7 +3721,7 @@ dependencies = [ "toml_datetime 1.0.1+spec-1.1.0", "toml_parser", "toml_writer", - "winnow 1.0.0", + "winnow", ] [[package]] @@ -3652,14 +3744,14 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.25.4+spec-1.1.0" +version = "0.25.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2" +checksum = "8ca1a40644a28bce036923f6a431df0b34236949d111cc07cb6dca830c9ef2e1" dependencies = [ "indexmap", "toml_datetime 1.0.1+spec-1.1.0", "toml_parser", - "winnow 0.7.13", + "winnow", ] [[package]] @@ -3668,7 +3760,7 @@ version = "1.0.10+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7df25b4befd31c4816df190124375d5a20c6b6921e2cad937316de3fccd63420" dependencies = [ - "winnow 1.0.0", + "winnow", ] [[package]] @@ -3679,9 +3771,9 @@ checksum = "f17aaa1c6e3dc22b1da4b6bba97d066e354c7945cac2f7852d4e4e7ca7a6b56d" [[package]] name = "tonic" -version = "0.14.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" +checksum = "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec" dependencies = [ "async-trait", "base64", @@ -3705,9 +3797,9 @@ dependencies = [ [[package]] name = "tonic-prost" -version = "0.14.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" +checksum = "a55376a0bbaa4975a3f10d009ad763d8f4108f067c7c2e74f3001fb49778d309" dependencies = [ "bytes", "prost", @@ -3716,9 +3808,9 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", @@ -3805,7 +3897,7 @@ dependencies = [ "chrono", "serde", "smallvec", - "thiserror 2.0.18", + "thiserror", "tracing", "tracing-subscriber", "uuid", @@ -3876,9 +3968,9 @@ checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-width" @@ -3900,9 +3992,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", @@ -3928,7 +4020,7 @@ version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" dependencies = [ - "getrandom 0.4.1", + "getrandom 0.4.2", "js-sys", "serde_core", "wasm-bindgen", @@ -3989,11 +4081,11 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.1+wasi-0.2.4" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" dependencies = [ - "wit-bindgen 0.46.0", + "wit-bindgen", ] [[package]] @@ -4002,14 +4094,14 @@ version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.105" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" dependencies = [ "cfg-if", "once_cell", @@ -4020,11 +4112,12 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.55" +version = "0.4.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" +checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" dependencies = [ "cfg-if", + "futures-util", "js-sys", "once_cell", "wasm-bindgen", @@ -4033,9 +4126,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.105" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4043,9 +4136,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.105" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" dependencies = [ "bumpalo", "proc-macro2", @@ -4056,9 +4149,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.105" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" dependencies = [ "unicode-ident", ] @@ -4073,6 +4166,16 @@ dependencies = [ "wasmparser 0.236.1", ] +[[package]] +name = "wasm-encoder" +version = "0.243.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c55db9c896d70bd9fa535ce83cd4e1f2ec3726b0edd2142079f594fc3be1cb35" +dependencies = [ + "leb128fmt", + "wasmparser 0.243.0", +] + [[package]] name = "wasm-encoder" version = "0.244.0" @@ -4108,6 +4211,19 @@ dependencies = [ "serde", ] +[[package]] +name = "wasmparser" +version = "0.243.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6d8db401b0528ec316dfbe579e6ab4152d61739cfe076706d2009127970159d" +dependencies = [ + "bitflags 2.11.0", + "hashbrown 0.15.5", + "indexmap", + "semver", + "serde", +] + [[package]] name = "wasmparser" version = "0.244.0" @@ -4144,6 +4260,17 @@ dependencies = [ "wasmparser 0.236.1", ] +[[package]] +name = "wasmprinter" +version = "0.243.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2b6035559e146114c29a909a3232928ee488d6507a1504d8934e8607b36d7b" +dependencies = [ + "anyhow", + "termcolor", + "wasmparser 0.243.0", +] + [[package]] name = "wasmtime" version = "36.0.6" @@ -4166,7 +4293,7 @@ dependencies = [ "object 0.37.3", "once_cell", "postcard", - "pulley-interpreter", + "pulley-interpreter 36.0.6", "rustix", "semver", "serde", @@ -4174,22 +4301,68 @@ dependencies = [ "smallvec", "target-lexicon", "wasmparser 0.236.1", - "wasmtime-environ", + "wasmtime-environ 36.0.6", "wasmtime-internal-asm-macros", - "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", + "wasmtime-internal-component-macro 36.0.6", + "wasmtime-internal-component-util 36.0.6", + "wasmtime-internal-cranelift 36.0.6", + "wasmtime-internal-fiber 36.0.6", + "wasmtime-internal-jit-debug 36.0.6", + "wasmtime-internal-jit-icache-coherence 36.0.6", + "wasmtime-internal-math 36.0.6", + "wasmtime-internal-slab 36.0.6", + "wasmtime-internal-unwinder 36.0.6", + "wasmtime-internal-versioned-export-macros 36.0.6", + "wasmtime-internal-winch 36.0.6", "windows-sys 0.60.2", ] +[[package]] +name = "wasmtime" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2a83182bf04af87571b4c642300479501684f26bab5597f68f68cded5b098fd" +dependencies = [ + "addr2line", + "anyhow", + "async-trait", + "bitflags 2.11.0", + "bumpalo", + "cc", + "cfg-if", + "encoding_rs", + "hashbrown 0.15.5", + "indexmap", + "libc", + "log", + "mach2", + "memfd", + "object 0.37.3", + "once_cell", + "postcard", + "pulley-interpreter 41.0.4", + "rustix", + "semver", + "serde", + "serde_derive", + "smallvec", + "target-lexicon", + "wasmparser 0.243.0", + "wasmtime-environ 41.0.4", + "wasmtime-internal-component-macro 41.0.4", + "wasmtime-internal-component-util 41.0.4", + "wasmtime-internal-cranelift 41.0.4", + "wasmtime-internal-fiber 41.0.4", + "wasmtime-internal-jit-debug 41.0.4", + "wasmtime-internal-jit-icache-coherence 41.0.4", + "wasmtime-internal-math 41.0.4", + "wasmtime-internal-slab 41.0.4", + "wasmtime-internal-unwinder 41.0.4", + "wasmtime-internal-versioned-export-macros 41.0.4", + "wasmtime-internal-winch 41.0.4", + "windows-sys 0.61.2", +] + [[package]] name = "wasmtime-environ" version = "36.0.6" @@ -4197,8 +4370,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "733682a327755c77153ac7455b1ba8f2db4d9946c1738f8002fe1fbda1d52e83" dependencies = [ "anyhow", - "cranelift-bitset", - "cranelift-entity", + "cranelift-bitset 0.123.6", + "cranelift-entity 0.123.6", "gimli", "indexmap", "log", @@ -4211,8 +4384,33 @@ dependencies = [ "target-lexicon", "wasm-encoder 0.236.1", "wasmparser 0.236.1", - "wasmprinter", - "wasmtime-internal-component-util", + "wasmprinter 0.236.1", + "wasmtime-internal-component-util 36.0.6", +] + +[[package]] +name = "wasmtime-environ" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb201c41aa23a3642365cfb2e4a183573d85127a3c9d528f56b9997c984541ab" +dependencies = [ + "anyhow", + "cranelift-bitset 0.128.4", + "cranelift-entity 0.128.4", + "gimli", + "indexmap", + "log", + "object 0.37.3", + "postcard", + "semver", + "serde", + "serde_derive", + "smallvec", + "target-lexicon", + "wasm-encoder 0.243.0", + "wasmparser 0.243.0", + "wasmprinter 0.243.0", + "wasmtime-internal-component-util 41.0.4", ] [[package]] @@ -4234,17 +4432,38 @@ dependencies = [ "proc-macro2", "quote", "syn", - "wasmtime-internal-component-util", - "wasmtime-internal-wit-bindgen", + "wasmtime-internal-component-util 36.0.6", + "wasmtime-internal-wit-bindgen 36.0.6", "wit-parser 0.236.1", ] +[[package]] +name = "wasmtime-internal-component-macro" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c924400db7b6ca996fef1b23beb0f41d5c809836b1ec60fc25b4057e2d25d9b" +dependencies = [ + "anyhow", + "proc-macro2", + "quote", + "syn", + "wasmtime-internal-component-util 41.0.4", + "wasmtime-internal-wit-bindgen 41.0.4", + "wit-parser 0.243.0", +] + [[package]] name = "wasmtime-internal-component-util" version = "36.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe1e5735b3c8251510d2a55311562772d6c6fca9438a3d0329eb6e38af4957d6" +[[package]] +name = "wasmtime-internal-component-util" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d3f65daf4bf3d74ca2fbbe20af0589c42e2b398a073486451425d94fd4afef4" + [[package]] name = "wasmtime-internal-cranelift" version = "36.0.6" @@ -4253,23 +4472,50 @@ checksum = "e89bb9ef571288e2be6b8a3c4763acc56c348dcd517500b1679d3ffad9e4a757" dependencies = [ "anyhow", "cfg-if", - "cranelift-codegen", - "cranelift-control", - "cranelift-entity", - "cranelift-frontend", - "cranelift-native", + "cranelift-codegen 0.123.6", + "cranelift-control 0.123.6", + "cranelift-entity 0.123.6", + "cranelift-frontend 0.123.6", + "cranelift-native 0.123.6", "gimli", "itertools 0.14.0", "log", "object 0.37.3", - "pulley-interpreter", + "pulley-interpreter 36.0.6", "smallvec", "target-lexicon", - "thiserror 2.0.18", + "thiserror", "wasmparser 0.236.1", - "wasmtime-environ", - "wasmtime-internal-math", - "wasmtime-internal-versioned-export-macros", + "wasmtime-environ 36.0.6", + "wasmtime-internal-math 36.0.6", + "wasmtime-internal-versioned-export-macros 36.0.6", +] + +[[package]] +name = "wasmtime-internal-cranelift" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633e889cdae76829738db0114ab3b02fce51ea4a1cd9675a67a65fce92e8b418" +dependencies = [ + "cfg-if", + "cranelift-codegen 0.128.4", + "cranelift-control 0.128.4", + "cranelift-entity 0.128.4", + "cranelift-frontend 0.128.4", + "cranelift-native 0.128.4", + "gimli", + "itertools 0.14.0", + "log", + "object 0.37.3", + "pulley-interpreter 41.0.4", + "smallvec", + "target-lexicon", + "thiserror", + "wasmparser 0.243.0", + "wasmtime-environ 41.0.4", + "wasmtime-internal-math 41.0.4", + "wasmtime-internal-unwinder 41.0.4", + "wasmtime-internal-versioned-export-macros 41.0.4", ] [[package]] @@ -4284,10 +4530,25 @@ dependencies = [ "libc", "rustix", "wasmtime-internal-asm-macros", - "wasmtime-internal-versioned-export-macros", + "wasmtime-internal-versioned-export-macros 36.0.6", "windows-sys 0.60.2", ] +[[package]] +name = "wasmtime-internal-fiber" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb126adc5d0c72695cfb77260b357f1b81705a0f8fa30b3944e7c2219c17341" +dependencies = [ + "cc", + "cfg-if", + "libc", + "rustix", + "wasmtime-environ 41.0.4", + "wasmtime-internal-versioned-export-macros 41.0.4", + "windows-sys 0.61.2", +] + [[package]] name = "wasmtime-internal-jit-debug" version = "36.0.6" @@ -4295,7 +4556,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c803a9fec05c3d7fa03474d4595079d546e77a3c71c1d09b21f74152e2165c17" dependencies = [ "cc", - "wasmtime-internal-versioned-export-macros", + "wasmtime-internal-versioned-export-macros 36.0.6", +] + +[[package]] +name = "wasmtime-internal-jit-debug" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e66ff7f90a8002187691ff6237ffd09f954a0ebb9de8b2ff7f5c62632134120" +dependencies = [ + "cc", + "wasmtime-internal-versioned-export-macros 41.0.4", ] [[package]] @@ -4310,6 +4581,18 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "wasmtime-internal-jit-icache-coherence" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b96df23179ae16d54fb3a420f84ffe4383ec9dd06fad3e5bc782f85f66e8e08" +dependencies = [ + "anyhow", + "cfg-if", + "libc", + "windows-sys 0.61.2", +] + [[package]] name = "wasmtime-internal-math" version = "36.0.6" @@ -4319,12 +4602,27 @@ dependencies = [ "libm", ] +[[package]] +name = "wasmtime-internal-math" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86d1380926682b44c383e9a67f47e7a95e60c6d3fa8c072294dab2c7de6168a0" +dependencies = [ + "libm", +] + [[package]] name = "wasmtime-internal-slab" version = "36.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbff220b88cdb990d34a20b13344e5da2e7b99959a5b1666106bec94b58d6364" +[[package]] +name = "wasmtime-internal-slab" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b63cbea1c0192c7feb7c0dfb35f47166988a3742f29f46b585ef57246c65764" + [[package]] name = "wasmtime-internal-unwinder" version = "36.0.6" @@ -4333,11 +4631,24 @@ checksum = "13e1ad30e88988b20c0d1c56ea4b4fbc01a8c614653cbf12ca50c0dcc695e2f7" dependencies = [ "anyhow", "cfg-if", - "cranelift-codegen", + "cranelift-codegen 0.123.6", "log", "object 0.37.3", ] +[[package]] +name = "wasmtime-internal-unwinder" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c392c7e5fb891a7416e3c34cfbd148849271e8c58744fda875dde4bec4d6a" +dependencies = [ + "cfg-if", + "cranelift-codegen 0.128.4", + "log", + "object 0.37.3", + "wasmtime-environ 41.0.4", +] + [[package]] name = "wasmtime-internal-versioned-export-macros" version = "36.0.6" @@ -4349,6 +4660,17 @@ dependencies = [ "syn", ] +[[package]] +name = "wasmtime-internal-versioned-export-macros" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f8b9796a3f0451a7b702508b303d654de640271ac80287176de222f187a237" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "wasmtime-internal-winch" version = "36.0.6" @@ -4356,14 +4678,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5cc96a84c5700171aeecf96fa9a9ab234f333f5afb295dabf3f8a812b70fe832" dependencies = [ "anyhow", - "cranelift-codegen", + "cranelift-codegen 0.123.6", "gimli", "object 0.37.3", "target-lexicon", "wasmparser 0.236.1", - "wasmtime-environ", - "wasmtime-internal-cranelift", - "winch-codegen", + "wasmtime-environ 36.0.6", + "wasmtime-internal-cranelift 36.0.6", + "winch-codegen 36.0.6", +] + +[[package]] +name = "wasmtime-internal-winch" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0063e61f1d0b2c20e9cfc58361a6513d074a23c80b417aac3033724f51648a0" +dependencies = [ + "cranelift-codegen 0.128.4", + "gimli", + "log", + "object 0.37.3", + "target-lexicon", + "wasmparser 0.243.0", + "wasmtime-environ 41.0.4", + "wasmtime-internal-cranelift 41.0.4", + "winch-codegen 41.0.4", ] [[package]] @@ -4379,11 +4718,24 @@ dependencies = [ "wit-parser 0.236.1", ] +[[package]] +name = "wasmtime-internal-wit-bindgen" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "587699ca7cae16b4a234ffcc834f37e75675933d533809919b52975f5609e2ef" +dependencies = [ + "anyhow", + "bitflags 2.11.0", + "heck", + "indexmap", + "wit-parser 0.243.0", +] + [[package]] name = "web-sys" -version = "0.3.82" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" +checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" dependencies = [ "js-sys", "wasm-bindgen", @@ -4410,14 +4762,12 @@ dependencies = [ [[package]] name = "which" -version = "8.0.0" +version = "8.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d" +checksum = "81995fafaaaf6ae47a7d0cc83c67caf92aeb7e5331650ae6ff856f7c0c60c459" dependencies = [ - "env_home", + "libc", "regex", - "rustix", - "winsafe", ] [[package]] @@ -4458,17 +4808,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06c0ec09e8eb5e850e432da6271ed8c4a9d459a9db3850c38e98a3ee9d015e79" dependencies = [ "anyhow", - "cranelift-assembler-x64", - "cranelift-codegen", + "cranelift-assembler-x64 0.123.6", + "cranelift-codegen 0.123.6", "gimli", - "regalloc2", + "regalloc2 0.12.2", "smallvec", "target-lexicon", - "thiserror 2.0.18", + "thiserror", "wasmparser 0.236.1", - "wasmtime-environ", - "wasmtime-internal-cranelift", - "wasmtime-internal-math", + "wasmtime-environ 36.0.6", + "wasmtime-internal-cranelift 36.0.6", + "wasmtime-internal-math 36.0.6", +] + +[[package]] +name = "winch-codegen" +version = "41.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c55de3ac5b8bd71e5f6c87a9e511dd3ceb194bdb58183c6a7bf21cd8c0e46fbc" +dependencies = [ + "anyhow", + "cranelift-assembler-x64 0.128.4", + "cranelift-codegen 0.128.4", + "gimli", + "regalloc2 0.13.5", + "smallvec", + "target-lexicon", + "thiserror", + "wasmparser 0.243.0", + "wasmtime-environ 41.0.4", + "wasmtime-internal-cranelift 41.0.4", + "wasmtime-internal-math 41.0.4", ] [[package]] @@ -4748,31 +5118,13 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.13" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8" dependencies = [ "memchr", ] -[[package]] -name = "winnow" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8" - -[[package]] -name = "winsafe" -version = "0.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" - -[[package]] -name = "wit-bindgen" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" - [[package]] name = "wit-bindgen" version = "0.51.0" @@ -4861,6 +5213,24 @@ dependencies = [ "wasmparser 0.236.1", ] +[[package]] +name = "wit-parser" +version = "0.243.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df983a8608e513d8997f435bb74207bf0933d0e49ca97aa9d8a6157164b9b7fc" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser 0.243.0", +] + [[package]] name = "wit-parser" version = "0.244.0" @@ -4920,39 +5290,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive 0.7.35", -] - -[[package]] -name = "zerocopy" -version = "0.8.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" -dependencies = [ - "zerocopy-derive 0.8.27", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87" dependencies = [ - "proc-macro2", - "quote", - "syn", + "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.27" +version = "0.8.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89" dependencies = [ "proc-macro2", "quote", diff --git a/Justfile b/Justfile index 95c0b6bd..4c51756b 100644 --- a/Justfile +++ b/Justfile @@ -42,28 +42,28 @@ build-wasm-examples target=default-target features="": (compile-wit) build-rust-wasm-examples target=default-target features="": (mkdir-redist target) rustup target add wasm32-unknown-unknown cd ./src/tests/rust_guests/rust_wasm_samples && cargo build --target wasm32-unknown-unknown --profile={{ if target == "debug" {"dev"} else { target } }} - cargo run {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--features " + features } }} -p hyperlight-wasm-aot compile {{ if features =~ "gdb" {"--debug"} else {""} }} ./src/tests/rust_guests/rust_wasm_samples/target/wasm32-unknown-unknown/{{ target }}/rust_wasm_samples.wasm ./x64/{{ target }}/rust_wasm_samples.aot + cargo run -p hyperlight-wasm-aot compile {{ if features =~ "gdb" {"--debug"} else {""} }} {{ if features =~ "wasmtime_lts" {"--lts"} else {""} }} ./src/tests/rust_guests/rust_wasm_samples/target/wasm32-unknown-unknown/{{ target }}/rust_wasm_samples.wasm ./x64/{{ target }}/rust_wasm_samples.aot build-pulley-rust-wasm-examples target=default-target features="": (mkdir-redist target) rustup target add wasm32-unknown-unknown cd ./src/tests/rust_guests/rust_wasm_samples && cargo build --target wasm32-unknown-unknown --profile={{ if target == "debug" {"dev"} else { target } }} - cargo run {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--features " + features } }} -p hyperlight-wasm-aot compile --pulley {{ if features =~ "gdb" {"--debug"} else {""} }} ./src/tests/rust_guests/rust_wasm_samples/target/wasm32-unknown-unknown/{{ target }}/rust_wasm_samples.wasm ./x64/{{ target }}/rust_wasm_samples.aot + cargo run -p hyperlight-wasm-aot compile --pulley {{ if features =~ "gdb" {"--debug"} else {""} }} {{ if features =~ "wasmtime_lts" {"--lts"} else {""} }} ./src/tests/rust_guests/rust_wasm_samples/target/wasm32-unknown-unknown/{{ target }}/rust_wasm_samples.wasm ./x64/{{ target }}/rust_wasm_samples.aot build-rust-component-examples target=default-target features="": (compile-wit) # use cargo component so we don't get all the wasi imports https://github.com/bytecodealliance/cargo-component?tab=readme-ov-file#relationship-with-wasm32-wasip2 # we also explicitly target wasm32-unknown-unknown since cargo component might try to pull in wasi imports https://github.com/bytecodealliance/cargo-component/issues/290 rustup target add wasm32-unknown-unknown cd ./src/tests/rust_guests/component_sample && cargo component build --target wasm32-unknown-unknown --profile={{ if target == "debug" {"dev"} else { target } }} - cargo run {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--features " + features } }} -p hyperlight-wasm-aot compile {{ if features =~ "gdb" {"--debug"} else {""} }} --component ./src/tests/rust_guests/component_sample/target/wasm32-unknown-unknown/{{ target }}/component_sample.wasm ./x64/{{ target }}/component_sample.aot + cargo run -p hyperlight-wasm-aot compile {{ if features =~ "gdb" {"--debug"} else {""} }} {{ if features =~ "wasmtime_lts" {"--lts"} else {""} }} --component ./src/tests/rust_guests/component_sample/target/wasm32-unknown-unknown/{{ target }}/component_sample.wasm ./x64/{{ target }}/component_sample.aot cd ./src/tests/rust_guests/greeter_sample && cargo component build --target wasm32-unknown-unknown --profile={{ if target == "debug" {"dev"} else { target } }} - cargo run {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--features " + features } }} -p hyperlight-wasm-aot compile {{ if features =~ "gdb" {"--debug"} else {""} }} --component ./src/tests/rust_guests/greeter_sample/target/wasm32-unknown-unknown/{{ target }}/greeter_sample.wasm ./x64/{{ target }}/greeter_sample.aot + cargo run -p hyperlight-wasm-aot compile {{ if features =~ "gdb" {"--debug"} else {""} }} {{ if features =~ "wasmtime_lts" {"--lts"} else {""} }} --component ./src/tests/rust_guests/greeter_sample/target/wasm32-unknown-unknown/{{ target }}/greeter_sample.wasm ./x64/{{ target }}/greeter_sample.aot build-pulley-rust-component-examples target=default-target features="": (compile-wit) # use cargo component so we don't get all the wasi imports https://github.com/bytecodealliance/cargo-component?tab=readme-ov-file#relationship-with-wasm32-wasip2 # we also explicitly target wasm32-unknown-unknown since cargo component might try to pull in wasi imports https://github.com/bytecodealliance/cargo-component/issues/290 rustup target add wasm32-unknown-unknown cd ./src/tests/rust_guests/component_sample && cargo component build --target wasm32-unknown-unknown --profile={{ if target == "debug" {"dev"} else { target } }} - cargo run {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--features " + features } }} -p hyperlight-wasm-aot compile --pulley {{ if features =~ "gdb" {"--debug"} else {""} }} --component ./src/tests/rust_guests/component_sample/target/wasm32-unknown-unknown/{{ target }}/component_sample.wasm ./x64/{{ target }}/component_sample.aot + cargo run -p hyperlight-wasm-aot compile --pulley {{ if features =~ "gdb" {"--debug"} else {""} }} {{ if features =~ "wasmtime_lts" {"--lts"} else {""} }} --component ./src/tests/rust_guests/component_sample/target/wasm32-unknown-unknown/{{ target }}/component_sample.wasm ./x64/{{ target }}/component_sample.aot check target=default-target: cargo check --profile={{ if target == "debug" {"dev"} else { target } }} @@ -95,7 +95,9 @@ clippy target=default-target: (check target) cd src/tests/rust_guests/rust_wasm_samples && cargo clippy --profile={{ if target == "debug" {"dev"} else { target } }} --all-targets --all-features -- -D warnings cd src/tests/rust_guests/component_sample && cargo clippy --profile={{ if target == "debug" {"dev"} else { target } }} --all-targets --all-features -- -D warnings cd src/tests/rust_guests/greeter_sample && cargo clippy --profile={{ if target == "debug" {"dev"} else { target } }} --all-targets --all-features -- -D warnings - cd src/hyperlight_wasm_runtime && cargo hyperlight clippy --profile={{ if target == "debug" {"dev"} else { target } }} --all-targets --all-features -- -D warnings + # hyperlight_wasm_runtime has mutually exclusive wasmtime features, so we run clippy for each separately with all other features + cd src/hyperlight_wasm_runtime && cargo hyperlight clippy --profile={{ if target == "debug" {"dev"} else { target } }} --all-targets --features wasmtime_latest,gdb,trace_guest,pulley -- -D warnings + cd src/hyperlight_wasm_runtime && cargo hyperlight clippy --profile={{ if target == "debug" {"dev"} else { target } }} --all-targets --no-default-features --features wasmtime_lts,gdb,trace_guest -- -D warnings cd src/hyperlight_wasm_macro && cargo clippy --profile={{ if target == "debug" {"dev"} else { target } }} --all-targets --all-features -- -D warnings # TESTING @@ -103,11 +105,12 @@ clippy target=default-target: (check target) # There may be tests that we really want to ignore so we cant just use --ignored and run then we have to # specify the test name of the ignored tests that we want to run # Additionally, we have to run the tests with the function_call_metrics feature enabled separately +# We exclude hyperlight-wasm-aot because it has both wasmtime versions as dependencies and no tests so we don't need to build both versions for testing test target=default-target features="": - cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} - cargo test test_metrics {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} -- --ignored + cargo test --workspace --exclude hyperlight-wasm-aot {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} + cargo test --workspace --exclude hyperlight-wasm-aot test_metrics {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} -- --ignored -examples-modules target=default-target features="": (build-rust-wasm-examples target) +examples-modules target=default-target features="": (build-wasm-examples target features) (build-rust-wasm-examples target features) cargo run {{ if features =="" {''} else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} --example helloworld cargo run {{ if features =="" {''} else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} --example hostfuncs cargo run {{ if features =="" {''} else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} --example rust_wasm_examples @@ -117,13 +120,13 @@ examples-modules target=default-target features="": (build-rust-wasm-examples ta examples-ci target=default-target features="": (examples-modules target features) (examples-components target features) (examples-pulley target features) -examples-components target=default-target features="": (build-rust-component-examples target) +examples-components target=default-target features="": (build-rust-component-examples target features) {{ wit-world }} cargo run {{ if features =="" {''} else {"--no-default-features -F kvm -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} --example component_example {{ wit-world-c }} cargo run {{ if features =="" {''} else {"--no-default-features -F kvm -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} --example c-component {{ wit-world }} {{ wit-world-name-greeter }} cargo run {{ if features =="" {''} else {"--no-default-features -F kvm -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} --example component_greeter_example # Test a component and a module compiled with pulley -examples-pulley target=default-target features="": (build-pulley-rust-component-examples target) (build-pulley-rust-wasm-examples target) +examples-pulley target=default-target features="": (build-pulley-rust-component-examples target features) (build-pulley-rust-wasm-examples target features) {{ wit-world }} cargo run {{ if features =="" {'-F pulley'} else {"--no-default-features -F kvm,pulley -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} --example component_example cargo run {{ if features =="" {'-F pulley'} else {"--no-default-features -F pulley -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} --example rust_wasm_examples diff --git a/rust-toolchain.toml b/rust-toolchain.toml index c683fec6..65847a48 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "1.89" +channel = "1.90" # Target used for guest binaries. This is an additive list of targets in addition to host platform. # Will install the target if not already installed when building guest binaries. targets = ["x86_64-unknown-none"] \ No newline at end of file diff --git a/src/hyperlight_wasm/Cargo.toml b/src/hyperlight_wasm/Cargo.toml index 81798dc6..65f88bab 100644 --- a/src/hyperlight_wasm/Cargo.toml +++ b/src/hyperlight_wasm/Cargo.toml @@ -119,6 +119,8 @@ kvm = ["hyperlight-host/kvm"] mshv3 = ["hyperlight-host/mshv3"] pulley = [] trace_guest = ["hyperlight-host/trace_guest"] +# Use wasmtime LTS version instead of latest in wasm_runtime +wasmtime_lts = [] [[bench]] name = "benchmarks" diff --git a/src/hyperlight_wasm/build.rs b/src/hyperlight_wasm/build.rs index cdf01cec..137d6a08 100644 --- a/src/hyperlight_wasm/build.rs +++ b/src/hyperlight_wasm/build.rs @@ -143,6 +143,15 @@ fn build_wasm_runtime() -> PathBuf { .arg("--locked") .env_clear_cargo(); + // Use wasmtime LTS version + // This removes wasmtime_latest feature and adds wasmtime_lts + if std::env::var("CARGO_FEATURE_WASMTIME_LTS").is_ok() { + cmd = cmd + .arg("--no-default-features") + .arg("--features") + .arg("wasmtime_lts"); + } + // Add --features gdb if the gdb feature is enabled for this build script if std::env::var("CARGO_FEATURE_GDB").is_ok() { cmd = cmd.arg("--features").arg("gdb"); diff --git a/src/hyperlight_wasm/examples/guest-debugging/main.rs b/src/hyperlight_wasm/examples/guest-debugging/main.rs index c27a88d9..1affaebc 100644 --- a/src/hyperlight_wasm/examples/guest-debugging/main.rs +++ b/src/hyperlight_wasm/examples/guest-debugging/main.rs @@ -24,7 +24,7 @@ limitations under the License. //! # for C modules //! just build-wasm-examples debug gdb //! # for Rust modules -//! just build-rust-wasm-samples debug gdb +//! just build-rust-wasm-examples debug gdb //! ``` //! //! # Running the Example diff --git a/src/hyperlight_wasm/scripts/build-wasm-examples.sh b/src/hyperlight_wasm/scripts/build-wasm-examples.sh index 433a041c..40a74e52 100755 --- a/src/hyperlight_wasm/scripts/build-wasm-examples.sh +++ b/src/hyperlight_wasm/scripts/build-wasm-examples.sh @@ -13,12 +13,10 @@ OUTPUT_DIR=$(realpath $OUTPUT_DIR) # Set stripping flags based on whether features are enabled if [ -n "$FEATURES" ]; then - AOT_FEATURES="--features $FEATURES" STRIP_FLAGS="" DEBUG_FLAGS="-g" OPT_FLAGS="-O0" else - AOT_FEATURES="" STRIP_FLAGS="-Wl,--strip-all" DEBUG_FLAGS="" OPT_FLAGS="-O3" @@ -31,6 +29,13 @@ else AOT_DEBUG_FLAGS="" fi +# Set AOT LTS flag if wasmtime_lts feature is enabled +if [[ "$FEATURES" == *"wasmtime_lts"* ]]; then + AOT_LTS_FLAGS="--lts" +else + AOT_LTS_FLAGS="" +fi + if [ -f "/.dockerenv" ] || grep -q docker /proc/1/cgroup; then # running in a container so use the installed wasi-sdk as the devcontainer has this installed for FILENAME in $(find . -name '*.c' -not -path './components/*') @@ -39,7 +44,7 @@ if [ -f "/.dockerenv" ] || grep -q docker /proc/1/cgroup; then # Build the wasm file with wasi-libc for wasmtime /opt/wasi-sdk/bin/clang ${DEBUG_FLAGS} -flto -ffunction-sections -mexec-model=reactor ${OPT_FLAGS} -z stack-size=4096 -Wl,--initial-memory=65536 -Wl,--export=__data_end -Wl,--export=__heap_base,--export=malloc,--export=free,--export=__wasm_call_ctors ${STRIP_FLAGS} -Wl,--no-entry -Wl,--allow-undefined -Wl,--gc-sections -o ${OUTPUT_DIR}/${FILENAME%.*}-wasi-libc.wasm ${FILENAME} - cargo run ${AOT_FEATURES} -p hyperlight-wasm-aot compile ${AOT_DEBUG_FLAGS} ${OUTPUT_DIR}/${FILENAME%.*}-wasi-libc.wasm ${OUTPUT_DIR}/${FILENAME%.*}.aot + cargo run -p hyperlight-wasm-aot compile ${AOT_DEBUG_FLAGS} ${AOT_LTS_FLAGS} ${OUTPUT_DIR}/${FILENAME%.*}-wasi-libc.wasm ${OUTPUT_DIR}/${FILENAME%.*}.aot done for WIT_FILE in ${PWD}/components/*.wit; do @@ -60,7 +65,7 @@ if [ -f "/.dockerenv" ] || grep -q docker /proc/1/cgroup; then ${PWD}/components/bindings/${COMPONENT_NAME}_component_type.o # Build AOT for Wasmtime - cargo run ${AOT_FEATURES} -p hyperlight-wasm-aot compile ${AOT_DEBUG_FLAGS} --component ${OUTPUT_DIR}/${COMPONENT_NAME}-p2.wasm ${OUTPUT_DIR}/${COMPONENT_NAME}.aot + cargo run -p hyperlight-wasm-aot compile ${AOT_DEBUG_FLAGS} ${AOT_LTS_FLAGS} --component ${OUTPUT_DIR}/${COMPONENT_NAME}-p2.wasm ${OUTPUT_DIR}/${COMPONENT_NAME}.aot done else @@ -89,7 +94,7 @@ else -v "${OUTPUT_DIR_REAL}:${OUTPUT_DIR_REAL}" \ wasm-clang-builder:latest /bin/bash -c "/opt/wasi-sdk/bin/clang ${DEBUG_FLAGS} -flto -ffunction-sections -mexec-model=reactor ${OPT_FLAGS} -z stack-size=4096 -Wl,--initial-memory=65536 -Wl,--export=__data_end -Wl,--export=__heap_base,--export=malloc,--export=free,--export=__wasm_call_ctors ${STRIP_FLAGS} -Wl,--no-entry -Wl,--allow-undefined -Wl,--gc-sections -o ${ABS_OUTPUT} ${ABS_INPUT}" - cargo run ${AOT_FEATURES} -p hyperlight-wasm-aot compile ${AOT_DEBUG_FLAGS} ${OUTPUT_WASM} ${OUTPUT_DIR}/${FILENAME%.*}.aot + cargo run -p hyperlight-wasm-aot compile ${AOT_DEBUG_FLAGS} ${AOT_LTS_FLAGS} ${OUTPUT_WASM} ${OUTPUT_DIR}/${FILENAME%.*}.aot done echo Building components @@ -129,7 +134,7 @@ else ${ABS_BINDINGS_TYPE_O}" # Build AOT for Wasmtime - cargo run ${AOT_FEATURES} -p hyperlight-wasm-aot compile ${AOT_DEBUG_FLAGS} --component ${OUTPUT_WASM} ${OUTPUT_DIR}/${COMPONENT_NAME}.aot + cargo run -p hyperlight-wasm-aot compile ${AOT_DEBUG_FLAGS} ${AOT_LTS_FLAGS} --component ${OUTPUT_WASM} ${OUTPUT_DIR}/${COMPONENT_NAME}.aot done fi diff --git a/src/hyperlight_wasm/src/lib.rs b/src/hyperlight_wasm/src/lib.rs index d35875fb..482a46df 100644 --- a/src/hyperlight_wasm/src/lib.rs +++ b/src/hyperlight_wasm/src/lib.rs @@ -125,11 +125,18 @@ mod tests { std::fs::read_to_string(cargo_toml_path).expect("Failed to read Cargo.toml"); let cargo_toml: toml::Value = toml::from_str(&cargo_toml_content).expect("Failed to parse Cargo.toml"); + // When wasmtime_lts feature is enabled, the runtime uses the wasmtime_lts + // dependency; otherwise it uses the wasmtime dependency. + let dep_key = if cfg!(feature = "wasmtime_lts") { + "wasmtime_lts" + } else { + "wasmtime" + }; let wasmtime_version_from_toml = cargo_toml .get("target") .and_then(|deps| deps.get("cfg(hyperlight)")) .and_then(|cfg| cfg.get("dependencies")) - .and_then(|deps| deps.get("wasmtime")) + .and_then(|deps| deps.get(dep_key)) .and_then(|wasmtime| wasmtime.get("version")) .and_then(|version| version.as_str()) .expect("Failed to find wasmtime version in Cargo.toml"); diff --git a/src/hyperlight_wasm_aot/Cargo.toml b/src/hyperlight_wasm_aot/Cargo.toml index 629d0230..19d1ab46 100644 --- a/src/hyperlight_wasm_aot/Cargo.toml +++ b/src/hyperlight_wasm_aot/Cargo.toml @@ -12,11 +12,13 @@ Application to precompile WebAssembly binaries to for hyperlight-wasm. """ [dependencies] -wasmtime = { version = "36.0.6", default-features = false, features = ["cranelift", "pulley", "runtime", "component-model" ] } +# Since we can use the library with either the latest bundled wasmtime or the LTS version +# we need to bundle both here as dependencies. +# The default is latest version bundled +# To use LTS version pass the --lts flag when using this tool +wasmtime = { version = "41.0.4", default-features = false, features = ["cranelift", "pulley", "runtime", "component-model"] } +wasmtime_lts = { package = "wasmtime", version = "36.0.6", default-features = false, features = ["cranelift", "runtime", "component-model"] } clap = { version = "4.6", features = ["derive"] } cargo_metadata = "0.23" cargo-util-schemas = "0.10.1" object = { version = "0.38.1", default-features = false, features = ["read_core", "elf"] } - -[features] -gdb = ["wasmtime/debug-builtins"] diff --git a/src/hyperlight_wasm_aot/src/main.rs b/src/hyperlight_wasm_aot/src/main.rs index 0bb16a0f..748f314c 100644 --- a/src/hyperlight_wasm_aot/src/main.rs +++ b/src/hyperlight_wasm_aot/src/main.rs @@ -73,6 +73,10 @@ enum Commands { /// Pre-compile for the pulley64 target #[arg(long)] pulley: bool, + + /// Use LTS wasmtime version instead of latest + #[arg(long)] + lts: bool, }, /// Check which Wasmtime version was used to precompile a module @@ -83,9 +87,65 @@ enum Commands { /// Specifies if the module has been compiled with debug support #[arg(long)] debug: bool, + + /// Use LTS wasmtime version instead of latest + #[arg(long)] + lts: bool, }, } +/// Precompile bytes using the LTS wasmtime version +fn precompile_bytes_lts(bytes: &[u8], debug: bool, pulley: bool, is_component: bool) -> Vec { + let mut config = wasmtime_lts::Config::new(); + if pulley { + config.target("pulley64").unwrap(); + } else { + config.target("x86_64-unknown-none").unwrap(); + } + if debug { + config.debug_info(true); + config.cranelift_opt_level(wasmtime_lts::OptLevel::None); + } + let engine = wasmtime_lts::Engine::new(&config).unwrap(); + if is_component { + engine.precompile_component(bytes).unwrap() + } else { + engine.precompile_module(bytes).unwrap() + } +} + +/// Detect and deserialize using the LTS wasmtime version +fn detect_and_deserialize_lts(bytes: &[u8], debug: bool, file: &str) { + let mut config = wasmtime_lts::Config::new(); + config.target("x86_64-unknown-none").unwrap(); + if debug { + config.debug_info(true); + config.cranelift_opt_level(wasmtime_lts::OptLevel::None); + } + let engine = wasmtime_lts::Engine::new(&config).unwrap(); + match wasmtime_lts::Engine::detect_precompiled(bytes) { + Some(wasmtime_lts::Precompiled::Module) => { + println!("The file is a valid AOT compiled Wasmtime module"); + match unsafe { wasmtime_lts::Module::deserialize(&engine, bytes) } { + Ok(_) => println!( + "File {} was AOT compiled with a compatible wasmtime version (LTS)", + file + ), + Err(e) => eprintln!("{}", e), + } + } + Some(wasmtime_lts::Precompiled::Component) => { + println!("The file is an AOT compiled Wasmtime component") + } + None => { + eprintln!( + "Error - {} is not a valid AOT compiled Wasmtime module or component", + file + ); + } + } +} + fn main() { let cli = Cli::parse(); @@ -97,6 +157,7 @@ fn main() { debug, minimal, pulley, + lts, } => { let outfile = match output { Some(s) => s, @@ -106,99 +167,137 @@ fn main() { path.to_str().unwrap().to_string() } }; - let target = if pulley { - SupportedTarget::WasmtimePulley64 - } else { - SupportedTarget::X86_64UnknownNone - }; - if debug { - println!( - "Aot Compiling {} to [{}]: {} with debug info and optimizations off", - input, target, outfile - ); + + if lts { + let target_name = if pulley { + "pulley64" + } else { + "x86_64-unknown-none" + }; + if debug { + println!( + "Aot Compiling {} to [{}]: {} with debug info and optimizations off (LTS wasmtime)", + input, target_name, outfile + ); + } else { + println!( + "Aot Compiling {} to [{}]: {} (LTS wasmtime)", + input, target_name, outfile + ); + } + let bytes = std::fs::read(&input).unwrap(); + let serialized = precompile_bytes_lts(&bytes, debug, pulley, component); + std::fs::write(outfile, serialized).unwrap(); } else { - println!("Aot Compiling {} to [{}]: {}", input, target, outfile); + let target = if pulley { + SupportedTarget::WasmtimePulley64 + } else { + SupportedTarget::X86_64UnknownNone + }; + if debug { + println!( + "Aot Compiling {} to [{}]: {} with debug info and optimizations off", + input, target, outfile + ); + } else { + println!("Aot Compiling {} to [{}]: {}", input, target, outfile); + } + let config = get_config(debug, minimal, &target); + let engine = Engine::new(&config).unwrap(); + let bytes = std::fs::read(&input).unwrap(); + let serialized = if component { + engine.precompile_component(&bytes).unwrap() + } else { + engine.precompile_module(&bytes).unwrap() + }; + std::fs::write(outfile, serialized).unwrap(); } - let config = get_config(debug, minimal, &target); - let engine = Engine::new(&config).unwrap(); - let bytes = std::fs::read(&input).unwrap(); - let serialized = if component { - engine.precompile_component(&bytes).unwrap() - } else { - engine.precompile_module(&bytes).unwrap() - }; - std::fs::write(outfile, serialized).unwrap(); } - Commands::CheckWasmtimeVersion { file, debug } => { - // get the wasmtime version used by hyperlight-wasm-aot - let metadata = MetadataCommand::new().exec().unwrap(); - let package_name = PackageName::new("wasmtime".to_string()).unwrap(); - let wasmtime_package: Option<&Package> = - metadata.packages.iter().find(|p| p.name == package_name); - let version_number = match wasmtime_package { - Some(pkg) => pkg.version.clone(), - None => panic!("wasmtime dependency not found"), - }; - if debug { - println!( - "Checking Wasmtime version used to compile debug info enabled file: {}", - file - ); + Commands::CheckWasmtimeVersion { file, debug, lts } => { + if lts { + if debug { + println!( + "Checking Wasmtime version used to compile with debug info enabled file: {} (LTS wasmtime)", + file + ); + } else { + println!( + "Checking Wasmtime version used to compile file: {} (LTS wasmtime)", + file + ); + } + let bytes = std::fs::read(&file).unwrap(); + detect_and_deserialize_lts(&bytes, debug, &file); } else { - println!("Checking Wasmtime version used to compile file: {}", file); - } - // load the file into wasmtime, check that it is aot compiled and extract the version of wasmtime used to compile it from its metadata - let bytes = std::fs::read(&file).unwrap(); - let target = match get_aot_target(&bytes) { - Ok(target) => target, - Err(e) => { - eprintln!( - "Error - {} is not a valid precompiled Wasmtime module: {}", - file, e + // get the wasmtime version used by hyperlight-wasm-aot + let metadata = MetadataCommand::new().exec().unwrap(); + let package_name = PackageName::new("wasmtime".to_string()).unwrap(); + let wasmtime_package: Option<&Package> = + metadata.packages.iter().find(|p| p.name == package_name); + let version_number = match wasmtime_package { + Some(pkg) => pkg.version.clone(), + None => panic!("wasmtime dependency not found"), + }; + if debug { + println!( + "Checking Wasmtime version used to compile debug info enabled file: {}", + file ); - std::process::exit(1) + } else { + println!("Checking Wasmtime version used to compile file: {}", file); } - }; - let config = get_config(debug, false, &target); - let engine = Engine::new(&config).unwrap(); - match Engine::detect_precompiled(&bytes) { - Some(pre_compiled) => { - match pre_compiled { - Precompiled::Module => { - println!("The file is a valid AOT compiled Wasmtime module"); - // It doesnt seem like the functions or data needed to extract the version of wasmtime used to compile the module are exposed in the wasmtime crate - // so we will try and load it and then catch the error and parse the version from the error message :-( - match unsafe { Module::deserialize(&engine, bytes) } { - Ok(_) => println!( - "File {} was AOT compiled to '{}' with wasmtime version: {}", - file, target, version_number - ), - Err(e) => { - let error_message = e.to_string(); - if !error_message.starts_with( - "Module was compiled with incompatible Wasmtime version", - ) { - eprintln!("{}", error_message); - return; - } - let version = error_message.trim_start_matches("Module was compiled with incompatible Wasmtime version ").trim(); - println!( + let bytes = std::fs::read(&file).unwrap(); + let target = match get_aot_target(&bytes) { + Ok(target) => target, + Err(e) => { + eprintln!( + "Error - {} is not a valid precompiled Wasmtime module: {}", + file, e + ); + std::process::exit(1) + } + }; + let config = get_config(debug, false, &target); + let engine = Engine::new(&config).unwrap(); + match Engine::detect_precompiled(&bytes) { + Some(pre_compiled) => { + match pre_compiled { + Precompiled::Module => { + println!("The file is a valid AOT compiled Wasmtime module"); + // It doesnt seem like the functions or data needed to extract the version of wasmtime used to compile the module are exposed in the wasmtime crate + // so we will try and load it and then catch the error and parse the version from the error message :-( + match unsafe { Module::deserialize(&engine, bytes) } { + Ok(_) => println!( "File {} was AOT compiled to '{}' with wasmtime version: {}", - file, target, version - ); - } - }; - } - Precompiled::Component => { - eprintln!("The file is an AOT compiled Wasmtime component") + file, target, version_number + ), + Err(e) => { + let error_message = e.to_string(); + if !error_message.starts_with( + "Module was compiled with incompatible Wasmtime version", + ) { + eprintln!("{}", error_message); + return; + } + let version = error_message.trim_start_matches("Module was compiled with incompatible Wasmtime version ").trim(); + println!( + "File {} was AOT compiled to '{}' with wasmtime version: {}", + file, target, version + ); + } + }; + } + Precompiled::Component => { + eprintln!("The file is an AOT compiled Wasmtime component") + } } } - } - None => { - eprintln!( - "Error - {} is not a valid AOT compiled Wasmtime module or component", - file - ); + None => { + eprintln!( + "Error - {} is not a valid AOT compiled Wasmtime module or component", + file + ); + } } } } @@ -213,6 +312,13 @@ fn get_config(debug: bool, minimal: bool, target: &SupportedTarget) -> Config { match target { SupportedTarget::X86_64UnknownNone => { config.target("x86_64-unknown-none").unwrap(); + // Enable x86_float_abi_ok only for the latest Wasmtime version. + // Safety: + // We are using hyperlight cargo to build the guest which + // sets the Rust target to be compiled with the hard-float ABI manually via + // `-Zbuild-std` and a custom target JSON configuration + // See https://github.com/bytecodealliance/wasmtime/pull/11553 + unsafe { config.x86_float_abi_ok(true) }; } SupportedTarget::WasmtimePulley64 => { config.target("pulley64").unwrap(); diff --git a/src/hyperlight_wasm_runtime/Cargo.toml b/src/hyperlight_wasm_runtime/Cargo.toml index 0814f88e..6f9b7962 100644 --- a/src/hyperlight_wasm_runtime/Cargo.toml +++ b/src/hyperlight_wasm_runtime/Cargo.toml @@ -28,7 +28,10 @@ hyperlight-common = { workspace = true, default-features = false } hyperlight-guest-bin = { workspace = true, features = [ "printf" ] } hyperlight-guest.workspace = true hyperlight-wasm-macro.workspace = true -wasmtime = { version = "36.0.6", default-features = false, features = [ "runtime", "custom-virtual-memory", "custom-native-signals", "component-model" ] } +# Default to latest wasmtime, use wasmtime_lts feature for LTS version +# These are marked optional to avoid pulling them both in. They should be mutually exclusive. +wasmtime = { version = "41.0.4", default-features = false, features = [ "runtime", "custom-virtual-memory", "custom-native-signals", "component-model" ], optional = true } +wasmtime_lts = { package = "wasmtime", version = "36.0.6", default-features = false, features = [ "runtime", "custom-virtual-memory", "custom-native-signals", "component-model" ], optional = true } spin = "0.10.0" tracing = { version = "0.1.44", default-features = false, features = ["attributes", "log"] } @@ -40,9 +43,11 @@ cargo_metadata = "0.23" reqwest = {version = "0.12", default-features = false, features = ["blocking","rustls-tls"] } [features] -default = [] -gdb = ["wasmtime/debug-builtins"] -pulley = ["wasmtime/pulley"] +default = ["wasmtime_latest"] +wasmtime_latest = ["dep:wasmtime"] +wasmtime_lts = ["dep:wasmtime_lts"] +gdb = ["wasmtime?/debug-builtins", "wasmtime_lts?/debug-builtins"] +pulley = ["wasmtime?/pulley", "wasmtime_lts?/pulley"] trace_guest = ["hyperlight-common/trace_guest", "hyperlight-guest/trace_guest", "hyperlight-guest-bin/trace_guest"] [lints.rust] diff --git a/src/hyperlight_wasm_runtime/build.rs b/src/hyperlight_wasm_runtime/build.rs index 1052686b..31c0bfe5 100644 --- a/src/hyperlight_wasm_runtime/build.rs +++ b/src/hyperlight_wasm_runtime/build.rs @@ -29,13 +29,32 @@ fn main() { let mut cfg = cc::Build::new(); // get the version of the wasmtime crate - + // When wasmtime_lts feature is enabled, find the wasmtime version matching 36.x (LTS); + // otherwise find the latest version. let metadata = MetadataCommand::new().exec().unwrap(); - let wasmtime_package: Option<&Package> = - metadata.packages.iter().find(|p| *p.name == "wasmtime"); - let version_number = match wasmtime_package { - Some(pkg) => pkg.version.clone(), - None => panic!("wasmtime dependency not found"), + let wasmtime_packages: Vec<&Package> = metadata + .packages + .iter() + .filter(|p| *p.name == "wasmtime") + .collect(); + + let use_lts = env::var("CARGO_FEATURE_WASMTIME_LTS").is_ok(); + let version_number = if wasmtime_packages.len() == 1 { + wasmtime_packages[0].version.clone() + } else { + // Multiple wasmtime versions present; pick based on feature + wasmtime_packages + .iter() + .find(|p| { + if use_lts { + p.version.major <= 36 + } else { + p.version.major > 36 + } + }) + .unwrap_or_else(|| panic!("wasmtime dependency not found for lts={}", use_lts)) + .version + .clone() }; // Write the version number to the metadata.rs file so that it is included in the binary diff --git a/src/hyperlight_wasm_runtime/src/component.rs b/src/hyperlight_wasm_runtime/src/component.rs index 05afe97c..a2a37001 100644 --- a/src/hyperlight_wasm_runtime/src/component.rs +++ b/src/hyperlight_wasm_runtime/src/component.rs @@ -108,6 +108,16 @@ pub extern "C" fn hyperlight_main() { platform::register_page_fault_handler(); let mut config = Config::new(); + // Enable x86_float_abi_ok only for the latest Wasmtime version. + // Safety: + // We are using hyperlight cargo to build the guest which + // sets the Rust target to be compiled with the hard-float ABI manually via + // `-Zbuild-std` and a custom target JSON configuration + // See https://github.com/bytecodealliance/wasmtime/pull/11553 + #[cfg(not(feature = "wasmtime_lts"))] + unsafe { + config.x86_float_abi_ok(true) + }; config.with_custom_code_memory(Some(alloc::sync::Arc::new(platform::WasmtimeCodeMemory {}))); #[cfg(gdb)] config.debug_info(true); diff --git a/src/hyperlight_wasm_runtime/src/lib.rs b/src/hyperlight_wasm_runtime/src/lib.rs index 4db99a48..dbe9c804 100644 --- a/src/hyperlight_wasm_runtime/src/lib.rs +++ b/src/hyperlight_wasm_runtime/src/lib.rs @@ -19,6 +19,20 @@ limitations under the License. extern crate alloc; +// Re-export wasmtime based on expected version +#[cfg(all(feature = "wasmtime_latest", feature = "wasmtime_lts"))] +compile_error!( + "Features 'wasmtime_latest' and 'wasmtime_lts' are mutually exclusive. Please enable only one." +); + +#[cfg(not(any(feature = "wasmtime_latest", feature = "wasmtime_lts")))] +compile_error!("Either 'wasmtime_latest' or 'wasmtime_lts' feature must be enabled."); + +#[cfg(not(feature = "wasmtime_lts"))] +extern crate wasmtime; +#[cfg(feature = "wasmtime_lts")] +extern crate wasmtime_lts as wasmtime; + mod platform; #[cfg(not(component))] diff --git a/src/hyperlight_wasm_runtime/src/module.rs b/src/hyperlight_wasm_runtime/src/module.rs index 64a00665..14f7eb6f 100644 --- a/src/hyperlight_wasm_runtime/src/module.rs +++ b/src/hyperlight_wasm_runtime/src/module.rs @@ -98,6 +98,17 @@ pub fn guest_dispatch_function(function_call: FunctionCall) -> Result> { #[instrument(skip_all, level = "Info")] fn init_wasm_runtime(function_call: FunctionCall) -> Result> { let mut config = Config::new(); + // Enable x86_float_abi_ok only for the latest Wasmtime version. + // Safety: + // We are using hyperlight cargo to build the guest which + // sets the Rust target to be compiled with the hard-float ABI manually via + // `-Zbuild-std` and a custom target JSON configuration + // See https://github.com/bytecodealliance/wasmtime/pull/11553 + #[cfg(not(feature = "wasmtime_lts"))] + unsafe { + config.x86_float_abi_ok(true) + }; + config.with_custom_code_memory(Some(alloc::sync::Arc::new(platform::WasmtimeCodeMemory {}))); #[cfg(gdb)] config.debug_info(true);