From 4f3530be77f8e993a649160c44df4c43a8e10cba Mon Sep 17 00:00:00 2001 From: Roman Volosatovs Date: Wed, 26 Feb 2025 11:29:53 +0100 Subject: [PATCH] chore: update to Wasmtime 30 Signed-off-by: Roman Volosatovs --- Cargo.lock | 360 ++++++++++++++++++----------- Cargo.toml | 10 +- benches/bench.rs | 19 +- crates/runtime-wasmtime/src/lib.rs | 14 +- crates/wasmtime-cli/src/lib.rs | 18 +- 5 files changed, 255 insertions(+), 166 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 00acfdcc5..1dcfdbe78 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -38,6 +38,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "ambient-authority" version = "0.0.2" @@ -410,6 +416,9 @@ name = "bumpalo" version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +dependencies = [ + "allocator-api2", +] [[package]] name = "byteorder" @@ -435,7 +444,7 @@ dependencies = [ "cap-primitives", "cap-std", "io-lifetimes", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -463,7 +472,7 @@ dependencies = [ "ipnet", "maybe-owned", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", "winx", ] @@ -689,20 +698,35 @@ dependencies = [ "libc", ] +[[package]] +name = "cranelift-assembler-x64" +version = "0.117.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b83fcf2fc1c8954561490d02079b496fd0c757da88129981e15bfe3a548229" +dependencies = [ + "cranelift-assembler-x64-meta", +] + +[[package]] +name = "cranelift-assembler-x64-meta" +version = "0.117.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7496a6e92b5cee48c5d772b0443df58816dee30fed6ba19b2a28e78037ecedf" + [[package]] name = "cranelift-bforest" -version = "0.114.0" +version = "0.117.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ba4f80548f22dc9c43911907b5e322c5555544ee85f785115701e6a28c9abe1" +checksum = "73a9dc0a8d3d49ee772101924968830f1c1937d650c571d3c2dd69dc36a68f41" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-bitset" -version = "0.114.0" +version = "0.117.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "005884e3649c3e5ff2dc79e8a94b138f11569cc08a91244a292714d2a86e9156" +checksum = "573c641174c40ef31021ae4a5a3ad78974e280633502d0dfc6e362385e0c100f" dependencies = [ "serde", "serde_derive", @@ -710,11 +734,12 @@ dependencies = [ [[package]] name = "cranelift-codegen" -version = "0.114.0" +version = "0.117.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4036255ec33ce9a37495dfbcfc4e1118fd34e693eff9a1e106336b7cd16a9b" +checksum = "2d7c94d572615156f2db682181cadbd96342892c31e08cc26a757344319a9220" dependencies = [ "bumpalo", + "cranelift-assembler-x64", "cranelift-bforest", "cranelift-bitset", "cranelift-codegen-meta", @@ -723,8 +748,9 @@ dependencies = [ "cranelift-entity", "cranelift-isle", "gimli", - "hashbrown 0.14.5", + "hashbrown 0.15.2", "log", + "pulley-interpreter", "regalloc2", "rustc-hash", "serde", @@ -734,33 +760,35 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.114.0" +version = "0.117.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7ca74f4b68319da11d39e894437cb6e20ec7c2e11fbbda823c3bf207beedff7" +checksum = "beecd9fcf2c3e06da436d565de61a42676097ea6eb6b4499346ac6264b6bb9ce" dependencies = [ + "cranelift-assembler-x64", "cranelift-codegen-shared", + "pulley-interpreter", ] [[package]] name = "cranelift-codegen-shared" -version = "0.114.0" +version = "0.117.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897e54f433a0269c4187871aa06d452214d5515d228d5bdc22219585e9eef895" +checksum = "0f4ff8d2e1235f2d6e7fc3c6738be6954ba972cd295f09079ebffeca2f864e22" [[package]] name = "cranelift-control" -version = "0.114.0" +version = "0.117.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29cb4018f5bf59fb53f515fa9d80e6f8c5ce19f198dc538984ebd23ecf8965ec" +checksum = "001312e9fbc7d9ca9517474d6fe71e29d07e52997fd7efe18f19e8836446ceb2" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.114.0" +version = "0.117.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305399fd781a2953ac78c1396f02ff53144f39c33eb7fc7789cf4e8936d13a96" +checksum = "eb0fd6d4aae680275fcbceb08683416b744e65c8b607352043d3f0951d72b3b2" dependencies = [ "cranelift-bitset", "serde", @@ -769,9 +797,9 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.114.0" +version = "0.117.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9230b460a128d53653456137751d27baf567947a3ab8c0c4d6e31fd08036d81e" +checksum = "9fd44e7e5dcea20ca104d45894748205c51365ce4cdb18f4418e3ba955971d1b" dependencies = [ "cranelift-codegen", "log", @@ -781,15 +809,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.114.0" +version = "0.117.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b961e24ae3ec9813a24a15ae64bbd2a42e4de4d79a7f3225a412e3b94e78d1c8" +checksum = "f900e0a3847d51eed0321f0777947fb852ccfce0da7fb070100357f69a2f37fc" [[package]] name = "cranelift-native" -version = "0.114.0" +version = "0.117.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5bd76df6c9151188dfa428c863b33da5b34561b67f43c0cf3f24a794f9fa1f" +checksum = "7617f13f392ebb63c5126258aca8b8eca739636ca7e4eeee301d3eff68489a6a" dependencies = [ "cranelift-codegen", "libc", @@ -1085,7 +1113,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1146,7 +1174,7 @@ checksum = "5e2e6123af26f0f2c51cc66869137080199406754903cc926a7690401ce09cb4" dependencies = [ "io-lifetimes", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1361,7 +1389,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", - "serde", ] [[package]] @@ -1371,6 +1398,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ "foldhash", + "serde", ] [[package]] @@ -1853,7 +1881,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2285ddfe3054097ef4b2fe909ef8c3bcd1ea52a8f0d274416caebeef39f04a65" dependencies = [ "io-lifetimes", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2000,6 +2028,12 @@ dependencies = [ "tracing", ] +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" version = "0.2.168" @@ -2426,13 +2460,13 @@ dependencies = [ [[package]] name = "pulley-interpreter" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3b8d81cf799e20564931e9867ca32de545188c6ee4c2e0f6e41d32f0c7dc6fb" +checksum = "cb0ecb9823083f71df8735f21f6c44f2f2b55986d674802831df20f27e26c907" dependencies = [ "cranelift-bitset", "log", - "sptr", + "wasmtime-math", ] [[package]] @@ -2485,7 +2519,7 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2605,14 +2639,15 @@ dependencies = [ [[package]] name = "regalloc2" -version = "0.10.2" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12908dbeb234370af84d0579b9f68258a0f67e201412dd9a2814e6f45b2fc0f0" +checksum = "145c1c267e14f20fb0f88aa76a1c5ffec42d592c1d28b3cd9148ae35916158d3" dependencies = [ - "hashbrown 0.14.5", + "allocator-api2", + "bumpalo", + "hashbrown 0.15.2", "log", "rustc-hash", - "slice-group-by", "smallvec", ] @@ -2757,9 +2792,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.42" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ "bitflags 2.8.0", "errno", @@ -2767,7 +2802,7 @@ dependencies = [ "libc", "linux-raw-sys", "once_cell", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3101,12 +3136,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "slice-group-by" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" - [[package]] name = "smallvec" version = "1.13.2" @@ -3277,15 +3306,15 @@ dependencies = [ "fd-lock", "io-lifetimes", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", "winx", ] [[package]] name = "target-lexicon" -version = "0.12.16" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" +checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a" [[package]] name = "tempfile" @@ -3297,7 +3326,7 @@ dependencies = [ "fastrand", "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3700,6 +3729,17 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "trait-variant" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "try-lock" version = "0.2.5" @@ -4012,9 +4052,9 @@ dependencies = [ [[package]] name = "wasi-preview1-component-adapter-provider" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852f574fc56f03164308b47594d105d188534784f5338d96a8726605cb558f66" +checksum = "ddbd7f2a9e3635abe5d4df93b12cadc8d6818079785ee4fab3719ae3c85a064e" [[package]] name = "wasm-bindgen" @@ -4085,32 +4125,42 @@ checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasm-encoder" -version = "0.219.1" +version = "0.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29cbbd772edcb8e7d524a82ee8cef8dd046fc14033796a754c3ad246d019fa54" +checksum = "ebf48234b389415b226a4daef6562933d38c7b28a8b8f64c5c4130dad1561ab7" dependencies = [ "leb128", - "wasmparser 0.219.1", + "wasmparser 0.220.0", ] [[package]] name = "wasm-encoder" -version = "0.220.0" +version = "0.221.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebf48234b389415b226a4daef6562933d38c7b28a8b8f64c5c4130dad1561ab7" +checksum = "c17a3bd88f2155da63a1f2fcb8a56377a24f0b6dfed12733bb5f544e86f690c5" dependencies = [ "leb128", - "wasmparser 0.220.0", + "wasmparser 0.221.3", ] [[package]] name = "wasm-encoder" -version = "0.221.2" +version = "0.224.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17a3bd88f2155da63a1f2fcb8a56377a24f0b6dfed12733bb5f544e86f690c5" +checksum = "1ab7a13a23790fe91ea4eb7526a1f3131001d874e3e00c2976c48861f2e82920" dependencies = [ "leb128", - "wasmparser 0.221.3", + "wasmparser 0.224.1", +] + +[[package]] +name = "wasm-encoder" +version = "0.226.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d81b727619aec227dce83e7f7420d4e56c79acd044642a356ea045b98d4e13" +dependencies = [ + "leb128fmt", + "wasmparser 0.226.0", ] [[package]] @@ -4160,59 +4210,69 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.219.1" +version = "0.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c771866898879073c53b565a6c7b49953795159836714ac56a5befb581227c5" +checksum = "e246c2772ce3ebc83f89a2d4487ac5794cad6c309b2071818a88c7db7c36d87b" dependencies = [ "ahash", "bitflags 2.8.0", "hashbrown 0.14.5", "indexmap", "semver", - "serde", ] [[package]] name = "wasmparser" -version = "0.220.0" +version = "0.221.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e246c2772ce3ebc83f89a2d4487ac5794cad6c309b2071818a88c7db7c36d87b" +checksum = "d06bfa36ab3ac2be0dee563380147a5b81ba10dd8885d7fbbc9eb574be67d185" dependencies = [ - "ahash", "bitflags 2.8.0", - "hashbrown 0.14.5", + "hashbrown 0.15.2", "indexmap", "semver", ] [[package]] name = "wasmparser" -version = "0.221.3" +version = "0.224.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06bfa36ab3ac2be0dee563380147a5b81ba10dd8885d7fbbc9eb574be67d185" +checksum = "04f17a5917c2ddd3819e84c661fae0d6ba29d7b9c1f0e96c708c65a9c4188e11" dependencies = [ "bitflags 2.8.0", "hashbrown 0.15.2", "indexmap", "semver", + "serde", +] + +[[package]] +name = "wasmparser" +version = "0.226.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc28600dcb2ba68d7e5f1c3ba4195c2bddc918c0243fd702d0b6dbd05689b681" +dependencies = [ + "bitflags 2.8.0", + "indexmap", + "semver", ] [[package]] name = "wasmprinter" -version = "0.219.1" +version = "0.224.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228cdc1f30c27816da225d239ce4231f28941147d34713dee8f1fff7cb330e54" +checksum = "0095b53a3b09cbc2f90f789ea44aa1b17ecc2dad8b267e657c7391f3ded6293d" dependencies = [ "anyhow", "termcolor", - "wasmparser 0.219.1", + "wasmparser 0.224.1", ] [[package]] name = "wasmtime" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b79302e3e084713249cc5622e8608e7410afdeeea8c8026d04f491d1fab0b4b" +checksum = "809cc8780708f1deed0a7c3fcab46954f0e8c08a6fe0252772481fbc88fcf946" dependencies = [ "addr2line", "anyhow", @@ -4224,11 +4284,10 @@ dependencies = [ "encoding_rs", "fxprof-processed-profile", "gimli", - "hashbrown 0.14.5", + "hashbrown 0.15.2", "indexmap", "ittapi", "libc", - "libm", "log", "mach2", "memfd", @@ -4247,8 +4306,9 @@ dependencies = [ "smallvec", "sptr", "target-lexicon", - "wasm-encoder 0.219.1", - "wasmparser 0.219.1", + "trait-variant", + "wasm-encoder 0.224.1", + "wasmparser 0.224.1", "wasmtime-asm-macros", "wasmtime-cache", "wasmtime-component-macro", @@ -4258,6 +4318,7 @@ dependencies = [ "wasmtime-fiber", "wasmtime-jit-debug", "wasmtime-jit-icache-coherence", + "wasmtime-math", "wasmtime-slab", "wasmtime-versioned-export-macros", "wasmtime-winch", @@ -4267,18 +4328,18 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe53a24e7016a5222875d8ca3ad6024b464465985693c42098cd0bb710002c28" +checksum = "236964b6b35af0f08879c9c56dbfbc5adc12e8d624672341a0121df31adaa3fa" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-cache" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0677a7e76c24746b68e3657f7cc50c0ff122ee7e97bbda6e710c1b790ebc93cb" +checksum = "7a5d75ac36ee28647f6d871a93eefc7edcb729c3096590031ba50857fac44fa8" dependencies = [ "anyhow", "base64 0.21.7", @@ -4296,22 +4357,25 @@ dependencies = [ [[package]] name = "wasmtime-cli-flags" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3606e069d24d0a42b944df9e7f92f59ba3ce051f588606fe609cf813756e501" +checksum = "e3a9c9b7f5bfe2b1117fb20cffb3c4a019470e0472455c259c60944b353e169e" dependencies = [ "anyhow", "clap", "humantime", "rayon", + "serde", + "serde_derive", + "toml", "wasmtime", ] [[package]] name = "wasmtime-component-macro" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e118acbd2bc09b32ad8606bc7cef793bf5019c1b107772e64dc6c76b5055d40b" +checksum = "2581ef04bf33904db9a902ffb558e7b2de534d6a4881ee985ea833f187a78fdf" dependencies = [ "anyhow", "proc-macro2", @@ -4319,20 +4383,20 @@ dependencies = [ "syn", "wasmtime-component-util", "wasmtime-wit-bindgen", - "wit-parser 0.219.1", + "wit-parser 0.224.1", ] [[package]] name = "wasmtime-component-util" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a6db4f3ee18c699629eabb9c64e77efe5a93a5137f098db7cab295037ba41c2" +checksum = "9a7108498a8a0afc81c7d2d81b96cdc509cd631d7bbaa271b7db5137026f10e3" [[package]] name = "wasmtime-cranelift" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b87e6c78f562b50aff1afd87ff32a57e241424c846c1c8f3c5fd352d2d62906" +checksum = "abcc9179097235c91f299a8ff56b358ee921266b61adff7d14d6e48428954dd2" dependencies = [ "anyhow", "cfg-if", @@ -4345,19 +4409,20 @@ dependencies = [ "itertools 0.12.1", "log", "object", + "pulley-interpreter", "smallvec", "target-lexicon", "thiserror 1.0.69", - "wasmparser 0.219.1", + "wasmparser 0.224.1", "wasmtime-environ", "wasmtime-versioned-export-macros", ] [[package]] name = "wasmtime-environ" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c25bfeaa16432d59a0706e2463d315ef4c9ebcfaf5605670b99d46373bdf9f27" +checksum = "8e90f6cba665939381839bbf2ddf12d732fca03278867910348ef1281b700954" dependencies = [ "anyhow", "cpp_demangle", @@ -4374,17 +4439,17 @@ dependencies = [ "serde_derive", "smallvec", "target-lexicon", - "wasm-encoder 0.219.1", - "wasmparser 0.219.1", + "wasm-encoder 0.224.1", + "wasmparser 0.224.1", "wasmprinter", "wasmtime-component-util", ] [[package]] name = "wasmtime-fiber" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759ab0caa3821a6211743fe1eed448ab9df439e3af6c60dea15486c055611806" +checksum = "ba5c2ac21f0b39d72d2dac198218a12b3ddeb4ab388a8fa0d2e429855876783c" dependencies = [ "anyhow", "cc", @@ -4397,10 +4462,11 @@ dependencies = [ [[package]] name = "wasmtime-jit-debug" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2a056056e9ac6916c2b8e4743408560300c1355e078c344211f13210d449b3" +checksum = "74812989369947f4f5a33f4ae8ff551eb6c8a97ff55e0269a9f5f0fac93cd755" dependencies = [ + "cc", "object", "rustix", "wasmtime-versioned-export-macros", @@ -4408,9 +4474,9 @@ dependencies = [ [[package]] name = "wasmtime-jit-icache-coherence" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91b218a92866f74f35162f5d03a4e0f62cd0e1cc624285b1014275e5d4575fad" +checksum = "3f180cc0d2745e3a5df5d02231cd3046f49c75512eaa987b8202363b112e125d" dependencies = [ "anyhow", "cfg-if", @@ -4418,17 +4484,26 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "wasmtime-math" +version = "30.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f04c5dcf5b2f88f81cfb8d390294b2f67109dc4d0197ea7303c60a092df27c" +dependencies = [ + "libm", +] + [[package]] name = "wasmtime-slab" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5f8acf677ee6b3b8ba400dd9753ea4769e56a95c4b30b045ac6d2d54b2f8ea" +checksum = "fe9681707f1ae9a4708ca22058722fca5c135775c495ba9b9624fe3732b94c97" [[package]] name = "wasmtime-versioned-export-macros" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df09be00c38f49172ca9936998938476e3f2df782673a39ae2ef9fb0838341b6" +checksum = "dd2fe69d04986a12fc759d2e79494100d600adcb3bb79e63dedfc8e6bb2ab03e" dependencies = [ "proc-macro2", "quote", @@ -4437,9 +4512,9 @@ dependencies = [ [[package]] name = "wasmtime-wasi" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad5cf227161565057fc994edf14180341817372a218f1597db48a43946e5f875" +checksum = "4ce639c7d398586bc539ae9bba752084c1db7a49ab0f391a3230dcbcc6a64cfd" dependencies = [ "anyhow", "async-trait", @@ -4461,14 +4536,15 @@ dependencies = [ "tracing", "url", "wasmtime", + "wasmtime-wasi-io", "windows-sys 0.59.0", ] [[package]] name = "wasmtime-wasi-http" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78d5dc4907e8f41873b1c8475a14c263f6f7babb6724e9fe3d92c6403a8d9870" +checksum = "078ad3add219591e98ebeb31690d9d1401305e2439dede129dad1031215564f5" dependencies = [ "anyhow", "async-trait", @@ -4487,18 +4563,31 @@ dependencies = [ "webpki-roots", ] +[[package]] +name = "wasmtime-wasi-io" +version = "30.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdcad7178fddaa07786abe8ff5e043acb4bc8c8f737eb117f11e028b48d92792" +dependencies = [ + "anyhow", + "async-trait", + "bytes", + "futures", + "wasmtime", +] + [[package]] name = "wasmtime-winch" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d6b5297bea14d8387c3974b2b011de628cc9b188f135cec752b74fd368964b" +checksum = "5a9c8eae8395d530bb00a388030de9f543528674c382326f601de47524376975" dependencies = [ "anyhow", "cranelift-codegen", "gimli", "object", "target-lexicon", - "wasmparser 0.219.1", + "wasmparser 0.224.1", "wasmtime-cranelift", "wasmtime-environ", "winch-codegen", @@ -4506,34 +4595,34 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf3963c9c29df91564d8bd181eb00d0dbaeafa1b2a01e15952bb7391166b704e" +checksum = "9a5531455e2c55994a1540355140369bb7ec0e46d2699731c5ee9f4cf9c3f7d4" dependencies = [ "anyhow", "heck", "indexmap", - "wit-parser 0.219.1", + "wit-parser 0.224.1", ] [[package]] name = "wast" -version = "221.0.2" +version = "226.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc4470b9de917ba199157d1f0ae104f2ae362be728c43e68c571c7715bd629e" +checksum = "0bb903956d0151eabb6c30a2304dd61e5c8d7182805226120c2b6d611fb09a26" dependencies = [ "bumpalo", - "leb128", + "leb128fmt", "memchr", "unicode-width", - "wasm-encoder 0.221.2", + "wasm-encoder 0.226.0", ] [[package]] name = "wat" -version = "1.221.2" +version = "1.226.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1f3c6d82af47286494c6caea1d332037f5cbeeac82bbf5ef59cb8c201c466e" +checksum = "5f89a90ef2c401b8b5b2b704020bfa7a7f69b93c3034c7a4b4a88e21e9966581" dependencies = [ "wast", ] @@ -4598,7 +4687,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -4609,9 +4698,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "27.0.0" +version = "30.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b42b678c8651ec4900d7600037d235429fc985c31cbc33515885ec0d2a9e158" +checksum = "7dbd4e07bd92c7ddace2f3267bdd31d4197b5ec58c315751325d45c19bfb56df" dependencies = [ "anyhow", "cranelift-codegen", @@ -4619,7 +4708,8 @@ dependencies = [ "regalloc2", "smallvec", "target-lexicon", - "wasmparser 0.219.1", + "thiserror 1.0.69", + "wasmparser 0.224.1", "wasmtime-cranelift", "wasmtime-environ", ] @@ -4807,7 +4897,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f3fd376f71958b862e7afb20cfe5a22830e1963462f3a17f49d82a6c1d1f42d" dependencies = [ "bitflags 2.8.0", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4982,9 +5072,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.219.1" +version = "0.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a86f669283257e8e424b9a4fc3518e3ade0b95deb9fbc0f93a1876be3eda598" +checksum = "5b7117ce3adc0b4354b46dc1cf3190b00b333e65243d244c613ffcc58bdec84d" dependencies = [ "anyhow", "id-arena", @@ -4995,14 +5085,14 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.219.1", + "wasmparser 0.220.0", ] [[package]] name = "wit-parser" -version = "0.220.0" +version = "0.221.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b7117ce3adc0b4354b46dc1cf3190b00b333e65243d244c613ffcc58bdec84d" +checksum = "fbe1538eea6ea5ddbe5defd0dc82539ad7ba751e1631e9185d24a931f0a5adc8" dependencies = [ "anyhow", "id-arena", @@ -5013,14 +5103,14 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.220.0", + "wasmparser 0.221.3", ] [[package]] name = "wit-parser" -version = "0.221.2" +version = "0.224.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbe1538eea6ea5ddbe5defd0dc82539ad7ba751e1631e9185d24a931f0a5adc8" +checksum = "e3477d8d0acb530d76beaa8becbdb1e3face08929db275f39934963eb4f716f8" dependencies = [ "anyhow", "id-arena", @@ -5031,7 +5121,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.221.3", + "wasmparser 0.224.1", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index c93027ba8..97478414d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -159,13 +159,13 @@ tracing-subscriber = { version = "0.3", default-features = false } url = { version = "2" } uuid = { version = "1", default-features = false } wasi = { version = "0.13", default-features = false } -wasi-preview1-component-adapter-provider = { version = "27", default-features = false } +wasi-preview1-component-adapter-provider = { version = "30", default-features = false } wasm-tokio = { version = "0.6", default-features = false } wasmparser = { version = "0.221", default-features = false } -wasmtime = { version = "27", default-features = false } -wasmtime-cli-flags = { version = "27", default-features = false } -wasmtime-wasi = { version = "27", default-features = false } -wasmtime-wasi-http = { version = "27", default-features = false } +wasmtime = { version = "30", default-features = false } +wasmtime-cli-flags = { version = "30", default-features = false } +wasmtime-wasi = { version = "30", default-features = false } +wasmtime-wasi-http = { version = "30", default-features = false } wit-bindgen = { version = "0.36", default-features = false } wit-bindgen-core = { version = "0.36", default-features = false } wit-bindgen-wrpc = { version = "0.9", default-features = false, path = "./crates/wit-bindgen" } diff --git a/benches/bench.rs b/benches/bench.rs index 22f678682..063b16919 100644 --- a/benches/bench.rs +++ b/benches/bench.rs @@ -14,7 +14,7 @@ use futures::StreamExt as _; use tokio::select; use tokio::sync::oneshot; use wasmtime::component::{Component, Linker}; -use wasmtime_wasi::{ResourceTable, WasiCtx, WasiCtxBuilder, WasiView}; +use wasmtime_wasi::{IoView, ResourceTable, WasiCtx, WasiCtxBuilder, WasiView}; mod ping_bindings_wrpc { wit_bindgen_wrpc::generate!({ @@ -71,14 +71,16 @@ struct Ctx { wasi: WasiCtx, } +impl IoView for Ctx { + fn table(&mut self) -> &mut ResourceTable { + &mut self.table + } +} + impl WasiView for Ctx { fn ctx(&mut self) -> &mut WasiCtx { &mut self.wasi } - - fn table(&mut self) -> &mut ResourceTable { - &mut self.table - } } #[derive(Clone)] @@ -94,7 +96,7 @@ impl WasmHandler { const BITS_TO_TEST: u32 = 42; let mut config = wasmtime::Config::new(); config.wasm_memory64(true); - config.static_memory_maximum_size(1 << BITS_TO_TEST); + config.memory_reservation(1 << BITS_TO_TEST); let engine = wasmtime::Engine::new(&config)?; let mut store = wasmtime::Store::new(&engine, ()); // NB: the maximum size is in wasm pages to take out the 16-bits of wasm @@ -130,10 +132,7 @@ impl WasmHandler { wasmtime_cli_flags::CommonOptions::try_parse_from(iter::empty::<&'static str>()) .context("failed to construct common Wasmtime options")?; let mut config = opts - .config( - None, - Self::use_pooling_allocator_by_default().unwrap_or(None), - ) + .config(Self::use_pooling_allocator_by_default().unwrap_or(None)) .context("failed to construct Wasmtime config")?; config.wasm_component_model(true); config.async_support(true); diff --git a/crates/runtime-wasmtime/src/lib.rs b/crates/runtime-wasmtime/src/lib.rs index 5ebbd555e..138cb55cd 100644 --- a/crates/runtime-wasmtime/src/lib.rs +++ b/crates/runtime-wasmtime/src/lib.rs @@ -33,7 +33,7 @@ use wasmtime::component::{ }; use wasmtime::{AsContextMut, Engine, StoreContextMut}; use wasmtime_wasi::pipe::AsyncReadStream; -use wasmtime_wasi::{InputStream, StreamError, WasiView}; +use wasmtime_wasi::{DynInputStream, StreamError, WasiView}; use wrpc_transport::{Index as _, Invoke, InvokeExt as _, ListDecoderU8}; // this returns the RPC name for a wasmtime function name. @@ -466,9 +466,9 @@ where Ok(()) } (Val::Resource(resource), Type::Own(ty) | Type::Borrow(ty)) => { - if *ty == ResourceType::host::() { + if *ty == ResourceType::host::() { let stream = resource - .try_into_resource::(&mut self.store) + .try_into_resource::(&mut self.store) .context("failed to downcast `wasi:io/input-stream`")?; if stream.owned() { let mut stream = self @@ -814,7 +814,7 @@ where Ok(()) } Type::Own(ty) | Type::Borrow(ty) => { - if *ty == ResourceType::host::() { + if *ty == ResourceType::host::() { let mut store = store.as_context_mut(); let r = r .index(path) @@ -1029,7 +1029,7 @@ where async move { let mut buf = BytesMut::default(); let mut deferred = vec![]; - for (v, ref ty) in zip(params, ty.params()) { + for (v, (_, ref ty)) in zip(params, ty.params()) { let mut enc = ValEncoder::new(store.as_context_mut(), ty, &resources); enc.encode(v, &mut buf) .context("failed to encode parameter")?; @@ -1254,7 +1254,7 @@ pub trait ServeExt: wrpc_transport::Serve { // TODO: set paths let invocations = self.serve(instance_name, rpc_func_name(name), []).await?; let name = Arc::::from(name); - let params_ty: Arc<[_]> = ty.params().collect(); + let params_ty: Arc<[_]> = ty.params().map(|(_, ty)| ty).collect(); let results_ty: Arc<[_]> = ty.results().collect(); Ok(invocations.map_ok(move |(cx, tx, rx)| { let instance_pre = instance_pre.clone(); @@ -1339,7 +1339,7 @@ pub trait ServeExt: wrpc_transport::Serve { debug!(instance = instance_name, name, "serving function export"); // TODO: set paths let invocations = self.serve(instance_name, rpc_func_name(name), []).await?; - let params_ty: Arc<[_]> = ty.params().collect(); + let params_ty: Arc<[_]> = ty.params().map(|(_, ty)| ty).collect(); let results_ty: Arc<[_]> = ty.results().collect(); let guest_resources = Arc::clone(&guest_resources); Ok(invocations.map_ok(move |(cx, tx, rx)| { diff --git a/crates/wasmtime-cli/src/lib.rs b/crates/wasmtime-cli/src/lib.rs index 760af27ee..1ad6734cf 100644 --- a/crates/wasmtime-cli/src/lib.rs +++ b/crates/wasmtime-cli/src/lib.rs @@ -20,7 +20,7 @@ use wasi_preview1_component_adapter_provider::{ }; use wasmtime::component::{types, Component, InstancePre, Linker, ResourceType}; use wasmtime::{Engine, Store}; -use wasmtime_wasi::{ResourceTable, WasiCtx, WasiCtxBuilder, WasiView}; +use wasmtime_wasi::{IoView, ResourceTable, WasiCtx, WasiCtxBuilder, WasiView}; use wasmtime_wasi_http::{WasiHttpCtx, WasiHttpView}; use wrpc_runtime_wasmtime::{ collect_component_resources, link_item, ServeExt as _, SharedResourceTable, WrpcView, @@ -71,22 +71,22 @@ impl WrpcView for Ctx { } } +impl IoView for Ctx { + fn table(&mut self) -> &mut ResourceTable { + &mut self.table + } +} + impl WasiView for Ctx { fn ctx(&mut self) -> &mut WasiCtx { &mut self.wasi } - fn table(&mut self) -> &mut ResourceTable { - &mut self.table - } } impl WasiHttpView for Ctx { fn ctx(&mut self) -> &mut WasiHttpCtx { &mut self.http } - fn table(&mut self) -> &mut ResourceTable { - &mut self.table - } } // https://github.com/bytecodealliance/wasmtime/blob/b943666650696f1eb7ff8b217762b58d5ef5779d/src/commands/serve.rs#L641-L656 @@ -94,7 +94,7 @@ fn use_pooling_allocator_by_default() -> anyhow::Result> { const BITS_TO_TEST: u32 = 42; let mut config = wasmtime::Config::new(); config.wasm_memory64(true); - config.static_memory_maximum_size(1 << BITS_TO_TEST); + config.memory_reservation(1 << BITS_TO_TEST); let engine = wasmtime::Engine::new(&config)?; let mut store = wasmtime::Store::new(&engine, ()); // NB: the maximum size is in wasm pages to take out the 16-bits of wasm @@ -120,7 +120,7 @@ where let mut opts = wasmtime_cli_flags::CommonOptions::try_parse_from(iter::empty::<&'static str>()) .context("failed to construct common Wasmtime options")?; let mut config = opts - .config(None, use_pooling_allocator_by_default().unwrap_or(None)) + .config(use_pooling_allocator_by_default().unwrap_or(None)) .context("failed to construct Wasmtime config")?; config.wasm_component_model(true); config.async_support(true);