diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 439d297..e185803 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,42 +7,54 @@ on: jobs: build: - name: Build and Test + name: Build and Test (${{ matrix.memory }} pages) runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - memory: regular + one_byte_page: 0 + - memory: one-byte + one_byte_page: 1 env: - WAC_VERSION: 0.9.0 - VICEROY_VERSION: 0.16.4 + WAC_VERSION: 0.12.0 + VICEROY_VERSION: 0.21.1 steps: - uses: actions/checkout@v5 - uses: dtolnay/rust-toolchain@stable with: target: wasm32-unknown-unknown, wasm32-wasip2 components: rustfmt, clippy - toolchain: 1.93.1 # Pin to 1.93 to use WASI 0.2.6, before viceroy catches up to 0.2.9 + toolchain: 1.99.0 - uses: bytecodealliance/actions/wasmtime/setup@v1 - - name: Install wac - run: | - tmp=$(mktemp -d) - curl -sLo "$tmp/wac-cli" https://github.com/bytecodealliance/wac/releases/download/v${{ env.WAC_VERSION }}/wac-cli-x86_64-unknown-linux-musl - chmod a+x "$tmp/wac-cli" - mv "$tmp/wac-cli" /usr/local/bin/wac - - name: Install viceroy - run: | - tmp=$(mktemp -d) - curl -sLo "$tmp/viceroy.tar.gz" https://github.com/fastly/Viceroy/releases/download/v${{ env.VICEROY_VERSION }}/viceroy_v${{ env.VICEROY_VERSION }}_linux-amd64.tar.gz - tar -xz -f "$tmp/viceroy.tar.gz" -C "$tmp" - chmod a+x "$tmp/viceroy" - mv "$tmp/viceroy" /usr/local/bin/ - uses: actions/cache@v5 with: path: | ~/.cargo/registry ~/.cargo/git + ~/.cargo/bin + ~/.cargo/.crates.toml + ~/.cargo/.crates2.json target/ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo- + - name: Install wac + run: | + tmp=$(mktemp -d) + curl -sLo "$tmp/wac-cli" https://github.com/bytecodealliance/wac/releases/download/v${{ env.WAC_VERSION }}/wac-cli-x86_64-unknown-linux-musl + chmod a+x "$tmp/wac-cli" + mv "$tmp/wac-cli" /usr/local/bin/wac + - name: Install viceroy + run: | + RUSTFLAGS="--cap-lints=warn" cargo install --git https://github.com/fastly/Viceroy.git --branch yan/adapt-ps1 --locked viceroy +# tmp=$(mktemp -d) +# curl -sLo "$tmp/viceroy.tar.gz" https://github.com/fastly/Viceroy/releases/download/v${{ env.VICEROY_VERSION }}/viceroy_v${{ env.VICEROY_VERSION }}_linux-amd64.tar.gz +# tar -xz -f "$tmp/viceroy.tar.gz" -C "$tmp" +# chmod a+x "$tmp/viceroy" +# mv "$tmp/viceroy" /usr/local/bin/ - name: Build run: make - name: Test - run: make test + run: make test ONE_BYTE_PAGE=${{ matrix.one_byte_page }} diff --git a/Cargo.lock b/Cargo.lock index 16510bc..1f4d2a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "addr2line" -version = "0.26.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9698bf0769c641b18618039fe2ebd41eb3541f98433000f64e663fab7cea2c87" +checksum = "59317f77929f0e679d39364702289274de2f0f0b22cbf50b2b8cff2169a0b27a" dependencies = [ "gimli", ] @@ -23,20 +23,11 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9d4ee0d472d1cd2e28c97dfa124b3d8d992e10eb0a035f33f5d12e3a177ba3b" -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -49,15 +40,15 @@ 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" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -84,9 +75,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "arbitrary" @@ -96,13 +87,13 @@ checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" [[package]] name = "async-trait" -version = "0.1.89" +version = "0.1.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.6", ] [[package]] @@ -123,15 +114,6 @@ version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" -[[package]] -name = "bitmaps" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" -dependencies = [ - "typenum", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -152,102 +134,42 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" dependencies = [ "allocator-api2", ] [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" - -[[package]] -name = "cap-fs-ext" -version = "3.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5528f85b1e134ae811704e41ef80930f56e795923f866813255bc342cc20654" -dependencies = [ - "cap-primitives", - "cap-std", - "io-lifetimes", - "windows-sys 0.59.0", -] - -[[package]] -name = "cap-net-ext" -version = "3.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20a158160765c6a7d0d8c072a53d772e4cb243f38b04bfcf6b4939cfbe7482e7" -dependencies = [ - "cap-primitives", - "cap-std", - "rustix 1.1.4", - "smallvec", -] +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "cap-primitives" -version = "3.4.5" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6cf3aea8a5081171859ef57bc1606b1df6999df4f1110f8eef68b30098d1d3a" +checksum = "8b5f74729fd2f44701d1a8eb47e906cdb3ccd9ec0f02baad85a744b791940b18" dependencies = [ "ambient-authority", "fs-set-times", "io-extras", - "io-lifetimes", + "io-lifetimes 3.0.1", "ipnet", "maybe-owned", - "rustix 1.1.4", + "rustix", "rustix-linux-procfs", - "windows-sys 0.59.0", - "winx", -] - -[[package]] -name = "cap-rand" -version = "3.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8144c22e24bbcf26ade86cb6501a0916c46b7e4787abdb0045a467eb1645a1d" -dependencies = [ - "ambient-authority", - "rand", -] - -[[package]] -name = "cap-std" -version = "3.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6dc3090992a735d23219de5c204927163d922f42f575a0189b005c62d37549a" -dependencies = [ - "cap-primitives", - "io-extras", - "io-lifetimes", - "rustix 1.1.4", -] - -[[package]] -name = "cap-time-ext" -version = "3.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def102506ce40c11710a9b16e614af0cde8e76ae51b1f48c04b8d79f4b671a80" -dependencies = [ - "ambient-authority", - "cap-primitives", - "iana-time-zone", - "once_cell", - "rustix 1.1.4", + "windows-sys 0.61.2", "winx", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f74872d07caf508b30a21f6836e7d7016a2eaf7d9ff4f48deaa58cd8a0407630" dependencies = [ "find-msvc-tools", "jobserver", @@ -257,21 +179,32 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" [[package]] name = "cfg_aliases" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" + +[[package]] +name = "chacha20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "rand_core", +] [[package]] name = "clap" -version = "4.5.60" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a" +checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" dependencies = [ "clap_builder", "clap_derive", @@ -279,9 +212,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.60" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" +checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" dependencies = [ "anstream", "anstyle", @@ -291,21 +224,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.55" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" +checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.6", ] [[package]] name = "clap_lex" -version = "1.0.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831" +checksum = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486" [[package]] name = "cobs" @@ -313,39 +246,38 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "thiserror 2.0.18", + "thiserror 2.0.21", ] [[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.2" +version = "0.16.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4" +checksum = "e96a4956774c13c126a8b5af4daa79384f4d826534c95a02d76afb39e2ab64e3" dependencies = [ "encode_unicode", "libc", - "once_cell", "unicode-width", "windows-sys 0.61.2", ] [[package]] -name = "core-foundation-sys" -version = "0.8.7" +name = "core_detect" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +checksum = "7f8f80099a98041a3d1622845c271458a2d73e688351bf3cb999266764b81d48" [[package]] name = "cpp_demangle" -version = "0.4.5" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2bb79cb74d735044c972aae58ed0aaa9a837e85b01106a54c39e42e97f62253" +checksum = "0667304c32ea56cb4cd6d2d7c0cfe9a2f8041229db8c033af7f8d69492429def" dependencies = [ "cfg-if", ] @@ -359,38 +291,48 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" +dependencies = [ + "libc", +] + [[package]] name = "cranelift-assembler-x64" -version = "0.129.1" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40630d663279bc855bff805d6f5e8a0b6a1867f9df95b010511ac6dc894e9395" +checksum = "658e8623bea025d142fb11c299b8c6572ffe9fd663b52887c4dc124735cc130b" dependencies = [ "cranelift-assembler-x64-meta", ] [[package]] name = "cranelift-assembler-x64-meta" -version = "0.129.1" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ee6aec5ceb55e5fdbcf7ef677d7c7195531360ff181ce39b2b31df11d57305f" +checksum = "a4b12b8c55c31c3d8598c2de9a657c3b978f905f6886c43e02216e0b15fe45a3" dependencies = [ "cranelift-srcgen", ] [[package]] name = "cranelift-bforest" -version = "0.129.1" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a92d78cc3f087d7e7073828f08d98c7074a3a062b6b29a1b7783ce74305685e" +checksum = "894b984f82c5a36f05fdd4973fbf4d37d69cd5cdf8c16e8ffe3af4a9cdfe193c" dependencies = [ "cranelift-entity", + "wasmtime-internal-core", ] [[package]] name = "cranelift-bitset" -version = "0.129.1" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edcc73d756f2e0d7eda6144fe64a2bc69c624de893cb1be51f1442aed77881d2" +checksum = "3a1e4c34abe94193ada09f821f474be87ac8a1fbbacd87058571ef04c1bf4009" dependencies = [ "serde", "serde_derive", @@ -399,9 +341,9 @@ dependencies = [ [[package]] name = "cranelift-codegen" -version = "0.129.1" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d94c2cd0d73b41369b88da1129589bc3a2d99cf49979af1d14751f35b7a1b" +checksum = "63826cef0bf70e61d56cc930aa4ee423638f66dc3cfc10d683e73138a6d177b8" dependencies = [ "bumpalo", "cranelift-assembler-x64", @@ -413,13 +355,16 @@ dependencies = [ "cranelift-entity", "cranelift-isle", "gimli", - "hashbrown 0.15.5", + "hashbrown 0.17.1", "libm", "log", + "postcard", "pulley-interpreter", "regalloc2", "rustc-hash", "serde", + "serde_derive", + "sha2", "smallvec", "target-lexicon", "wasmtime-internal-core", @@ -427,9 +372,9 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.129.1" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235da0e52ee3a0052d0e944c3470ff025b1f4234f6ec4089d3109f2d2ffa6cbd" +checksum = "26de7849112293681a19f7525c689e1d73dc6eb2687355170fb7458c4da8d353" dependencies = [ "cranelift-assembler-x64-meta", "cranelift-codegen-shared", @@ -440,24 +385,24 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.129.1" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c07c6c440bd1bf920ff7597a1e743ede1f68dcd400730bd6d389effa7662af" +checksum = "df315a8b1cfd6e620971e3d4249bd2c4528167717e8f48a6317a87c55891bcb8" [[package]] name = "cranelift-control" -version = "0.129.1" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8797c022e02521901e1aee483dea3ed3c67f2bf0a26405c9dd48e8ee7a70944b" +checksum = "2c3fff7610fb17f228f16598e1a044db79a12806ece7496ff2c69cf1a27a79a5" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.129.1" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59d8e72637246edd2cba337939850caa8b201f6315925ec4c156fdd089999699" +checksum = "6158b1ac381792ad11e670abbcd15db8b1737e84bfa8a7f2bd7eb41388a92530" dependencies = [ "cranelift-bitset", "serde", @@ -467,11 +412,12 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.129.1" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c31db0085c3dfa131e739c3b26f9f9c84d69a9459627aac1ac4ef8355e3411b" +checksum = "099361a0919067086dcde624a281ce719834cebf8544d6c24646f5e924107234" dependencies = [ "cranelift-codegen", + "hashbrown 0.17.1", "log", "smallvec", "target-lexicon", @@ -479,15 +425,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.129.1" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524d804c1ebd8c542e6f64e71aa36934cec17c5da4a9ae3799796220317f5d23" +checksum = "2a2f30ea3fd5a11f7d3473976d3b62b5b3f2b62fa943c85e0331d88bf505082c" [[package]] name = "cranelift-native" -version = "0.129.1" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc9598f02540e382e1772416eba18e93c5275b746adbbf06ac1f3cf149415270" +checksum = "397508a8d817dc74019603ac5a4c4e40b4df627e5aed4f2f8088345d4c01d401" dependencies = [ "cranelift-codegen", "libc", @@ -496,24 +442,24 @@ dependencies = [ [[package]] name = "cranelift-srcgen" -version = "0.129.1" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d953932541249c91e3fa70a75ff1e52adc62979a2a8132145d4b9b3e6d1a9b6a" +checksum = "b4944ef05513e1c1a85a945cf8f29d95ddea8bcbb19e0bfd4e71063450967420" [[package]] name = "crc32fast" -version = "1.5.0" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +checksum = "01a7799fd6b852db0e61728dde9a204c423b44d689dbd432522543614b490e78" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-deque" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +checksum = "622f3fc73690be383c7214310406f28a90e6edeadc3cea882f9d71e495b9711a" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -521,18 +467,18 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.18" +version = "0.9.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "dc74980687109a3b14c72fd458107bf0baa1da1a1a805e178d15501ba9b86d9d" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6" [[package]] name = "crypto-common" @@ -560,6 +506,7 @@ name = "debug" version = "0.1.0" dependencies = [ "getrandom 0.3.4", + "libc-alloc", "wit-bindgen 0.62.0", ] @@ -636,20 +583,20 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.6", ] [[package]] name = "either" -version = "1.15.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34" [[package]] name = "embedded-io" @@ -671,11 +618,16 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.35" +version = "0.8.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +checksum = "8e985e0451871ad22fb8d2b6b076e2028a502a0d3950998c2c5c0a4f9b5d9679" dependencies = [ "cfg-if", + "core_detect", + "multiversion_no_op", + "rustversion", + "scopeguard", + "simdutf8", ] [[package]] @@ -696,26 +648,15 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "fd-lock" -version = "4.0.4" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce92ff622d6dadf7349484f42c93271a0d49b7cc4d466a936405bacbe10aa78" -dependencies = [ - "cfg-if", - "rustix 1.1.4", - "windows-sys 0.59.0", -] +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484" [[package]] name = "fixedbitset" @@ -729,12 +670,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - [[package]] name = "foldhash" version = "0.2.0" @@ -756,16 +691,16 @@ version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94e7099f6313ecacbe1256e8ff9d617b75d1bcb16a6fddef94866d225a01a14a" dependencies = [ - "io-lifetimes", - "rustix 1.1.4", + "io-lifetimes 2.0.4", + "rustix", "windows-sys 0.59.0", ] [[package]] name = "futures" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" dependencies = [ "futures-channel", "futures-core", @@ -777,9 +712,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" dependencies = [ "futures-core", "futures-sink", @@ -787,33 +722,33 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" [[package]] name = "futures-io" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" [[package]] name = "futures-sink" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ "futures-channel", "futures-core", @@ -868,21 +803,20 @@ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", ] [[package]] name = "getrandom" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "libc", - "r-efi", - "wasip2", - "wasip3", + "r-efi 6.0.0", + "rand_core", ] [[package]] @@ -897,16 +831,6 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "foldhash 0.1.5", - "serde", -] - [[package]] name = "hashbrown" version = "0.16.1" @@ -919,7 +843,9 @@ version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" dependencies = [ - "foldhash 0.2.0", + "foldhash", + "serde", + "serde_core", ] [[package]] @@ -928,38 +854,15 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "iana-time-zone" -version = "0.1.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -967,9 +870,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" dependencies = [ "displaydoc", "litemap", @@ -980,9 +883,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -994,16 +897,17 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" dependencies = [ + "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", @@ -1014,15 +918,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" dependencies = [ "displaydoc", "icu_locale_core", @@ -1052,28 +956,14 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", ] -[[package]] -name = "im-rc" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1955a75fa080c677d3972822ec4bad316169ab1cfc6c257a942c2265dbe5fe" -dependencies = [ - "bitmaps", - "rand_core", - "rand_xoshiro", - "sized-chunks", - "typenum", - "version_check", -] - [[package]] name = "indexmap" version = "2.14.2" @@ -1088,12 +978,12 @@ dependencies = [ [[package]] name = "io-extras" -version = "0.18.4" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2285ddfe3054097ef4b2fe909ef8c3bcd1ea52a8f0d274416caebeef39f04a65" +checksum = "20fd6de4ccfcc187e38bc21cfa543cb5a302cb86a8b114eb7f0bf0dc9f8ac00f" dependencies = [ - "io-lifetimes", - "windows-sys 0.59.0", + "io-lifetimes 3.0.1", + "windows-sys 0.60.2", ] [[package]] @@ -1102,11 +992,17 @@ version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06432fb54d3be7964ecd3649233cddf80db2832f47fec34c01f65b3d9d774983" +[[package]] +name = "io-lifetimes" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0fb0570afe1fed943c5c3d4102d5358592d8625fda6a0007fdbe65a92fba96" + [[package]] name = "ipnet" -version = "2.11.0" +version = "2.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "791930b43c0d5973160d90a8f3894509f2b273430f5c5c73b668636d0287c5c0" [[package]] name = "is_terminal_polyfill" @@ -1125,9 +1021,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "ittapi" @@ -1151,35 +1047,36 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.3", "libc", ] [[package]] name = "js-sys" -version = "0.3.91" +version = "0.3.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] [[package]] name = "lazy_static" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "20870f649af7073d53e38067b2a84312175d56ea15217e1b15bc83506ec50afb" [[package]] name = "leb128" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" +checksum = "c83bff1d572d6b9aeef67ddfc8448e4a3737909cb28e81f97c791b9018703e52" [[package]] name = "leb128fmt" @@ -1189,9 +1086,13 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78" + +[[package]] +name = "libc-alloc" +version = "0.1.0" [[package]] name = "libm" @@ -1201,20 +1102,13 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.12" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +checksum = "61ff90caf6077a803a240f62fdbe88645a890bbca49ef8174c3cb0404362171d" dependencies = [ - "bitflags", "libc", ] -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - [[package]] name = "linux-raw-sys" version = "0.12.1" @@ -1223,15 +1117,15 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" [[package]] name = "log" -version = "0.4.29" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" [[package]] name = "logos" @@ -1254,7 +1148,7 @@ dependencies = [ "proc-macro2", "quote", "regex-syntax", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1268,12 +1162,9 @@ dependencies = [ [[package]] name = "mach2" -version = "0.4.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" -dependencies = [ - "libc", -] +checksum = "dae608c151f68243f2b000364e1f7b186d9c29845f7d2d85bd31b9ad77ad552b" [[package]] name = "maybe-owned" @@ -1283,35 +1174,41 @@ checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memfd" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad38eb12aea514a0466ea40a80fd8cc83637065948eb4a426e4aa46261175227" +checksum = "57804b2c9b69967f1536a56f86297e367a33b19e98852ed624b84551cdbc0d90" dependencies = [ - "rustix 1.1.4", + "rustix", ] [[package]] name = "mio" -version = "1.1.1" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "1788edb87fdc09c7e26304471e2f5be8cdefb1b6930d6e3985fc02ff53bf86ee" dependencies = [ "libc", "wasi", "windows-sys 0.61.2", ] +[[package]] +name = "multiversion_no_op" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743fb55ba31b18fb1ecef6bdc9aa2743314978ac084044301a7eee33fb99a20d" + [[package]] name = "nix" -version = "0.31.2" +version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d0705320c1e6ba1d912b5e37cf18071b6c2e9b7fa8215a1e8a7651966f5d3" +checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" dependencies = [ "bitflags", "cfg-if", @@ -1336,21 +1233,21 @@ checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" [[package]] name = "object" -version = "0.37.3" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +checksum = "dd229a0361b9d0d4396176e02d65897f487eebeab7caa6d443855ee152ca0b9c" dependencies = [ "crc32fast", - "hashbrown 0.15.5", + "hashbrown 0.17.1", "indexmap", "memchr", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" @@ -1382,9 +1279,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" [[package]] name = "postcard" @@ -1400,22 +1297,13 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" dependencies = [ "zerovec", ] -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - [[package]] name = "prettyplease" version = "0.2.37" @@ -1423,7 +1311,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1438,9 +1326,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] @@ -1457,21 +1345,22 @@ dependencies = [ "prettyplease 0.2.37", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "tempfile", "trace", "wasmtime", "wasmtime-wasi", - "wit-bindgen-core 0.62.0", - "wit-bindgen-rust 0.62.0", - "wit-component 0.259.0", + "wit-bindgen-core", + "wit-bindgen-rust", + "wit-component 0.261.0", + "wit-parser 0.261.0", ] [[package]] name = "pulley-interpreter" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc2d61e068654529dc196437f8df0981db93687fdc67dec6a5de92363120b9da" +checksum = "1b66b7448cb92d709f2924de98b5ba5b5ce4ea08e6d6b9c3b403fcd88d122ca2" dependencies = [ "cranelift-bitset", "log", @@ -1481,20 +1370,20 @@ dependencies = [ [[package]] name = "pulley-macros" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3f210c61b6ecfaebbba806b6d9113a222519d4e5cc4ab2d5ecca047bb7927ae" +checksum = "185b9b4cd91f85110f48f8c0314757dfb2bb48c40f5d91055ea666cbbcbf317b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -1506,49 +1395,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] -name = "rand" -version = "0.8.5" +name = "r-efi" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] -name = "rand_chacha" -version = "0.3.1" +name = "rand" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" dependencies = [ - "ppv-lite86", + "chacha20", + "getrandom 0.4.3", "rand_core", ] [[package]] name = "rand_core" -version = "0.6.4" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "rand_xoshiro" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" -dependencies = [ - "rand_core", -] +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "rayon" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" dependencies = [ "either", "rayon-core", @@ -1568,6 +1441,7 @@ dependencies = [ name = "recorder" version = "0.1.0" dependencies = [ + "libc-alloc", "serde_json", "trace", "wit-bindgen 0.62.0", @@ -1586,59 +1460,47 @@ dependencies = [ [[package]] name = "regalloc2" -version = "0.13.5" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08effbc1fa53aaebff69521a5c05640523fab037b34a4a2c109506bc938246fa" +checksum = "757712e8e61590d6d4f5d563483755538b5aa13467837a3b41cd9832509a7f85" dependencies = [ "allocator-api2", "bumpalo", - "hashbrown 0.15.5", + "hashbrown 0.17.1", "log", "rustc-hash", + "serde", "smallvec", ] [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rustc-demangle" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" +checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb" [[package]] name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" - -[[package]] -name = "rustix" -version = "0.38.44" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustix" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d" dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys 0.12.1", + "linux-raw-sys", "windows-sys 0.61.2", ] @@ -1649,26 +1511,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fc84bf7e9aa16c4f2c758f27412dc9841341e16aa682d9c7ac308fe3ee12056" dependencies = [ "once_cell", - "rustix 1.1.4", + "rustix", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] -name = "ryu" -version = "1.0.23" +name = "scopeguard" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -1676,9 +1538,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", "serde_derive", @@ -1686,29 +1548,29 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.6", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ "itoa", "memchr", @@ -1719,26 +1581,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" -dependencies = [ - "indexmap", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - [[package]] name = "sha2" version = "0.10.9" @@ -1746,7 +1595,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] @@ -1758,19 +1607,15 @@ checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77" [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] -name = "sized-chunks" -version = "0.6.5" +name = "simdutf8" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" -dependencies = [ - "bitmaps", - "typenum", -] +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "slab" @@ -1780,21 +1625,21 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "f9395f0f0eee849a9b707b2f06bb92a6a422090e2123bb2ef8e87a0e61892a8e" dependencies = [ "serde", ] [[package]] name = "socket2" -version = "0.6.2" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -1811,9 +1656,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.117" +version = "2.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" dependencies = [ "proc-macro2", "quote", @@ -1833,29 +1678,13 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "system-interface" -version = "0.27.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc4592f674ce18521c2a81483873a49596655b179f71c5e05d10c1fe66c78745" -dependencies = [ - "bitflags", - "cap-fs-ext", - "cap-std", - "fd-lock", - "io-lifetimes", - "rustix 0.38.44", - "windows-sys 0.59.0", - "winx", + "syn 3.0.6", ] [[package]] @@ -1866,14 +1695,14 @@ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" [[package]] name = "tempfile" -version = "3.26.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.1", + "getrandom 0.4.3", "once_cell", - "rustix 1.1.4", + "rustix", "windows-sys 0.61.2", ] @@ -1897,11 +1726,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e" dependencies = [ - "thiserror-impl 2.0.18", + "thiserror-impl 2.0.21", ] [[package]] @@ -1912,25 +1741,25 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.6", ] [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" dependencies = [ "displaydoc", "zerovec", @@ -1938,9 +1767,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.49.0" +version = "1.53.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "e95f91fcc7a621e8b030f6aa23c71fe9838ae2fb4d8118b75602a328f5144044" dependencies = [ "bytes", "libc", @@ -1952,9 +1781,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" +version = "1.1.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +checksum = "920602543f0911ab71da12c50d59701da54c196d1a2bf5cb4b75667f137a406a" dependencies = [ "indexmap", "serde_core", @@ -1967,27 +1796,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" [[package]] name = "trace" @@ -2016,7 +1845,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -2030,15 +1859,15 @@ dependencies = [ [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "unicode-ident" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954" [[package]] name = "unicode-width" @@ -2046,18 +1875,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "unsafe-libyaml" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" - [[package]] name = "url" version = "2.5.8" @@ -2084,9 +1901,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.21.0" +version = "1.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "97277d36b9c3ace13e58fa6e753f8b0bbbf302a18dd193240d70f9e29681059a" dependencies = [ "js-sys", "wasm-bindgen", @@ -2106,27 +1923,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.2+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" -dependencies = [ - "wit-bindgen 0.51.0", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen 0.57.1", ] [[package]] name = "wasm-bindgen" -version = "0.2.114" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409" dependencies = [ "cfg-if", "once_cell", @@ -2137,9 +1945,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.114" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2147,87 +1955,83 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.114" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.6", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.114" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6" dependencies = [ "unicode-ident", ] [[package]] name = "wasm-compose" -version = "0.244.0" +version = "0.258.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92cda9c76ca8dcac01a8b497860c2cb15cd6f216dc07060517df5abbe82512ac" +checksum = "27dc71f96d21a8b9153da9005c603f4f20d5781b7e6d2675ea0ca5def8713b75" dependencies = [ "anyhow", "heck", - "im-rc", "indexmap", "log", "petgraph", - "serde", - "serde_derive", - "serde_yaml", "smallvec", - "wasm-encoder 0.244.0", - "wasmparser 0.244.0", + "wasm-encoder 0.258.3", + "wasmparser 0.258.3", "wat", ] [[package]] name = "wasm-encoder" -version = "0.244.0" +version = "0.258.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +checksum = "f64765e43c000fae008a48db8b288e175e237fc9ce20a26586836878c1bee89f" dependencies = [ "leb128fmt", - "wasmparser 0.244.0", + "wasmparser 0.258.3", ] [[package]] name = "wasm-encoder" -version = "0.245.1" +version = "0.259.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9dca005e69bf015e45577e415b9af8c67e8ee3c0e38b5b0add5aa92581ed5c" +checksum = "b1d0246511d901aacf25d2dc9111f0054947de5e093fe662099e709ff7530dc3" dependencies = [ "leb128fmt", - "wasmparser 0.245.1", + "wasmparser 0.259.0", ] [[package]] name = "wasm-encoder" -version = "0.259.0" +version = "0.261.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d0246511d901aacf25d2dc9111f0054947de5e093fe662099e709ff7530dc3" +checksum = "2608e8bb6d67fd68f5a8d0eb1363d6e7bcbc1f8ded5a0bd3a1e382462b876b22" dependencies = [ "leb128fmt", - "wasmparser 0.259.0", + "wasmparser 0.261.0", ] [[package]] name = "wasm-metadata" -version = "0.244.0" +version = "0.258.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +checksum = "47e10808eb27efde692f1b1706089fe19296728bf872291f5b4e0d50fba88f2f" dependencies = [ "anyhow", "indexmap", - "wasm-encoder 0.244.0", - "wasmparser 0.244.0", + "wasm-encoder 0.258.3", + "wasmparser 0.258.3", ] [[package]] @@ -2242,6 +2046,18 @@ dependencies = [ "wasmparser 0.259.0", ] +[[package]] +name = "wasm-metadata" +version = "0.261.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b88de21560ecd49deb8d8f1616b9b695f66fc312c5eca503f43accdc5795339e" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder 0.261.0", + "wasmparser 0.261.0", +] + [[package]] name = "wasm-wave" version = "0.239.0" @@ -2249,28 +2065,29 @@ source = "git+https://github.com/chenyan2002/wasm-tools.git?branch=extend-wave#e dependencies = [ "indexmap", "logos", - "thiserror 2.0.18", + "thiserror 2.0.21", ] [[package]] name = "wasm-wave" -version = "0.244.0" +version = "0.258.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1c34a4c10a1b9260f8131929d680e36edf00836bb8e76524d3004522bd6f287" +checksum = "95f32f2123fc8790a3796a3648aaab8628daca0363826dce1c03bcc3a3553456" dependencies = [ + "anyhow", "logos", - "thiserror 2.0.18", - "wit-parser 0.244.0", + "thiserror 2.0.21", + "wit-parser 0.258.3", ] [[package]] name = "wasmparser" -version = "0.244.0" +version = "0.258.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +checksum = "fe9269dd817e0e7021bf534ccd9761bc2d64778b6708e41228b8439d75eaa0b1" dependencies = [ "bitflags", - "hashbrown 0.15.5", + "hashbrown 0.17.1", "indexmap", "semver", "serde", @@ -2278,20 +2095,21 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.245.1" +version = "0.259.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f08c9adee0428b7bddf3890fc27e015ac4b761cc608c822667102b8bfd6995e" +checksum = "0f7c12eac7bb587801590f6a67ff0bc84d0748513864b71108e4b311cc3df694" dependencies = [ "bitflags", + "hashbrown 0.17.1", "indexmap", "semver", ] [[package]] name = "wasmparser" -version = "0.259.0" +version = "0.261.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f7c12eac7bb587801590f6a67ff0bc84d0748513864b71108e4b311cc3df694" +checksum = "4f20f20e44f7e8aeb6744823ea9d869ede51e51be4fdaedede2852282e54d2d8" dependencies = [ "bitflags", "hashbrown 0.17.1", @@ -2301,27 +2119,27 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.244.0" +version = "0.258.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09390d7b2bd7b938e563e4bff10aa345ef2e27a3bc99135697514ef54495e68f" +checksum = "14a457ba8670a3db3d357c1aeac3ed4fe378a76054a221789f0df0ea507e292b" dependencies = [ "anyhow", "termcolor", - "wasmparser 0.244.0", + "wasmparser 0.258.3", ] [[package]] name = "wasmtime" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39bef52be4fb4c5b47d36f847172e896bc94b35c9c6a6f07117686bd16ed89a7" +checksum = "1801b9c9f91e16e352ed77656824e7c4556a7538dbfc1a50b37243f0e12ea045" dependencies = [ "addr2line", "async-trait", "bitflags", "bumpalo", + "bytes", "cc", - "cfg-if", "encoding_rs", "futures", "fxprof-processed-profile", @@ -2336,7 +2154,7 @@ dependencies = [ "postcard", "pulley-interpreter", "rayon", - "rustix 1.1.4", + "rustix", "semver", "serde", "serde_derive", @@ -2345,9 +2163,9 @@ dependencies = [ "target-lexicon", "tempfile", "wasm-compose", - "wasm-encoder 0.244.0", - "wasm-wave 0.244.0", - "wasmparser 0.244.0", + "wasm-encoder 0.258.3", + "wasm-wave 0.258.3", + "wasmparser 0.258.3", "wasmtime-environ", "wasmtime-internal-cache", "wasmtime-internal-component-macro", @@ -2359,23 +2177,24 @@ dependencies = [ "wasmtime-internal-jit-icache-coherence", "wasmtime-internal-unwinder", "wasmtime-internal-versioned-export-macros", - "wasmtime-internal-winch", "wat", "windows-sys 0.61.2", + "wit-parser 0.258.3", ] [[package]] name = "wasmtime-environ" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb637d5aa960ac391ca5a4cbf3e45807632e56beceeeb530e14dfa67fdfccc62" +checksum = "f397969b8daf208e45120036be74956e99364ce916d5b5d67f9e9f0fe40e5477" dependencies = [ "anyhow", "cpp_demangle", + "cranelift-bforest", "cranelift-bitset", "cranelift-entity", "gimli", - "hashbrown 0.15.5", + "hashbrown 0.17.1", "indexmap", "log", "object", @@ -2384,10 +2203,11 @@ dependencies = [ "semver", "serde", "serde_derive", + "sha2", "smallvec", "target-lexicon", - "wasm-encoder 0.244.0", - "wasmparser 0.244.0", + "wasm-encoder 0.258.3", + "wasmparser 0.258.3", "wasmprinter", "wasmtime-internal-component-util", "wasmtime-internal-core", @@ -2395,15 +2215,15 @@ dependencies = [ [[package]] name = "wasmtime-internal-cache" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ab6c428c610ae3e7acd25ca2681b4d23672c50d8769240d9dda99b751d4deec" +checksum = "fdf564a08f96acec55a335e3185d1df98ba3feee47e178f5bc2429e723d30d0f" dependencies = [ "base64", "directories-next", "log", "postcard", - "rustix 1.1.4", + "rustix", "serde", "serde_derive", "sha2", @@ -2415,42 +2235,43 @@ dependencies = [ [[package]] name = "wasmtime-internal-component-macro" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca768b11d5e7de017e8c3d4d444da6b4ce3906f565bcbc253d76b4ecbb5d2869" +checksum = "f47c428b868b59d51a9f77e24bff02cc321f8ec0faeba5c40f7e4c1cddd43a64" dependencies = [ "anyhow", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "wasmtime-internal-component-util", "wasmtime-internal-wit-bindgen", - "wit-parser 0.244.0", + "wit-parser 0.258.3", ] [[package]] name = "wasmtime-internal-component-util" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763f504faf96c9b409051e96a1434655eea7f56a90bed9cb1e22e22c941253fd" +checksum = "97fe14bd5ea6444a09f6baa3865559c93c91158930e7fe6d127429a9372f6165" [[package]] name = "wasmtime-internal-core" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a4a3f055a804a2f3d86e816a9df78a8fa57762212a8506164959224a40cd48" +checksum = "2053fd1d90080e502ca4ea39d86c3528587a40220b9572a874c8b742c219a00c" dependencies = [ "anyhow", + "hashbrown 0.17.1", "libm", + "serde", ] [[package]] name = "wasmtime-internal-cranelift" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55154a91d22ad51f9551124ce7fb49ddddc6a82c4910813db4c790c97c9ccf32" +checksum = "15e96d6c55401e68e40e3f74078ec96f92fe9b8a7e90e885fb87265e69eea559" dependencies = [ - "cfg-if", "cranelift-codegen", "cranelift-control", "cranelift-entity", @@ -2463,8 +2284,8 @@ dependencies = [ "pulley-interpreter", "smallvec", "target-lexicon", - "thiserror 2.0.18", - "wasmparser 0.244.0", + "thiserror 2.0.21", + "wasmparser 0.258.3", "wasmtime-environ", "wasmtime-internal-core", "wasmtime-internal-unwinder", @@ -2473,14 +2294,13 @@ dependencies = [ [[package]] name = "wasmtime-internal-fiber" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05decfad1021ad2efcca5c1be9855acb54b6ee7158ac4467119b30b7481508e3" +checksum = "1b913875bab1b78fada489e55d5e0a10b53286fb4bb09f5657212f549c9af36c" dependencies = [ "cc", - "cfg-if", "libc", - "rustix 1.1.4", + "rustix", "wasmtime-environ", "wasmtime-internal-versioned-export-macros", "windows-sys 0.61.2", @@ -2488,23 +2308,22 @@ dependencies = [ [[package]] name = "wasmtime-internal-jit-debug" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924980c50427885fd4feed2049b88380178e567768aaabf29045b02eb262eaa7" +checksum = "0356a1a09dee1239904e09e962456d9f6edfa5da61c5e3e1b0e4669710f48fba" dependencies = [ "cc", "object", - "rustix 1.1.4", + "rustix", "wasmtime-internal-versioned-export-macros", ] [[package]] name = "wasmtime-internal-jit-icache-coherence" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c57d24e8d1334a0e5a8b600286ffefa1fc4c3e8176b110dff6fbc1f43c4a599b" +checksum = "5dead9a2d7b5d835698a2e1a32006e7d0b5711f4697b24bab1564bb2488e3d7a" dependencies = [ - "cfg-if", "libc", "wasmtime-internal-core", "windows-sys 0.61.2", @@ -2512,11 +2331,10 @@ dependencies = [ [[package]] name = "wasmtime-internal-unwinder" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1a144bd4393593a868ba9df09f34a6a360cb5db6e71815f20d3f649c6e6735" +checksum = "69ffac8fc893de2958b263d9d7274cf4c531ba9ff582558348d4e28d97b8a0f2" dependencies = [ - "cfg-if", "cranelift-codegen", "log", "object", @@ -2525,66 +2343,44 @@ dependencies = [ [[package]] name = "wasmtime-internal-versioned-export-macros" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a6948b56bb00c62dbd205ea18a4f1ceccbe1e4b8479651fdb0bab2553790f20" +checksum = "9a20f0dcb6c6a006363d3f85b5c633675730487b0dc23726b2d40495872407fb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "wasmtime-internal-winch" -version = "42.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9130b3ab6fb01be80b27b9a2c84817af29ae8224094f2503d2afa9fea5bf9d00" -dependencies = [ - "cranelift-codegen", - "gimli", - "log", - "object", - "target-lexicon", - "wasmparser 0.244.0", - "wasmtime-environ", - "wasmtime-internal-cranelift", - "winch-codegen", + "syn 2.0.119", ] [[package]] name = "wasmtime-internal-wit-bindgen" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "102d0d70dbfede00e4cc9c24e86df6d32c03bf6f5ad06b5d6c76b0a4a5004c4a" +checksum = "80758f73f5f5daacd8a6d1a8513336a4f9a58d26c4f1c73eb80502cb143e2626" dependencies = [ "anyhow", "bitflags", "heck", "indexmap", - "wit-parser 0.244.0", + "wit-component 0.258.3", + "wit-parser 0.258.3", ] [[package]] name = "wasmtime-wasi" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea938f6f4f11e5ffe6d8b6f34c9a994821db9511c3e9c98e535896f27d06bb92" +checksum = "bac947c8478d8ea84ef4120d04f984012a514e493fe16fa5bb72906d7e55addb" dependencies = [ "async-trait", "bitflags", "bytes", - "cap-fs-ext", - "cap-net-ext", - "cap-rand", - "cap-std", - "cap-time-ext", - "fs-set-times", + "cap-primitives", "futures", - "io-extras", - "io-lifetimes", - "rustix 1.1.4", - "system-interface", - "thiserror 2.0.18", + "rand", + "rustix", + "rustix-linux-procfs", + "thiserror 2.0.21", "tokio", "tracing", "url", @@ -2592,13 +2388,14 @@ dependencies = [ "wasmtime-wasi-io", "wiggle", "windows-sys 0.61.2", + "winx", ] [[package]] name = "wasmtime-wasi-io" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71cb16a88d0443b509d6eca4298617233265179090abf03e0a8042b9b251e9da" +checksum = "e65d70efbe70631acbb4c6cf46eea543c75908f01e2fd09550e5a89631693304" dependencies = [ "async-trait", "bytes", @@ -2618,34 +2415,34 @@ dependencies = [ [[package]] name = "wast" -version = "245.0.1" +version = "261.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cf1149285569120b8ce39db8b465e8a2b55c34cbb586bd977e43e2bc7300bf" +checksum = "776443145731a4062e5b0d392892a2005909b6ab72d9fdc3cad53dd1a714e44a" dependencies = [ "bumpalo", "leb128fmt", "memchr", "unicode-width", - "wasm-encoder 0.245.1", + "wasm-encoder 0.261.0", ] [[package]] name = "wat" -version = "1.245.1" +version = "1.261.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd48d1679b6858988cb96b154dda0ec5bbb09275b71db46057be37332d5477be" +checksum = "a7b4d1a49ea73a8f3326e74e3a05db667001b16bd1035ed3356fc1a0ed05ca7f" dependencies = [ - "wast 245.0.1", + "wast 261.0.0", ] [[package]] name = "wiggle" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dca2bf96d20f0c70e6741cc6c8c1a9ee4c3c0310c7ad1971242628c083cc9a5" +checksum = "7f7c3a2e8ec4789bb82e4bf04b0dba44b02ce05beba6cbc6eb992b8f0b93c9cd" dependencies = [ "bitflags", - "thiserror 2.0.18", + "thiserror 2.0.21", "tracing", "wasmtime", "wasmtime-environ", @@ -2654,27 +2451,27 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0d8c016d6d3ec6dc6b8c80c23cede4ee2386ccf347d01984f7991d7659f73ef" +checksum = "761bf518bf5972dd0ddb8c3c693b6a52ed826e25d10bfae89b1368327c86030d" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "wasmtime-environ", "witx", ] [[package]] name = "wiggle-macro" -version = "42.0.1" +version = "49.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91a267096e48857096f035fffca29e22f0bbe840af4d74a6725eb695e1782110" +checksum = "0bdaa435787bc4bb662020aea37538745fc60b4629d7f37864a09195cec0e1eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "wiggle-generate", ] @@ -2709,84 +2506,12 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "winch-codegen" -version = "42.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1977857998e4dd70d26e2bfc0618a9684a2fb65b1eca174dc13f3b3e9c2159ca" -dependencies = [ - "cranelift-assembler-x64", - "cranelift-codegen", - "gimli", - "regalloc2", - "smallvec", - "target-lexicon", - "thiserror 2.0.18", - "wasmparser 0.244.0", - "wasmtime-environ", - "wasmtime-internal-core", - "wasmtime-internal-cranelift", -] - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - [[package]] name = "windows-sys" version = "0.59.0" @@ -2945,9 +2670,9 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" [[package]] name = "winx" @@ -2961,12 +2686,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.51.0" +version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro 0.51.0", -] +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] name = "wit-bindgen" @@ -2975,18 +2697,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53cb4b5556c3a791e86838ea287782bdafa704d55b0e68b5b81a3a16b9ea5f4b" dependencies = [ "bitflags", - "wit-bindgen-rust-macro 0.62.0", -] - -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck", - "wit-parser 0.244.0", + "wit-bindgen-rust-macro", ] [[package]] @@ -3000,22 +2711,6 @@ dependencies = [ "wit-parser 0.259.0", ] -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck", - "indexmap", - "prettyplease 0.2.37", - "syn 2.0.117", - "wasm-metadata 0.244.0", - "wit-bindgen-core 0.51.0", - "wit-component 0.244.0", -] - [[package]] name = "wit-bindgen-rust" version = "0.62.0" @@ -3028,25 +2723,10 @@ dependencies = [ "prettyplease 0.3.0", "syn 3.0.6", "wasm-metadata 0.259.0", - "wit-bindgen-core 0.62.0", + "wit-bindgen-core", "wit-component 0.259.0", ] -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease 0.2.37", - "proc-macro2", - "quote", - "syn 2.0.117", - "wit-bindgen-core 0.51.0", - "wit-bindgen-rust 0.51.0", -] - [[package]] name = "wit-bindgen-rust-macro" version = "0.62.0" @@ -3058,15 +2738,15 @@ dependencies = [ "proc-macro2", "quote", "syn 3.0.6", - "wit-bindgen-core 0.62.0", - "wit-bindgen-rust 0.62.0", + "wit-bindgen-core", + "wit-bindgen-rust", ] [[package]] name = "wit-component" -version = "0.244.0" +version = "0.258.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +checksum = "f0fca88950af0c1f42bc77e17315e48798b8d68340171b6d204f62bc19a878a6" dependencies = [ "anyhow", "bitflags", @@ -3075,10 +2755,10 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "wasm-encoder 0.244.0", - "wasm-metadata 0.244.0", - "wasmparser 0.244.0", - "wit-parser 0.244.0", + "wasm-encoder 0.258.3", + "wasm-metadata 0.258.3", + "wasmparser 0.258.3", + "wit-parser 0.258.3", ] [[package]] @@ -3100,13 +2780,33 @@ dependencies = [ "wit-parser 0.259.0", ] +[[package]] +name = "wit-component" +version = "0.261.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2818766842bd2321074c348fb5c15d8fdb105a9eb78374e6d77c7d4127e1f2f9" +dependencies = [ + "anyhow", + "bitflags", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder 0.261.0", + "wasm-metadata 0.261.0", + "wasmparser 0.261.0", + "wit-parser 0.261.0", +] + [[package]] name = "wit-parser" -version = "0.244.0" +version = "0.258.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +checksum = "72a2127663dcf3ee16614fb0e3c33d5c6c66fec9dad317a8b0fdd3869487a533" dependencies = [ "anyhow", + "hashbrown 0.17.1", "id-arena", "indexmap", "log", @@ -3114,8 +2814,8 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "unicode-xid", - "wasmparser 0.244.0", + "unicode-ident", + "wasmparser 0.258.3", ] [[package]] @@ -3137,6 +2837,25 @@ dependencies = [ "wasmparser 0.259.0", ] +[[package]] +name = "wit-parser" +version = "0.261.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "962e43c4db2da607b50839a531e5b63473268b40efdf8028d5c54b572ca4f6f6" +dependencies = [ + "anyhow", + "hashbrown 0.17.1", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-ident", + "wasmparser 0.261.0", +] + [[package]] name = "witx" version = "0.9.1" @@ -3151,15 +2870,15 @@ dependencies = [ [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -3168,62 +2887,42 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.6", "synstructure", ] -[[package]] -name = "zerocopy" -version = "0.8.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.6", "synstructure", ] [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" dependencies = [ "displaydoc", "yoke", @@ -3232,9 +2931,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" dependencies = [ "yoke", "zerofrom", @@ -3243,20 +2942,20 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.6", ] [[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" [[package]] name = "zstd" @@ -3269,18 +2968,18 @@ dependencies = [ [[package]] name = "zstd-safe" -version = "7.2.4" +version = "7.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +checksum = "64d80649ab6db9d9f6f9c80a40becd948eda4714a0a5ac8c4d157a32231c7882" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.16+zstd.1.5.7" +version = "2.1.0+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +checksum = "0ef0a8027ec3ee71300ab3bcbcd0393f434aa72b91ca6d635a39941deae8eea0" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index 0c87833..c76125f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ members = [ "components/debug", "components/recorder" -, "crates/dialog", "crates/trace"] +, "crates/dialog", "crates/libc-alloc", "crates/trace"] [workspace.dependencies] wit-bindgen = { version = "0.62.0", default-features = false, features = ["bitflags", "std", "macros"] } serde = { version = "1.0.226", features = ["derive"] } @@ -26,10 +26,11 @@ syn = { version = "2.0.108", features = ["visit-mut"] } tempfile = "3.20.0" wit-bindgen-core = "0.62.0" wit-bindgen-rust = "0.62.0" -wit-component = "0.259.0" +wit-component = "0.261.0" +wit-parser = "0.261.0" -wasmtime = { version = "42.0.0", features = ["wave"], optional = true } -wasmtime-wasi = { version = "42.0.0", optional = true } +wasmtime = { version = "49.0.2", features = ["wave"], optional = true } +wasmtime-wasi = { version = "49.0.2", optional = true } dialog = { path = "crates/dialog", optional = true } ctrlc = "3.5.2" diff --git a/Makefile b/Makefile index 66d4b1d..277f463 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,24 @@ .PHONY: all build-components build-cli test test-record test-fuzz test-dialog run-fuzz run-record run-dialog run-viceroy +# `make test ONE_BYTE_PAGE=1` tests with 1-byte-page memories +ifeq ($(ONE_BYTE_PAGE),1) +INSTRUMENT_FLAGS = --one-byte-page-size +WASMTIME_FLAGS = -W custom-page-sizes=y +endif +INSTRUMENT = target/release/proxy-component instrument $(INSTRUMENT_FLAGS) +WASMTIME = wasmtime $(WASMTIME_FLAGS) + all: build-components build-cli build-cli: cargo build --all-features --release +# The CLI embeds both regular and 1-byte-page builds of these components. build-components: - cargo build -p debug --target wasm32-wasip2 --release - cargo build -p recorder --target wasm32-wasip2 --release + cargo build -p debug -p recorder --target wasm32-wasip2 --release + cargo build -p debug -p recorder --target wasm32-wasip2 --release --features debug/one-byte-page,recorder/one-byte-page --target-dir target/one-byte-page cp target/wasm32-wasip2/release/debug.wasm assets/debug.wasm cp target/wasm32-wasip2/release/recorder.wasm assets/recorder.wasm + cp target/one-byte-page/wasm32-wasip2/release/debug.wasm assets/debug.one_byte_page.wasm + cp target/one-byte-page/wasm32-wasip2/release/recorder.wasm assets/recorder.one_byte_page.wasm test: test-fuzz test-record test-dialog @@ -15,22 +26,22 @@ test-fuzz: $(MAKE) run-fuzz WASM=tests/calculator.wasm $(MAKE) run-fuzz WASM=tests/wasi_http.wasm # build-only test - target/release/proxy-component instrument -m fuzz tests/rust.wasm - target/release/proxy-component instrument -m fuzz tests/go.wasm - target/release/proxy-component instrument -m fuzz tests/python.wasm + $(INSTRUMENT) -m fuzz tests/rust.wasm + $(INSTRUMENT) -m fuzz tests/go.wasm + $(INSTRUMENT) -m fuzz tests/python.wasm test-record: $(MAKE) run-record WASM=tests/go.wasm $(MAKE) run-record WASM=tests/python.wasm $(MAKE) run-record WASM=tests/rust.wasm # test the same trace with a different wasm replay - target/release/proxy-component instrument -m replay tests/rust.debug.wasm - wasmtime --invoke 'start()' composed.wasm < trace.out + $(INSTRUMENT) -m replay tests/rust.debug.wasm + $(WASMTIME) --invoke 'start()' composed.wasm < trace.out # build-only test - target/release/proxy-component instrument -m record tests/calculator.wasm - target/release/proxy-component instrument -m replay tests/calculator.wasm - target/release/proxy-component instrument -m record tests/wasi_http.wasm - target/release/proxy-component instrument -m replay tests/wasi_http.wasm + $(INSTRUMENT) -m record tests/calculator.wasm + $(INSTRUMENT) -m replay tests/calculator.wasm + $(INSTRUMENT) -m record tests/wasi_http.wasm + $(INSTRUMENT) -m replay tests/wasi_http.wasm test-dialog: rm tests/composed.wasm || true @@ -39,20 +50,20 @@ test-dialog: done run-fuzz: - target/release/proxy-component instrument -m fuzz $(WASM) - wasmtime --invoke 'start()' composed.wasm + $(INSTRUMENT) -m fuzz $(WASM) + $(WASMTIME) --invoke 'start()' composed.wasm run-record: - target/release/proxy-component instrument -m record $(WASM) + $(INSTRUMENT) -m record $(WASM) $(MAKE) run-viceroy URL=localhost:7676 - target/release/proxy-component instrument -m replay $(WASM) - wasmtime --invoke 'start()' composed.wasm < trace.out + $(INSTRUMENT) -m replay $(WASM) + $(WASMTIME) --invoke 'start()' composed.wasm < trace.out # test host replay - target/release/proxy-component instrument -m replay --use-host-recorder $(WASM) + $(INSTRUMENT) -m replay --use-host-recorder $(WASM) target/release/proxy-component run composed.wasm --invoke 'start()' --trace trace.out run-dialog: - target/release/proxy-component instrument -m dialog $(WASM) + $(INSTRUMENT) -m dialog $(WASM) # build-only # target/release/proxy-component run composed.wasm --invoke 'start()' @@ -64,4 +75,4 @@ run-viceroy: done curl $(URL) kill $$(cat viceroy.pid) || true - rm viceroy.pid \ No newline at end of file + rm viceroy.pid diff --git a/assets/debug.one_byte_page.wasm b/assets/debug.one_byte_page.wasm new file mode 100644 index 0000000..b9132d0 Binary files /dev/null and b/assets/debug.one_byte_page.wasm differ diff --git a/assets/debug.wasm b/assets/debug.wasm index 2fadde9..7afc8d4 100644 Binary files a/assets/debug.wasm and b/assets/debug.wasm differ diff --git a/assets/one_byte_page_alloc.rs b/assets/one_byte_page_alloc.rs new file mode 100644 index 0000000..69cd978 --- /dev/null +++ b/assets/one_byte_page_alloc.rs @@ -0,0 +1,69 @@ +//! Global allocator for the generated crates, which are linked with `--page-size=1`. +//! +//! std's default allocator on wasm32-unknown-unknown is dlmalloc, but its memory +//! source assumes 64 KiB pages. This uses dlmalloc with a source that grows +//! memory by bytes instead. +//! +//! Spliced into the generated `lib.rs` (inside `mod one_byte_page_alloc`) by +//! `src/codegen/mod.rs`; it is not compiled on its own. + +use core::alloc::{GlobalAlloc, Layout}; +use core::arch::wasm32::memory_grow; +use core::cell::UnsafeCell; +use core::ptr::null_mut; + +struct OneBytePage; + +unsafe impl dlmalloc::Allocator for OneBytePage { + fn alloc(&self, size: usize) -> (*mut u8, usize, u32) { + // With 1-byte pages, `memory.grow` counts bytes. + match memory_grow(0, size) { + usize::MAX => (null_mut(), 0, 0), + prev => (prev as *mut u8, size, 0), + } + } + fn remap(&self, _: *mut u8, _: usize, _: usize, _: bool) -> *mut u8 { + null_mut() + } + fn free_part(&self, _: *mut u8, _: usize, _: usize) -> bool { + false + } + fn free(&self, _: *mut u8, _: usize) -> bool { + false + } + fn can_release_part(&self, _: u32) -> bool { + false + } + fn allocates_zeros(&self) -> bool { + true + } + // Only used by dlmalloc for rounding; `alloc` accepts any size. + fn page_size(&self) -> usize { + 64 * 1024 + } +} + +struct Dlmalloc(UnsafeCell>); + +// SAFETY: wasm without atomics is single-threaded. +unsafe impl Sync for Dlmalloc {} + +unsafe impl GlobalAlloc for Dlmalloc { + unsafe fn alloc(&self, layout: Layout) -> *mut u8 { + unsafe { (*self.0.get()).malloc(layout.size(), layout.align()) } + } + unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 { + unsafe { (*self.0.get()).calloc(layout.size(), layout.align()) } + } + unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) { + unsafe { (*self.0.get()).free(ptr, layout.size(), layout.align()) } + } + unsafe fn realloc(&self, ptr: *mut u8, layout: Layout, new_size: usize) -> *mut u8 { + unsafe { (*self.0.get()).realloc(ptr, layout.size(), layout.align(), new_size) } + } +} + +#[global_allocator] +static ALLOC: Dlmalloc = Dlmalloc(UnsafeCell::new(dlmalloc::Dlmalloc::new_with_allocator( + OneBytePage, +))); diff --git a/assets/proj_cargo.toml b/assets/proj_cargo.toml index 58aa0dd..38ef8c2 100644 --- a/assets/proj_cargo.toml +++ b/assets/proj_cargo.toml @@ -11,3 +11,4 @@ path = "lib.rs" wit-bindgen.workspace = true wasm-wave.workspace = true arbitrary.workspace = true +dlmalloc.workspace = true diff --git a/assets/recorder.one_byte_page.wasm b/assets/recorder.one_byte_page.wasm new file mode 100644 index 0000000..cdb8f88 Binary files /dev/null and b/assets/recorder.one_byte_page.wasm differ diff --git a/assets/recorder.wasm b/assets/recorder.wasm index ca37010..04b77fa 100644 Binary files a/assets/recorder.wasm and b/assets/recorder.wasm differ diff --git a/assets/workspace_cargo.toml b/assets/workspace_cargo.toml index debc838..9ae1637 100644 --- a/assets/workspace_cargo.toml +++ b/assets/workspace_cargo.toml @@ -7,6 +7,7 @@ wit-bindgen = { version = "0.62.0", default-features = false, features = ["bitfl wasm-wave = { git = "https://github.com/chenyan2002/wasm-tools.git", branch = "extend-wave", version = "0.239.0", default-features = false } #wasm-wave = { path = "/Users/chenyan/src/bytecodealliance/wasm-tools/crates/wasm-wave", default-features = false } arbitrary = "1.4.2" +dlmalloc = "0.2.14" [profile.release] codegen-units = 1 diff --git a/components/debug/Cargo.toml b/components/debug/Cargo.toml index 8666812..f4d2acb 100644 --- a/components/debug/Cargo.toml +++ b/components/debug/Cargo.toml @@ -8,4 +8,9 @@ crate-type = ["cdylib"] [dependencies] wit-bindgen.workspace = true -getrandom = "0.3" \ No newline at end of file +getrandom = "0.3" +libc-alloc = { path = "../../crates/libc-alloc", optional = true } + +[features] +# Link with 1-byte wasm pages (see build.rs) +one-byte-page = ["dep:libc-alloc"] diff --git a/components/debug/build.rs b/components/debug/build.rs new file mode 100644 index 0000000..59b8a38 --- /dev/null +++ b/components/debug/build.rs @@ -0,0 +1,6 @@ +fn main() { + // Link with 1-byte wasm pages; libc-alloc's `sbrk` makes wasi-libc's malloc work with them. + if std::env::var_os("CARGO_FEATURE_ONE_BYTE_PAGE").is_some() { + println!("cargo:rustc-link-arg=--page-size=1"); + } +} diff --git a/components/debug/src/lib.rs b/components/debug/src/lib.rs index 2c8467c..a9238f7 100644 --- a/components/debug/src/lib.rs +++ b/components/debug/src/lib.rs @@ -1,3 +1,8 @@ +// Regular builds use stock wasi-libc malloc. With 1-byte pages, libc_alloc makes it work; +// either way, don't add a #[global_allocator] (see crates/libc-alloc). +#[cfg(feature = "one-byte-page")] +extern crate libc_alloc; + mod bindings { wit_bindgen::generate!({ path: "../../assets/util.wit", diff --git a/components/recorder/Cargo.toml b/components/recorder/Cargo.toml index e64a57a..2eb201e 100644 --- a/components/recorder/Cargo.toml +++ b/components/recorder/Cargo.toml @@ -10,3 +10,8 @@ crate-type = ["cdylib"] trace = { path = "../../crates/trace" } serde_json.workspace = true wit-bindgen.workspace = true +libc-alloc = { path = "../../crates/libc-alloc", optional = true } + +[features] +# Link with 1-byte wasm pages (see build.rs) +one-byte-page = ["dep:libc-alloc"] diff --git a/components/recorder/build.rs b/components/recorder/build.rs new file mode 100644 index 0000000..59b8a38 --- /dev/null +++ b/components/recorder/build.rs @@ -0,0 +1,6 @@ +fn main() { + // Link with 1-byte wasm pages; libc-alloc's `sbrk` makes wasi-libc's malloc work with them. + if std::env::var_os("CARGO_FEATURE_ONE_BYTE_PAGE").is_some() { + println!("cargo:rustc-link-arg=--page-size=1"); + } +} diff --git a/components/recorder/src/lib.rs b/components/recorder/src/lib.rs index 8566a28..7b57a36 100644 --- a/components/recorder/src/lib.rs +++ b/components/recorder/src/lib.rs @@ -1,3 +1,8 @@ +// Regular builds use stock wasi-libc malloc. With 1-byte pages, libc_alloc makes it work; +// either way, don't add a #[global_allocator] (see crates/libc-alloc). +#[cfg(feature = "one-byte-page")] +extern crate libc_alloc; + mod bindings { wit_bindgen::generate!({ path: "../../assets/recorder.wit", diff --git a/crates/libc-alloc/Cargo.toml b/crates/libc-alloc/Cargo.toml new file mode 100644 index 0000000..6ab6b85 --- /dev/null +++ b/crates/libc-alloc/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "libc-alloc" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/libc-alloc/src/lib.rs b/crates/libc-alloc/src/lib.rs new file mode 100644 index 0000000..650bc32 --- /dev/null +++ b/crates/libc-alloc/src/lib.rs @@ -0,0 +1,52 @@ +//! Makes wasi-libc's malloc work in modules linked with `--page-size=1`. +//! +//! wasi-libc's dlmalloc gets memory only through `sbrk`, and `sbrk` is the +//! only place that assumes 64 KiB wasm pages: it aborts unless the increment +//! is a multiple of 65536, and converts between pages and bytes with `<< 16`. +//! dlmalloc itself locates the heap through `__heap_base`/`__heap_end`, which +//! are byte addresses. Defining `sbrk` here keeps the linker from pulling in +//! wasi-libc's `sbrk.o`, so everything else stays stock wasi-libc. +//! +//! This keeps a single allocator for the whole module: Rust's default `System` +//! allocator calls `malloc`/`free` on wasi, and `cabi_realloc` (from std's +//! `wasip2` crate) calls `__rust_alloc`, so C code can `free()` canonical-ABI +//! buffers. Users must therefore not set a `#[global_allocator]`; just +//! `extern crate libc_alloc;`. +//! +//! Only link this into modules built with 1-byte pages (the components' +//! `one-byte-page` feature); regular builds use wasi-libc's own `sbrk`. +#![no_std] + +#[cfg(all(target_os = "wasi", target_arch = "wasm32"))] +mod imp { + use core::arch::wasm32::{memory_grow, memory_size, unreachable}; + use core::ffi::c_void; + + unsafe extern "C" { + // End of static data, in bytes. Provided by wasm-ld. + static __heap_end: u8; + } + + #[unsafe(no_mangle)] + pub unsafe extern "C" fn sbrk(increment: isize) -> *mut c_void { + // With 1-byte pages, `memory.size` (in pages) is in bytes and covers at + // least the static data. With 64 KiB pages it is far smaller than + // `__heap_end`, which means the module wasn't linked with + // `--page-size=1`; trap instead of corrupting memory. + if memory_size(0) < &raw const __heap_end as usize { + unreachable(); + } + if increment == 0 { + return memory_size(0) as *mut c_void; + } + // dlmalloc never trims (wasi-libc sets MORECORE_CANNOT_TRIM). + if increment < 0 { + unreachable(); + } + match memory_grow(0, increment as usize) { + // dlmalloc treats `(void *)-1` as failure and sets errno itself. + usize::MAX => usize::MAX as *mut c_void, + old => old as *mut c_void, + } + } +} diff --git a/src/ast.rs b/src/ast.rs index e478c34..cbdcf48 100644 --- a/src/ast.rs +++ b/src/ast.rs @@ -4,7 +4,7 @@ use crate::util::*; use anyhow::Result; use std::collections::{BTreeMap, BTreeSet}; use std::path::Path; -use wit_bindgen_core::{Files, Source, wit_parser}; +use wit_bindgen_core::{Files, Source}; use wit_component::WitPrinter; use wit_parser::*; diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index ff13656..76e1822 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -22,6 +22,8 @@ pub struct GenerateArgs { /// The path to the output file. #[arg(short, long, default_value("lib.rs"))] pub output_file: PathBuf, + #[arg(long)] + pub use_custom_allocator: bool, } #[derive(clap::ValueEnum, clap::Parser, Clone)] pub enum GenerateMode { @@ -84,7 +86,16 @@ impl GenerateArgs { let traits = trait_generator.generate(); drop(trait_generator); state.output.extend(traits); - let file = state.into_output_file(); + let mut file = state.into_output_file(); + if self.use_custom_allocator { + // dlmalloc with a memory source that grows by bytes, for `--page-size=1`. + let alloc = syn::parse_file(include_str!("../../assets/one_byte_page_alloc.rs"))?; + let items = alloc.items; + file.items.push(parse_quote! { + #[cfg(all(not(target_feature = "atomics"), target_arch = "wasm32"))] + mod one_byte_page_alloc { #(#items)* } + }); + } let output = prettyplease::unparse(&file); std::fs::write(&self.output_file, output)?; Ok(()) diff --git a/src/instrument.rs b/src/instrument.rs index a5435e4..8c2a550 100644 --- a/src/instrument.rs +++ b/src/instrument.rs @@ -4,7 +4,7 @@ use clap::Parser; use std::fs; use std::path::{Path, PathBuf}; use std::process::Command; -use wit_bindgen_core::{Files, wit_parser}; +use wit_bindgen_core::Files; use wit_component::{ComponentEncoder, embed_component_metadata}; use wit_parser::{Resolve, WorldId}; @@ -18,10 +18,16 @@ pub struct InstrumentArgs { /// Whether to use the host recorder implementation or link the recorder component #[arg(long)] pub use_host_recorder: bool, + /// Use 1-byte wasm pages for the generated and bundled components + #[arg(long)] + pub one_byte_page_size: bool, } const DEBUG_WASM: &[u8] = include_bytes!("../assets/debug.wasm"); const RECORDER_WASM: &[u8] = include_bytes!("../assets/recorder.wasm"); +// Built with `--features one-byte-page` (see Makefile `build-components`). +const DEBUG_WASM_ONE_BYTE_PAGE: &[u8] = include_bytes!("../assets/debug.one_byte_page.wasm"); +const RECORDER_WASM_ONE_BYTE_PAGE: &[u8] = include_bytes!("../assets/recorder.one_byte_page.wasm"); pub fn run(args: InstrumentArgs) -> Result<()> { if args.use_host_recorder && !matches!(args.mode, Mode::Record | Mode::Replay) { @@ -57,10 +63,27 @@ pub fn run(args: InstrumentArgs) -> Result<()> { } // 5. Generate Rust binding for both import and export interface - bindgen(&tmp_dir, &wit_dir, &args.mode, "imports", "record_imports")?; - bindgen(&tmp_dir, &wit_dir, &args.mode, "exports", "record_exports")?; + bindgen( + &tmp_dir, + &wit_dir, + &args.mode, + "imports", + "record_imports", + args.one_byte_page_size, + )?; + bindgen( + &tmp_dir, + &wit_dir, + &args.mode, + "exports", + "record_exports", + args.one_byte_page_size, + )?; // 6. cargo build let mut cmd = Command::new("cargo"); + if args.one_byte_page_size { + cmd.env("RUSTFLAGS", "-C link-arg=--page-size=1"); + } cmd.arg("build") .arg("--target=wasm32-unknown-unknown") .current_dir(tmp_dir.as_path()); @@ -77,7 +100,12 @@ pub fn run(args: InstrumentArgs) -> Result<()> { let imports = format!("import:proxy={}", imports_wasm_path.display()); let exports = format!("export:proxy={}", exports_wasm_path.display()); let root = format!("root:component={}", args.wasm_file.display()); - fs::write(tmp_dir.join("debug.wasm"), DEBUG_WASM)?; + let (debug_wasm, recorder_wasm) = if args.one_byte_page_size { + (DEBUG_WASM_ONE_BYTE_PAGE, RECORDER_WASM_ONE_BYTE_PAGE) + } else { + (DEBUG_WASM, RECORDER_WASM) + }; + fs::write(tmp_dir.join("debug.wasm"), debug_wasm)?; let debug = format!("import:debug={}/debug.wasm", tmp_dir.display()); let wac_path = tmp_dir.join("wit/compose.wac"); let mut cmd = Command::new("wac"); @@ -95,7 +123,7 @@ pub fn run(args: InstrumentArgs) -> Result<()> { .arg(output_file); if !args.use_host_recorder { let wasm_path = tmp_dir.join("recorder.wasm"); - fs::write(&wasm_path, RECORDER_WASM)?; + fs::write(&wasm_path, recorder_wasm)?; let recorder = format!("import:recorder={}", wasm_path.display()); cmd.arg("--dep").arg(&recorder); } @@ -122,6 +150,7 @@ fn bindgen( mode: &Mode, world_name: &str, dest_name: &str, + use_custom_allocator: bool, ) -> Result<()> { let out_dir = tmp_dir.join(dest_name); crate::util::generate_bindings(wit_dir, world_name, &out_dir)?; @@ -136,6 +165,7 @@ fn bindgen( bindings: binding_file.clone(), output_file: out_dir.join("lib.rs"), mode: codegen_mode, + use_custom_allocator, }; codegen_opt.generate()?; fs::rename(&binding_file, out_dir.join("bindings.rs"))?; @@ -159,8 +189,9 @@ fn component_new( &resolve, world_id, wit_component::StringEncoding::UTF8, + false, )?; - // create component from the embedded module + // create component from the embedded module. let component = ComponentEncoder::default() .module(&wasm)? .encode() diff --git a/src/run.rs b/src/run.rs index b71dc7c..3d967b2 100644 --- a/src/run.rs +++ b/src/run.rs @@ -74,6 +74,7 @@ pub fn run(args: RunArgs) -> anyhow::Result<()> { let mut config = Config::new(); config .consume_fuel(true) + .wasm_custom_page_sizes(true) //.debug_info(true) .wasm_backtrace_details(WasmBacktraceDetails::Enable); let engine = Engine::new(&config)?; @@ -159,7 +160,7 @@ fn collect_exports( .flat_map(move |(name, item)| { let mut names = basename.clone(); names.push(name.to_string()); - collect_exports(engine, item, names) + collect_exports(engine, item.ty, names) }) .collect(), CItem::ComponentInstance(c) => c @@ -167,7 +168,7 @@ fn collect_exports( .flat_map(move |(name, item)| { let mut names = basename.clone(); names.push(name.to_string()); - collect_exports(engine, item, names) + collect_exports(engine, item.ty, names) }) .collect(), _ => vec![(basename, item)], diff --git a/src/util.rs b/src/util.rs index 6e7daae..cbe5938 100644 --- a/src/util.rs +++ b/src/util.rs @@ -6,8 +6,8 @@ use std::borrow::Cow; use std::collections::{BTreeMap, BTreeSet, HashMap}; use std::path::Path; use syn::{FnArg, Ident, Item, Signature, Type, Visibility, parse_quote, visit_mut::VisitMut}; -use wit_bindgen_core::wit_parser::{PackageId, Resolve}; use wit_component::WitPrinter; +use wit_parser::{PackageId, Resolve}; pub struct FullTypePath<'a> { pub module_path: &'a [String], } @@ -496,7 +496,8 @@ pub fn extract_wit(wasm_file: &Path, out_dir: &Path) -> Result<()> { /// Generate Rust bindings from WIT definitions. /// Equivalent to `wit-bindgen rust --world --generate-all --merge-structurally-equal-types=true --out-dir `. pub fn generate_bindings(wit_dir: &Path, world_name: &str, out_dir: &Path) -> Result<()> { - use wit_bindgen_core::{Files, WorldGenerator}; + // wit-bindgen may depend on a different wit-parser version than wit-component + use wit_bindgen_core::{Files, WorldGenerator, wit_parser::Resolve}; let mut resolve = Resolve::default(); let (pkg, _) = resolve.push_dir(wit_dir)?; let world = resolve.select_world(&[pkg], Some(world_name))?;