diff --git a/Cargo.lock b/Cargo.lock index 6882128..d70c142 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,7 +8,16 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ - "gimli", + "gimli 0.32.3", +] + +[[package]] +name = "addr2line" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59317f77929f0e679d39364702289274de2f0f0b22cbf50b2b8cff2169a0b27a" +dependencies = [ + "gimli 0.33.0", ] [[package]] @@ -273,7 +282,7 @@ dependencies = [ "smol_str", "tokio", "tracing", - "wasmtime", + "wasmtime 48.0.1", ] [[package]] @@ -338,9 +347,9 @@ version = "3.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5528f85b1e134ae811704e41ef80930f56e795923f866813255bc342cc20654" dependencies = [ - "cap-primitives", + "cap-primitives 3.4.5", "cap-std", - "io-lifetimes", + "io-lifetimes 2.0.4", "windows-sys 0.52.0", ] @@ -350,7 +359,7 @@ version = "3.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20a158160765c6a7d0d8c072a53d772e4cb243f38b04bfcf6b4939cfbe7482e7" dependencies = [ - "cap-primitives", + "cap-primitives 3.4.5", "cap-std", "rustix 1.1.4", "smallvec", @@ -364,8 +373,8 @@ checksum = "b6cf3aea8a5081171859ef57bc1606b1df6999df4f1110f8eef68b30098d1d3a" dependencies = [ "ambient-authority", "fs-set-times", - "io-extras", - "io-lifetimes", + "io-extras 0.18.4", + "io-lifetimes 2.0.4", "ipnet", "maybe-owned", "rustix 1.1.4", @@ -374,6 +383,24 @@ dependencies = [ "winx", ] +[[package]] +name = "cap-primitives" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b5f74729fd2f44701d1a8eb47e906cdb3ccd9ec0f02baad85a744b791940b18" +dependencies = [ + "ambient-authority", + "fs-set-times", + "io-extras 0.19.0", + "io-lifetimes 3.0.1", + "ipnet", + "maybe-owned", + "rustix 1.1.4", + "rustix-linux-procfs", + "windows-sys 0.61.2", + "winx", +] + [[package]] name = "cap-rand" version = "3.4.5" @@ -390,9 +417,9 @@ version = "3.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6dc3090992a735d23219de5c204927163d922f42f575a0189b005c62d37549a" dependencies = [ - "cap-primitives", - "io-extras", - "io-lifetimes", + "cap-primitives 3.4.5", + "io-extras 0.18.4", + "io-lifetimes 2.0.4", "rustix 1.1.4", ] @@ -403,7 +430,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "def102506ce40c11710a9b16e614af0cde8e76ae51b1f48c04b8d79f4b671a80" dependencies = [ "ambient-authority", - "cap-primitives", + "cap-primitives 3.4.5", "iana-time-zone", "once_cell", "rustix 1.1.4", @@ -434,6 +461,17 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" 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 0.10.1", +] + [[package]] name = "chrono" version = "0.4.45" @@ -551,9 +589,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[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", ] @@ -567,30 +605,65 @@ 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.123.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +dependencies = [ + "cranelift-assembler-x64-meta 0.123.12", +] + +[[package]] +name = "cranelift-assembler-x64" +version = "0.135.1" dependencies = [ - "cranelift-assembler-x64-meta", + "cranelift-assembler-x64-meta 0.135.1", ] [[package]] name = "cranelift-assembler-x64-meta" version = "0.123.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +dependencies = [ + "cranelift-srcgen 0.123.12", +] + +[[package]] +name = "cranelift-assembler-x64-meta" +version = "0.135.1" dependencies = [ - "cranelift-srcgen", + "cranelift-srcgen 0.135.1", ] [[package]] name = "cranelift-bforest" version = "0.123.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "cranelift-entity 0.123.12", ] +[[package]] +name = "cranelift-bforest" +version = "0.135.1" +dependencies = [ + "cranelift-entity 0.135.1", + "wasmtime-internal-core", +] + [[package]] name = "cranelift-bitset" version = "0.123.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "serde", "serde_derive", @@ -598,31 +671,32 @@ dependencies = [ [[package]] name = "cranelift-bitset" -version = "0.123.12" -source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +version = "0.135.1" dependencies = [ "serde", "serde_derive", + "wasmtime-internal-core", ] [[package]] name = "cranelift-codegen" version = "0.123.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "bumpalo", - "cranelift-assembler-x64", - "cranelift-bforest", + "cranelift-assembler-x64 0.123.12", + "cranelift-bforest 0.123.12", "cranelift-bitset 0.123.12", - "cranelift-codegen-meta", - "cranelift-codegen-shared", - "cranelift-control", + "cranelift-codegen-meta 0.123.12", + "cranelift-codegen-shared 0.123.12", + "cranelift-control 0.123.12", "cranelift-entity 0.123.12", - "cranelift-isle", - "gimli", + "cranelift-isle 0.123.12", + "gimli 0.32.3", "hashbrown 0.15.5", "log", - "pulley-interpreter", - "regalloc2", + "pulley-interpreter 36.0.12", + "regalloc2 0.12.2", "rustc-hash", "serde", "smallvec", @@ -630,24 +704,78 @@ dependencies = [ "wasmtime-internal-math", ] +[[package]] +name = "cranelift-codegen" +version = "0.135.1" +dependencies = [ + "bumpalo", + "cranelift-assembler-x64 0.135.1", + "cranelift-bforest 0.135.1", + "cranelift-bitset 0.135.1", + "cranelift-codegen-meta 0.135.1", + "cranelift-codegen-shared 0.135.1", + "cranelift-control 0.135.1", + "cranelift-entity 0.135.1", + "cranelift-isle 0.135.1", + "gimli 0.33.0", + "hashbrown 0.17.1", + "libm", + "log", + "postcard", + "pulley-interpreter 48.0.1", + "regalloc2 0.15.2", + "rustc-hash", + "serde", + "serde_derive", + "sha2", + "smallvec", + "target-lexicon", + "wasmtime-internal-core", +] + [[package]] name = "cranelift-codegen-meta" version = "0.123.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +dependencies = [ + "cranelift-assembler-x64-meta 0.123.12", + "cranelift-codegen-shared 0.123.12", + "cranelift-srcgen 0.123.12", + "heck", + "pulley-interpreter 36.0.12", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.135.1" dependencies = [ - "cranelift-assembler-x64-meta", - "cranelift-codegen-shared", - "cranelift-srcgen", + "cranelift-assembler-x64-meta 0.135.1", + "cranelift-codegen-shared 0.135.1", + "cranelift-srcgen 0.135.1", "heck", - "pulley-interpreter", + "pulley-interpreter 48.0.1", ] [[package]] name = "cranelift-codegen-shared" version = "0.123.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" + +[[package]] +name = "cranelift-codegen-shared" +version = "0.135.1" [[package]] name = "cranelift-control" version = "0.123.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +dependencies = [ + "arbitrary", +] + +[[package]] +name = "cranelift-control" +version = "0.135.1" dependencies = [ "arbitrary", ] @@ -655,6 +783,7 @@ dependencies = [ [[package]] name = "cranelift-entity" version = "0.123.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "cranelift-bitset 0.123.12", "serde", @@ -663,19 +792,31 @@ dependencies = [ [[package]] name = "cranelift-entity" -version = "0.123.12" -source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +version = "0.135.1" dependencies = [ - "cranelift-bitset 0.123.12 (git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0)", + "cranelift-bitset 0.135.1", "serde", "serde_derive", + "wasmtime-internal-core", ] [[package]] name = "cranelift-frontend" version = "0.123.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +dependencies = [ + "cranelift-codegen 0.123.12", + "log", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-frontend" +version = "0.135.1" dependencies = [ - "cranelift-codegen", + "cranelift-codegen 0.135.1", + "hashbrown 0.17.1", "log", "smallvec", "target-lexicon", @@ -684,12 +825,27 @@ dependencies = [ [[package]] name = "cranelift-isle" version = "0.123.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" + +[[package]] +name = "cranelift-isle" +version = "0.135.1" [[package]] name = "cranelift-native" version = "0.123.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +dependencies = [ + "cranelift-codegen 0.123.12", + "libc", + "target-lexicon", +] + +[[package]] +name = "cranelift-native" +version = "0.135.1" dependencies = [ - "cranelift-codegen", + "cranelift-codegen 0.135.1", "libc", "target-lexicon", ] @@ -697,6 +853,11 @@ dependencies = [ [[package]] name = "cranelift-srcgen" version = "0.123.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" + +[[package]] +name = "cranelift-srcgen" +version = "0.135.1" [[package]] name = "crc32fast" @@ -910,7 +1071,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -975,7 +1136,7 @@ dependencies = [ "tempfile", "tokio", "utils", - "wasmtime", + "wasmtime 48.0.1", ] [[package]] @@ -1001,6 +1162,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "fnv" version = "1.0.7" @@ -1049,7 +1216,7 @@ version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94e7099f6313ecacbe1256e8ff9d617b75d1bcb16a6fddef94866d225a01a14a" dependencies = [ - "io-lifetimes", + "io-lifetimes 2.0.4", "rustix 1.1.4", "windows-sys 0.52.0", ] @@ -1142,25 +1309,17 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "fxprof-processed-profile" -version = "0.6.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27d12c0aed7f1e24276a241aadc4cb8ea9f83000f34bc062b7cc2d51e3b0fabd" +checksum = "25234f20a3ec0a962a61770cfe39ecf03cb529a6e474ad8cff025ed497eda557" dependencies = [ "bitflags 2.13.1", "debugid", - "fxhash", + "rustc-hash", "serde", + "serde_derive", "serde_json", ] @@ -1443,6 +1602,7 @@ dependencies = [ "cfg-if", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", ] [[package]] @@ -1456,6 +1616,18 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "gimli" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf7f043f89559805f8c7cacc432749b2fa0d0a0a9ee46ce47164ed5ba7f126c" +dependencies = [ + "fnv", + "hashbrown 0.16.1", + "indexmap", + "stable_deref_trait", +] + [[package]] name = "h2" version = "0.4.15" @@ -1514,6 +1686,11 @@ name = "hashbrown" version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "foldhash 0.2.0", + "serde", + "serde_core", +] [[package]] name = "heck" @@ -1613,8 +1790,8 @@ dependencies = [ "tracing-test", "utils", "wasi-common", - "wasmtime", - "wasmtime-wasi", + "wasmtime 48.0.1", + "wasmtime-wasi 48.0.1", "wasmtime-wasi-http", "wasmtime-wasi-nn", ] @@ -1846,16 +2023,32 @@ version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2285ddfe3054097ef4b2fe909ef8c3bcd1ea52a8f0d274416caebeef39f04a65" dependencies = [ - "io-lifetimes", + "io-lifetimes 2.0.4", "windows-sys 0.52.0", ] +[[package]] +name = "io-extras" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20fd6de4ccfcc187e38bc21cfa543cb5a302cb86a8b114eb7f0bf0dc9f8ac00f" +dependencies = [ + "io-lifetimes 3.0.1", + "windows-sys 0.60.2", +] + [[package]] name = "io-lifetimes" 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.12.0" @@ -1870,7 +2063,7 @@ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -1955,7 +2148,7 @@ dependencies = [ "smol_str", "tokio", "tracing", - "wasmtime", + "wasmtime 48.0.1", ] [[package]] @@ -2049,6 +2242,12 @@ dependencies = [ "libc", ] +[[package]] +name = "mach2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dae608c151f68243f2b000364e1f7b186d9c29845f7d2d85bd31b9ad77ad552b" + [[package]] name = "matchers" version = "0.2.0" @@ -2310,6 +2509,18 @@ dependencies = [ "memchr", ] +[[package]] +name = "object" +version = "0.39.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e5a6c098c7a3b6547378093f5cc30bc54fd361ce711e05293a5cc589562739b" +dependencies = [ + "crc32fast", + "hashbrown 0.17.1", + "indexmap", + "memchr", +] + [[package]] name = "once_cell" version = "1.21.4" @@ -2439,6 +2650,16 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap", +] + [[package]] name = "pin-project" version = "1.1.13" @@ -2529,7 +2750,7 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.25.13+spec-1.1.0", + "toml_edit", ] [[package]] @@ -2603,16 +2824,37 @@ dependencies = [ [[package]] name = "pulley-interpreter" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "cranelift-bitset 0.123.12", "log", - "pulley-macros", + "pulley-macros 36.0.12", "wasmtime-internal-math", ] +[[package]] +name = "pulley-interpreter" +version = "48.0.1" +dependencies = [ + "cranelift-bitset 0.135.1", + "log", + "pulley-macros 48.0.1", + "wasmtime-internal-core", +] + [[package]] name = "pulley-macros" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "pulley-macros" +version = "48.0.1" dependencies = [ "proc-macro2", "quote", @@ -2687,6 +2929,17 @@ dependencies = [ "rand_core 0.9.5", ] +[[package]] +name = "rand" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" +dependencies = [ + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -2725,6 +2978,12 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + [[package]] name = "rand_distr" version = "0.5.1" @@ -2777,7 +3036,7 @@ dependencies = [ name = "reactor" version = "0.21.0" dependencies = [ - "wasmtime", + "wasmtime 48.0.1", ] [[package]] @@ -2850,6 +3109,21 @@ dependencies = [ "smallvec", ] +[[package]] +name = "regalloc2" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "757712e8e61590d6d4f5d563483755538b5aa13467837a3b41cd9832509a7f85" +dependencies = [ + "allocator-api2", + "bumpalo", + "hashbrown 0.17.1", + "log", + "rustc-hash", + "serde", + "smallvec", +] + [[package]] name = "regex" version = "1.13.1" @@ -2919,14 +3193,14 @@ dependencies = [ "tracing", "utils", "wasi-common", - "wasmtime", - "wasmtime-environ 36.0.12 (git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0)", - "wasmtime-wasi", + "wasmtime 48.0.1", + "wasmtime-environ 36.0.12", + "wasmtime-wasi 48.0.1", "wasmtime-wasi-http", - "wasmtime-wasi-io 36.0.12 (git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0)", + "wasmtime-wasi-io 36.0.12", "wasmtime-wasi-nn", "wat", - "wit-component", + "wit-component 0.246.2", ] [[package]] @@ -2964,7 +3238,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.12.1", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -3165,11 +3439,11 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.9" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -3185,7 +3459,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] @@ -3359,7 +3633,7 @@ dependencies = [ "cap-fs-ext", "cap-std", "fd-lock", - "io-lifetimes", + "io-lifetimes 2.0.4", "rustix 0.38.44", "windows-sys 0.52.0", "winx", @@ -3384,10 +3658,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.3", "once_cell", "rustix 1.1.4", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -3569,23 +3843,26 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.23" +version = "0.9.12+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" dependencies = [ - "serde", + "indexmap", + "serde_core", "serde_spanned", - "toml_datetime 0.6.11", - "toml_edit 0.22.27", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 0.7.15", ] [[package]] name = "toml_datetime" -version = "0.6.11" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -3599,28 +3876,14 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.27" +version = "0.25.13+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" dependencies = [ "indexmap", - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_write", - "winnow 0.7.15", -] - -[[package]] -name = "toml_edit" -version = "0.25.13+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" -dependencies = [ - "indexmap", - "toml_datetime 1.1.1+spec-1.1.0", - "toml_parser", - "winnow 1.0.4", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.4", ] [[package]] @@ -3633,10 +3896,10 @@ dependencies = [ ] [[package]] -name = "toml_write" -version = "0.1.2" +name = "toml_writer" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" [[package]] name = "tower" @@ -3897,15 +4160,15 @@ dependencies = [ "cap-std", "cap-time-ext", "fs-set-times", - "io-extras", - "io-lifetimes", + "io-extras 0.18.4", + "io-lifetimes 2.0.4", "log", "rustix 1.1.4", "system-interface", "thiserror 2.0.19", "tracing", - "wasmtime", - "wiggle 36.0.12 (git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0)", + "wasmtime 36.0.12", + "wiggle 36.0.12", "windows-sys 0.60.2", ] @@ -3963,6 +4226,23 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-compose" +version = "0.254.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd717357bff09b5f1ea49aea8ed1cd149b0c521823a1cc70bc2ac16b90b651a" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "log", + "petgraph", + "smallvec", + "wasm-encoder 0.254.0", + "wasmparser 0.254.0", + "wat", +] + [[package]] name = "wasm-encoder" version = "0.236.1" @@ -4005,6 +4285,18 @@ dependencies = [ "wasmparser 0.246.2", ] +[[package]] +name = "wasm-metadata" +version = "0.254.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b01df5f3b4ca7881e843f3bc0fb8a3905d79c68692250dcb8e33e698705ccdb6" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder 0.254.0", + "wasmparser 0.254.0", +] + [[package]] name = "wasmparser" version = "0.236.1" @@ -4037,8 +4329,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5769a29f799fbab136aaf65b4fe5384cd7d93fe6fc9ba0dcb6c8382a1f16e27" dependencies = [ "bitflags 2.13.1", + "hashbrown 0.17.1", "indexmap", "semver", + "serde", ] [[package]] @@ -4052,11 +4346,23 @@ dependencies = [ "wasmparser 0.236.1", ] +[[package]] +name = "wasmprinter" +version = "0.254.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e3ba11e024f504698f87b629b2b66c22a1231758de7607754963f7d198be39" +dependencies = [ + "anyhow", + "termcolor", + "wasmparser 0.254.0", +] + [[package]] name = "wasmtime" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ - "addr2line", + "addr2line 0.25.1", "anyhow", "async-trait", "bitflags 2.13.1", @@ -4064,61 +4370,102 @@ dependencies = [ "cc", "cfg-if", "encoding_rs", - "fxprof-processed-profile", - "gimli", "hashbrown 0.15.5", "indexmap", - "ittapi", "libc", "log", - "mach2", + "mach2 0.4.3", "memfd", - "object", + "object 0.37.3", "once_cell", "postcard", - "pulley-interpreter", - "rayon", + "pulley-interpreter 36.0.12", "rustix 1.1.4", "semver", "serde", "serde_derive", - "serde_json", "smallvec", "target-lexicon", - "wasm-encoder 0.236.1", "wasmparser 0.236.1", "wasmtime-environ 36.0.12", "wasmtime-internal-asm-macros", - "wasmtime-internal-cache", - "wasmtime-internal-component-macro", - "wasmtime-internal-component-util", - "wasmtime-internal-cranelift", - "wasmtime-internal-fiber", - "wasmtime-internal-jit-debug", - "wasmtime-internal-jit-icache-coherence", + "wasmtime-internal-component-macro 36.0.12", + "wasmtime-internal-component-util 36.0.12", + "wasmtime-internal-cranelift 36.0.12", + "wasmtime-internal-fiber 36.0.12", + "wasmtime-internal-jit-debug 36.0.12", + "wasmtime-internal-jit-icache-coherence 36.0.12", "wasmtime-internal-math", "wasmtime-internal-slab", - "wasmtime-internal-unwinder", - "wasmtime-internal-versioned-export-macros", + "wasmtime-internal-unwinder 36.0.12", + "wasmtime-internal-versioned-export-macros 36.0.12", "wasmtime-internal-winch", - "wat", "windows-sys 0.60.2", ] +[[package]] +name = "wasmtime" +version = "48.0.1" +dependencies = [ + "addr2line 0.26.1", + "async-trait", + "bitflags 2.13.1", + "bumpalo", + "cc", + "encoding_rs", + "futures", + "fxprof-processed-profile", + "gimli 0.33.0", + "ittapi", + "libc", + "log", + "mach2 0.6.0", + "memfd", + "object 0.39.1", + "once_cell", + "postcard", + "pulley-interpreter 48.0.1", + "rayon", + "rustix 1.1.4", + "semver", + "serde", + "serde_derive", + "serde_json", + "smallvec", + "target-lexicon", + "tempfile", + "wasm-compose", + "wasm-encoder 0.254.0", + "wasmparser 0.254.0", + "wasmtime-environ 48.0.1", + "wasmtime-internal-cache", + "wasmtime-internal-component-macro 48.0.1", + "wasmtime-internal-component-util 48.0.1", + "wasmtime-internal-core", + "wasmtime-internal-cranelift 48.0.1", + "wasmtime-internal-fiber 48.0.1", + "wasmtime-internal-jit-debug 48.0.1", + "wasmtime-internal-jit-icache-coherence 48.0.1", + "wasmtime-internal-unwinder 48.0.1", + "wasmtime-internal-versioned-export-macros 48.0.1", + "wat", + "windows-sys 0.61.2", + "wit-parser 0.254.0", +] + [[package]] name = "wasmtime-environ" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "anyhow", - "cpp_demangle", "cranelift-bitset 0.123.12", "cranelift-entity 0.123.12", - "gimli", + "gimli 0.32.3", "indexmap", "log", - "object", + "object 0.37.3", "postcard", - "rustc-demangle", "semver", "serde", "serde_derive", @@ -4126,42 +4473,51 @@ dependencies = [ "target-lexicon", "wasm-encoder 0.236.1", "wasmparser 0.236.1", - "wasmprinter", - "wasmtime-internal-component-util", + "wasmprinter 0.236.1", + "wasmtime-internal-component-util 36.0.12", ] [[package]] name = "wasmtime-environ" -version = "36.0.12" -source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +version = "48.0.1" dependencies = [ "anyhow", - "cranelift-bitset 0.123.12 (git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0)", - "cranelift-entity 0.123.12 (git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0)", - "gimli", + "cpp_demangle", + "cranelift-bforest 0.135.1", + "cranelift-bitset 0.135.1", + "cranelift-entity 0.135.1", + "gimli 0.33.0", + "hashbrown 0.17.1", "indexmap", "log", - "object", + "object 0.39.1", "postcard", + "rustc-demangle", + "semver", "serde", "serde_derive", + "sha2", "smallvec", "target-lexicon", - "wasmparser 0.236.1", + "wasm-encoder 0.254.0", + "wasmparser 0.254.0", + "wasmprinter 0.254.0", + "wasmtime-internal-component-util 48.0.1", + "wasmtime-internal-core", ] [[package]] name = "wasmtime-internal-asm-macros" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-internal-cache" -version = "36.0.12" +version = "48.0.1" dependencies = [ - "anyhow", "base64", "directories-next", "log", @@ -4171,55 +4527,111 @@ dependencies = [ "serde_derive", "sha2", "toml", - "windows-sys 0.60.2", + "wasmtime-environ 48.0.1", + "windows-sys 0.61.2", "zstd", ] [[package]] name = "wasmtime-internal-component-macro" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "anyhow", "proc-macro2", "quote", "syn 2.0.119", - "wasmtime-internal-component-util", - "wasmtime-internal-wit-bindgen", + "wasmtime-internal-component-util 36.0.12", + "wasmtime-internal-wit-bindgen 36.0.12", "wit-parser 0.236.1", ] +[[package]] +name = "wasmtime-internal-component-macro" +version = "48.0.1" +dependencies = [ + "anyhow", + "proc-macro2", + "quote", + "syn 2.0.119", + "wasmtime-internal-component-util 48.0.1", + "wasmtime-internal-wit-bindgen 48.0.1", + "wit-parser 0.254.0", +] + [[package]] name = "wasmtime-internal-component-util" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" + +[[package]] +name = "wasmtime-internal-component-util" +version = "48.0.1" + +[[package]] +name = "wasmtime-internal-core" +version = "48.0.1" +dependencies = [ + "anyhow", + "hashbrown 0.17.1", + "libm", + "serde", +] [[package]] name = "wasmtime-internal-cranelift" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "anyhow", "cfg-if", - "cranelift-codegen", - "cranelift-control", + "cranelift-codegen 0.123.12", + "cranelift-control 0.123.12", "cranelift-entity 0.123.12", - "cranelift-frontend", - "cranelift-native", - "gimli", + "cranelift-frontend 0.123.12", + "cranelift-native 0.123.12", + "gimli 0.32.3", "itertools 0.14.0", "log", - "object", - "pulley-interpreter", + "object 0.37.3", + "pulley-interpreter 36.0.12", "smallvec", "target-lexicon", "thiserror 2.0.19", "wasmparser 0.236.1", "wasmtime-environ 36.0.12", "wasmtime-internal-math", - "wasmtime-internal-versioned-export-macros", + "wasmtime-internal-versioned-export-macros 36.0.12", +] + +[[package]] +name = "wasmtime-internal-cranelift" +version = "48.0.1" +dependencies = [ + "cranelift-codegen 0.135.1", + "cranelift-control 0.135.1", + "cranelift-entity 0.135.1", + "cranelift-frontend 0.135.1", + "cranelift-native 0.135.1", + "gimli 0.33.0", + "itertools 0.14.0", + "log", + "object 0.39.1", + "pulley-interpreter 48.0.1", + "smallvec", + "target-lexicon", + "thiserror 2.0.19", + "wasmparser 0.254.0", + "wasmtime-environ 48.0.1", + "wasmtime-internal-core", + "wasmtime-internal-unwinder 48.0.1", + "wasmtime-internal-versioned-export-macros 48.0.1", ] [[package]] name = "wasmtime-internal-fiber" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "anyhow", "cc", @@ -4227,23 +4639,45 @@ dependencies = [ "libc", "rustix 1.1.4", "wasmtime-internal-asm-macros", - "wasmtime-internal-versioned-export-macros", + "wasmtime-internal-versioned-export-macros 36.0.12", "windows-sys 0.60.2", ] +[[package]] +name = "wasmtime-internal-fiber" +version = "48.0.1" +dependencies = [ + "cc", + "libc", + "rustix 1.1.4", + "wasmtime-environ 48.0.1", + "wasmtime-internal-versioned-export-macros 48.0.1", + "windows-sys 0.61.2", +] + [[package]] name = "wasmtime-internal-jit-debug" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "cc", - "object", + "wasmtime-internal-versioned-export-macros 36.0.12", +] + +[[package]] +name = "wasmtime-internal-jit-debug" +version = "48.0.1" +dependencies = [ + "cc", + "object 0.39.1", "rustix 1.1.4", - "wasmtime-internal-versioned-export-macros", + "wasmtime-internal-versioned-export-macros 48.0.1", ] [[package]] name = "wasmtime-internal-jit-icache-coherence" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "anyhow", "cfg-if", @@ -4251,9 +4685,19 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "wasmtime-internal-jit-icache-coherence" +version = "48.0.1" +dependencies = [ + "libc", + "wasmtime-internal-core", + "windows-sys 0.61.2", +] + [[package]] name = "wasmtime-internal-math" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "libm", ] @@ -4261,21 +4705,42 @@ dependencies = [ [[package]] name = "wasmtime-internal-slab" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" [[package]] name = "wasmtime-internal-unwinder" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "anyhow", "cfg-if", - "cranelift-codegen", "log", - "object", + "object 0.37.3", +] + +[[package]] +name = "wasmtime-internal-unwinder" +version = "48.0.1" +dependencies = [ + "cranelift-codegen 0.135.1", + "log", + "object 0.39.1", + "wasmtime-environ 48.0.1", ] [[package]] name = "wasmtime-internal-versioned-export-macros" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "wasmtime-internal-versioned-export-macros" +version = "48.0.1" dependencies = [ "proc-macro2", "quote", @@ -4285,21 +4750,23 @@ dependencies = [ [[package]] name = "wasmtime-internal-winch" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "anyhow", - "cranelift-codegen", - "gimli", - "object", + "cranelift-codegen 0.123.12", + "gimli 0.32.3", + "object 0.37.3", "target-lexicon", "wasmparser 0.236.1", "wasmtime-environ 36.0.12", - "wasmtime-internal-cranelift", + "wasmtime-internal-cranelift 36.0.12", "winch-codegen", ] [[package]] name = "wasmtime-internal-wit-bindgen" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "anyhow", "bitflags 2.13.1", @@ -4308,9 +4775,22 @@ dependencies = [ "wit-parser 0.236.1", ] +[[package]] +name = "wasmtime-internal-wit-bindgen" +version = "48.0.1" +dependencies = [ + "anyhow", + "bitflags 2.13.1", + "heck", + "indexmap", + "wit-component 0.254.0", + "wit-parser 0.254.0", +] + [[package]] name = "wasmtime-wasi" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "anyhow", "async-trait", @@ -4323,20 +4803,42 @@ dependencies = [ "cap-time-ext", "fs-set-times", "futures", - "io-extras", - "io-lifetimes", + "io-extras 0.18.4", + "io-lifetimes 2.0.4", "rustix 1.1.4", "system-interface", "thiserror 2.0.19", "tokio", "tracing", "url", - "wasmtime", + "wasmtime 36.0.12", "wasmtime-wasi-io 36.0.12", - "wiggle 36.0.12", "windows-sys 0.60.2", ] +[[package]] +name = "wasmtime-wasi" +version = "48.0.1" +dependencies = [ + "async-trait", + "bitflags 2.13.1", + "bytes", + "cap-primitives 4.0.3", + "futures", + "rand 0.10.2", + "rustix 1.1.4", + "rustix-linux-procfs", + "thiserror 2.0.19", + "tokio", + "tracing", + "url", + "wasmtime 48.0.1", + "wasmtime-wasi-io 48.0.1", + "wiggle 48.0.1", + "windows-sys 0.61.2", + "winx", +] + [[package]] name = "wasmtime-wasi-http" version = "36.0.12" @@ -4354,40 +4856,39 @@ dependencies = [ "tokio", "tokio-rustls", "tracing", - "wasmtime", - "wasmtime-wasi", - "wasmtime-wasi-io 36.0.12 (git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0)", + "wasmtime 36.0.12", + "wasmtime-wasi 36.0.12", + "wasmtime-wasi-io 36.0.12", "webpki-roots 0.26.11", ] [[package]] name = "wasmtime-wasi-io" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "anyhow", "async-trait", "bytes", "futures", - "wasmtime", + "wasmtime 36.0.12", ] [[package]] name = "wasmtime-wasi-io" -version = "36.0.12" -source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +version = "48.0.1" dependencies = [ - "anyhow", "async-trait", "bytes", "futures", - "wasmtime", + "tracing", + "wasmtime 48.0.1", ] [[package]] name = "wasmtime-wasi-nn" -version = "36.0.12" +version = "48.0.1" dependencies = [ - "anyhow", "candle-core", "candle-nn", "candle-transformers", @@ -4395,8 +4896,8 @@ dependencies = [ "thiserror 2.0.19", "tracing", "walkdir", - "wasmtime", - "wiggle 36.0.12", + "wasmtime 48.0.1", + "wiggle 48.0.1", "windows", ] @@ -4452,33 +4953,33 @@ dependencies = [ [[package]] name = "wiggle" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "anyhow", "async-trait", "bitflags 2.13.1", "thiserror 2.0.19", "tracing", - "wasmtime", + "wasmtime 36.0.12", "wiggle-macro 36.0.12", ] [[package]] name = "wiggle" -version = "36.0.12" -source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +version = "48.0.1" dependencies = [ - "anyhow", - "async-trait", "bitflags 2.13.1", "thiserror 2.0.19", "tracing", - "wasmtime", - "wiggle-macro 36.0.12 (git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0)", + "wasmtime 48.0.1", + "wasmtime-environ 48.0.1", + "wiggle-macro 48.0.1", ] [[package]] name = "wiggle-generate" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "anyhow", "heck", @@ -4490,20 +4991,20 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "36.0.12" -source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +version = "48.0.1" dependencies = [ - "anyhow", "heck", "proc-macro2", "quote", "syn 2.0.119", + "wasmtime-environ 48.0.1", "witx", ] [[package]] name = "wiggle-macro" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "proc-macro2", "quote", @@ -4513,13 +5014,12 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "36.0.12" -source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" +version = "48.0.1" dependencies = [ "proc-macro2", "quote", "syn 2.0.119", - "wiggle-generate 36.0.12 (git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0)", + "wiggle-generate 48.0.1", ] [[package]] @@ -4544,7 +5044,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -4556,18 +5056,19 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" version = "36.0.12" +source = "git+https://github.com/G-Core/wasmtime.git?branch=release-36.0.0#62166f65ac52a1f164419097a2a533ff50e4d07b" dependencies = [ "anyhow", - "cranelift-assembler-x64", - "cranelift-codegen", - "gimli", - "regalloc2", + "cranelift-assembler-x64 0.123.12", + "cranelift-codegen 0.123.12", + "gimli 0.32.3", + "regalloc2 0.12.2", "smallvec", "target-lexicon", "thiserror 2.0.19", "wasmparser 0.236.1", "wasmtime-environ 36.0.12", - "wasmtime-internal-cranelift", + "wasmtime-internal-cranelift 36.0.12", "wasmtime-internal-math", ] @@ -4834,9 +5335,6 @@ name = "winnow" version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] [[package]] name = "winnow" @@ -4877,11 +5375,30 @@ dependencies = [ "serde_derive", "serde_json", "wasm-encoder 0.246.2", - "wasm-metadata", + "wasm-metadata 0.246.2", "wasmparser 0.246.2", "wit-parser 0.246.2", ] +[[package]] +name = "wit-component" +version = "0.254.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0e65bb94c369b3c4741ce3d1d2704b1fec93db7c540df0e521a097e7ceeb5be" +dependencies = [ + "anyhow", + "bitflags 2.13.1", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder 0.254.0", + "wasm-metadata 0.254.0", + "wasmparser 0.254.0", + "wit-parser 0.254.0", +] + [[package]] name = "wit-parser" version = "0.236.1" @@ -4919,6 +5436,25 @@ dependencies = [ "wasmparser 0.246.2", ] +[[package]] +name = "wit-parser" +version = "0.254.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1655131e4f7d3f0cb141f6eca71315ca40eff0f3d4de7cff0a82bacedd8c89b4" +dependencies = [ + "anyhow", + "hashbrown 0.17.1", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-ident", + "wasmparser 0.254.0", +] + [[package]] name = "witx" version = "0.9.1" diff --git a/crates/http-service/src/executor/http.rs b/crates/http-service/src/executor/http.rs index 880b043..d74b675 100644 --- a/crates/http-service/src/executor/http.rs +++ b/crates/http-service/src/executor/http.rs @@ -283,6 +283,8 @@ mod tests { fn count_kv_read(&self, _value: i32) {} fn count_kv_byod_read(&self, _value: i32) {} + + fn count_kv_read_cached(&self) {} } impl UserDiagStats for TestStats { @@ -354,6 +356,7 @@ mod tests { &self, _request_id: &SmolStr, _app: &SmolStr, + _caller_ip: std::net::Ipv4Addr, _cfg: &App, ) -> Arc { Arc::new(TestStats) diff --git a/crates/http-service/src/lib.rs b/crates/http-service/src/lib.rs index db64351..e9e46f4 100644 --- a/crates/http-service/src/lib.rs +++ b/crates/http-service/src/lib.rs @@ -359,7 +359,15 @@ where } }; - let stats = self.context.new_stats_row(&traceparent, &app_name, &cfg); + let caller_ip = request + .headers() + .get(crate::executor::X_REAL_IP) + .and_then(|v| v.to_str().ok()) + .and_then(|v| v.parse::().ok()) + .unwrap_or(std::net::Ipv4Addr::UNSPECIFIED); + let stats = self + .context + .new_stats_row(&traceparent, &app_name, caller_ip, &cfg); let response = match executor.execute(request, stats.clone()).await { Ok(mut response) => { diff --git a/crates/http-service/src/state.rs b/crates/http-service/src/state.rs index 97815ef..ad62f6f 100644 --- a/crates/http-service/src/state.rs +++ b/crates/http-service/src/state.rs @@ -236,6 +236,7 @@ mod tests { impl ReadStats for TestStats { fn count_kv_read(&self, _value: i32) {} fn count_kv_byod_read(&self, _value: i32) {} + fn count_kv_read_cached(&self) {} } impl UserDiagStats for TestStats { fn set_user_diag(&self, _diag: &str) {} diff --git a/crates/key-value-store/Cargo.toml b/crates/key-value-store/Cargo.toml index 5b5f144..168ad06 100644 --- a/crates/key-value-store/Cargo.toml +++ b/crates/key-value-store/Cargo.toml @@ -8,16 +8,17 @@ description = "key-value store host function" [features] default = [] -redis = ["dep:redis"] +redis = ["dep:redis", "dep:tokio"] [dependencies] reactor = { path = "../reactor" } -wasmtime = {workspace = true} +wasmtime = { workspace = true } slab = "0.4" async-trait = "0.1" -smol_str = {workspace = true} +smol_str = { workspace = true } tracing = "0.1" -redis = { version = "1.2", features = ["aio", "tokio-comp", "connection-manager", "tokio-native-tls-comp"], optional = true} +tokio = { workspace = true, optional = true } +redis = { version = "1.2", features = ["aio", "tokio-comp", "connection-manager", "tokio-native-tls-comp"], optional = true } [dev-dependencies] tokio = { version = "1", features = ["macros", "rt-multi-thread"] } diff --git a/crates/key-value-store/src/lib.rs b/crates/key-value-store/src/lib.rs index 05d4336..cff4c1f 100644 --- a/crates/key-value-store/src/lib.rs +++ b/crates/key-value-store/src/lib.rs @@ -13,10 +13,28 @@ pub use key_value::{Error, Value}; #[cfg(feature = "redis")] pub use redis_impl::RedisStore; +/// Outcome of a [`Store::get_tracked`] call: the value plus where it came from. +pub struct GetOutcome { + pub value: Option, + /// `true` when the value was served from an in-process cache instead of + /// the backing store. + pub from_cache: bool, +} + #[async_trait::async_trait] pub trait Store: Sync + Send { async fn get(&self, key: &str) -> Result, Error>; + /// Like [`Store::get`], but also reports whether the value was served from + /// an in-process cache. Layers that do not cache inherit this default, + /// which delegates to [`Store::get`] and reports a backing-store read. + async fn get_tracked(&self, key: &str) -> Result { + Ok(GetOutcome { + value: self.get(key).await?, + from_cache: false, + }) + } + async fn zrange_by_score( &self, key: &str, @@ -47,6 +65,10 @@ pub trait ReadStats: Sync + Send { fn count_kv_read(&self, value: i32); /// Increment key-value read count and size for BYOD fn count_kv_byod_read(&self, value: i32); + /// Increment the count of reads served from the in-process cache. Counted + /// in addition to [`ReadStats::count_kv_read`] / + /// [`ReadStats::count_kv_byod_read`], so it is a subset of the total reads. + fn count_kv_read_cached(&self); } #[derive(Clone)] @@ -367,6 +389,8 @@ mod tests { self.byod_reads .fetch_add(value, std::sync::atomic::Ordering::Relaxed); } + + fn count_kv_read_cached(&self) {} } // Mock implementation of StoreManager diff --git a/crates/key-value-store/src/redis_impl.rs b/crates/key-value-store/src/redis_impl.rs index e564100..6ea80fd 100644 --- a/crates/key-value-store/src/redis_impl.rs +++ b/crates/key-value-store/src/redis_impl.rs @@ -16,6 +16,43 @@ const REDIS_CONNECTION_TIMEOUT: Duration = Duration::from_millis(100); const REDIS_NUMBER_OF_RETRIES: usize = 2; const REDIS_MAX_RECONNECT_DELAY: Duration = Duration::from_millis(100); +/// Retry budget for a single read command (on top of connection-manager +/// reconnection above). Kept small and fixed for the same reason as the +/// timeouts: Redis is on the request hot path, so a retry loop must have a +/// bounded worst case rather than let a stalled dependency pile up requests. +const REDIS_READ_RETRIES: usize = 2; +const REDIS_READ_RETRY_BASE_DELAY: Duration = Duration::from_millis(10); +const REDIS_READ_RETRY_MAX_DELAY: Duration = Duration::from_millis(50); + +fn redis_read_retry_delay(attempt: usize) -> Duration { + let scale = 1u32 << (attempt.saturating_sub(1) as u32); + (REDIS_READ_RETRY_BASE_DELAY * scale).min(REDIS_READ_RETRY_MAX_DELAY) +} + +/// Retry a read command up to `REDIS_READ_RETRIES` times with capped +/// exponential backoff. `op` is re-invoked from scratch on each attempt so it +/// can pick a fresh pooled connection (used by `get`/`zrange_by_score`/ +/// `bf_exists`; `scan`/`zscan` retry the same connection since their iterator +/// borrows it across the loop). +async fn retry_read(mut op: F) -> Result +where + F: FnMut() -> Fut, + Fut: std::future::Future>, +{ + let mut attempt = 0; + loop { + match op().await { + Ok(value) => return Ok(value), + Err(error) if attempt < REDIS_READ_RETRIES => { + attempt += 1; + tracing::debug!(attempt, cause = ?error, "kv-store: redis read retry"); + tokio::time::sleep(redis_read_retry_delay(attempt)).await; + } + Err(error) => return Err(error), + } + } +} + /// Build the fail-fast connection-manager config for KV-store Redis connections. fn connection_manager_config() -> ConnectionManagerConfig { ConnectionManagerConfig::new() @@ -78,10 +115,12 @@ impl RedisStore { #[async_trait::async_trait] impl Store for RedisStore { async fn get(&self, key: &str) -> Result, Error> { - self.conn().get(key).await.map_err(|error| { - tracing::warn!(cause = ?error, key, "kv-store: redis get"); - Error::InternalError - }) + retry_read(|| async { self.conn().get(key).await }) + .await + .map_err(|error| { + tracing::warn!(cause = ?error, key, "kv-store: redis get"); + Error::InternalError + }) } async fn zrange_by_score( @@ -90,8 +129,7 @@ impl Store for RedisStore { min: f64, max: f64, ) -> Result, Error> { - self.conn() - .zrangebyscore_withscores(key, min, max) + retry_read(|| async { self.conn().zrangebyscore_withscores(key, min, max).await }) .await .map_err(|error| { tracing::warn!(cause = ?error, key, min, max, "kv-store: redis zrangebyscore"); @@ -101,10 +139,21 @@ impl Store for RedisStore { async fn scan(&self, pattern: &str) -> Result, Error> { let mut conn = self.conn(); - let mut it = conn.scan_match(pattern).await.map_err(|error| { - tracing::warn!(cause = ?error, pattern, "kv-store: redis scan_match"); - Error::InternalError - })?; + let mut attempt = 0; + let mut it = loop { + match conn.scan_match(pattern).await { + Ok(it) => break it, + Err(error) if attempt < REDIS_READ_RETRIES => { + attempt += 1; + tracing::debug!(attempt, cause = ?error, pattern, "kv-store: redis scan_match retry"); + tokio::time::sleep(redis_read_retry_delay(attempt)).await; + } + Err(error) => { + tracing::warn!(cause = ?error, pattern, "kv-store: redis scan_match"); + return Err(Error::InternalError); + } + } + }; let mut ret = vec![]; while let Some(element) = it.next_item().await { ret.push(element.map_err(|error| { @@ -117,11 +166,21 @@ impl Store for RedisStore { async fn zscan(&self, key: &str, pattern: &str) -> Result, Error> { let mut conn = self.conn(); - let mut it: AsyncIter<(Value, f64)> = - conn.zscan_match(key, pattern).await.map_err(|error| { - tracing::warn!(cause = ?error, key, pattern, "kv-store: redis zscan_match"); - Error::InternalError - })?; + let mut attempt = 0; + let mut it: AsyncIter<(Value, f64)> = loop { + match conn.zscan_match(key, pattern).await { + Ok(it) => break it, + Err(error) if attempt < REDIS_READ_RETRIES => { + attempt += 1; + tracing::debug!(attempt, cause = ?error, key, pattern, "kv-store: redis zscan_match retry"); + tokio::time::sleep(redis_read_retry_delay(attempt)).await; + } + Err(error) => { + tracing::warn!(cause = ?error, key, pattern, "kv-store: redis zscan_match"); + return Err(Error::InternalError); + } + } + }; let mut ret = vec![]; while let Some(element) = it.next_item().await { ret.push(element.map_err(|error| { @@ -133,14 +192,17 @@ impl Store for RedisStore { } async fn bf_exists(&self, key: &str, item: &str) -> Result { - redis::cmd("BF.EXISTS") - .arg(key) - .arg(item) - .query_async(&mut self.conn()) - .await - .map_err(|error| { - tracing::warn!(cause = ?error, key, item, "kv-store: redis bf_exists"); - Error::InternalError - }) + retry_read(|| async { + redis::cmd("BF.EXISTS") + .arg(key) + .arg(item) + .query_async(&mut self.conn()) + .await + }) + .await + .map_err(|error| { + tracing::warn!(cause = ?error, key, item, "kv-store: redis bf_exists"); + Error::InternalError + }) } } diff --git a/crates/runtime/src/lib.rs b/crates/runtime/src/lib.rs index d195e71..bdbcb6e 100644 --- a/crates/runtime/src/lib.rs +++ b/crates/runtime/src/lib.rs @@ -1,6 +1,7 @@ use crate::app::KvStoreOption; use crate::store::HasStats; use http_backend::stats::ExtStatsTimer; +use std::net::Ipv4Addr; use std::sync::Arc; use std::sync::atomic::{AtomicU64, Ordering}; use std::time::Instant; @@ -433,6 +434,7 @@ pub trait ContextT { &self, request_id: &SmolStr, app: &SmolStr, + caller_ip: Ipv4Addr, cfg: &App, ) -> Arc; } diff --git a/crates/runtime/src/store.rs b/crates/runtime/src/store.rs index 0435c92..e36f915 100644 --- a/crates/runtime/src/store.rs +++ b/crates/runtime/src/store.rs @@ -616,6 +616,7 @@ mod tests { impl ReadStats for NoStats { fn count_kv_read(&self, _: i32) {} fn count_kv_byod_read(&self, _: i32) {} + fn count_kv_read_cached(&self) {} } impl UserDiagStats for NoStats { fn set_user_diag(&self, _: &str) {} diff --git a/crates/runtime/src/util/stats.rs b/crates/runtime/src/util/stats.rs index b4a7cfa..ca5abd2 100644 --- a/crates/runtime/src/util/stats.rs +++ b/crates/runtime/src/util/stats.rs @@ -144,6 +144,8 @@ mod tests { fn count_kv_byod_read(&self, value: i32) { self.byod_reads.fetch_add(value, Ordering::Relaxed); } + + fn count_kv_read_cached(&self) {} } impl UserDiagStats for MockStatsVisitor { diff --git a/src/context.rs b/src/context.rs index 1a9a990..ab93365 100644 --- a/src/context.rs +++ b/src/context.rs @@ -94,6 +94,7 @@ impl ContextT for Context { &self, _request_id: &SmolStr, _app: &SmolStr, + _caller_ip: std::net::Ipv4Addr, _cfg: &App, ) -> Arc { Arc::new(StatsStub::default()) @@ -190,6 +191,8 @@ impl ReadStats for StatsStub { fn count_kv_read(&self, _value: i32) {} fn count_kv_byod_read(&self, _value: i32) {} + + fn count_kv_read_cached(&self) {} } impl UserDiagStats for StatsStub { diff --git a/src/key_value.rs b/src/key_value.rs index 47f5250..183636d 100644 --- a/src/key_value.rs +++ b/src/key_value.rs @@ -32,6 +32,7 @@ mod tests { impl ReadStats for NoOpStats { fn count_kv_read(&self, _: i32) {} fn count_kv_byod_read(&self, _: i32) {} + fn count_kv_read_cached(&self) {} } fn make_kv_option(name: &str, param: &str) -> KvStoreOption {