diff --git a/Cargo.lock b/Cargo.lock index b2eb0f7..2e7f45f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,6 +11,15 @@ dependencies = [ "gimli 0.28.1", ] +[[package]] +name = "addr2line" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +dependencies = [ + "gimli 0.29.0", +] + [[package]] name = "adler" version = "1.0.2" @@ -127,7 +136,7 @@ version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ - "addr2line", + "addr2line 0.21.0", "cc", "cfg-if", "libc", @@ -371,27 +380,38 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.109.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6b33d7e757a887989eb18b35712b2a67d96171ec3149d1bfb657b29b7b367c" +checksum = "b80c3a50b9c4c7e5b5f73c0ed746687774fc9e36ef652b110da8daebf0c6e0e6" dependencies = [ "cranelift-entity", ] +[[package]] +name = "cranelift-bitset" +version = "0.111.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38778758c2ca918b05acb2199134e0c561fb577c50574259b26190b6c2d95ded" +dependencies = [ + "serde", + "serde_derive", +] + [[package]] name = "cranelift-codegen" -version = "0.109.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9acf15cb22be42d07c3b57d7856329cb228b7315d385346149df2566ad5e4aa" +checksum = "58258667ad10e468bfc13a8d620f50dfcd4bb35d668123e97defa2549b9ad397" dependencies = [ "bumpalo", "cranelift-bforest", + "cranelift-bitset", "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-control", "cranelift-entity", "cranelift-isle", - "gimli 0.28.1", + "gimli 0.29.0", "hashbrown 0.14.3", "log", "regalloc2", @@ -402,43 +422,44 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.109.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e934d301392b73b3f8b0540391fb82465a0f179a3cee7c726482ac4727efcc97" +checksum = "043f0b702e529dcb07ff92bd7d40e7d5317b5493595172c5eb0983343751ee06" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.109.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb2a2566b3d54b854dfb288b3b187f6d3d17d6f762c92898207eba302931da" +checksum = "7763578888ab53eca5ce7da141953f828e82c2bfadcffc106d10d1866094ffbb" [[package]] name = "cranelift-control" -version = "0.109.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0100f33b704cdacd01ad66ff41f8c5030d57cbff078e2a4e49ab1822591299fa" +checksum = "32db15f08c05df570f11e8ab33cb1ec449a64b37c8a3498377b77650bef33d8b" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.109.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8cfdc315e5d18997093e040a8d234bea1ac1e118a716d3e30f40d449e78207b" +checksum = "5289cdb399381a27e7bbfa1b42185916007c3d49aeef70b1d01cb4caa8010130" dependencies = [ + "cranelift-bitset", "serde", "serde_derive", ] [[package]] name = "cranelift-frontend" -version = "0.109.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f74b84f16af2e982b0c0c72233503d9d55cbfe3865dbe807ca28dc6642a28b5" +checksum = "31ba8ab24eb9470477e98ddfa3c799a649ac5a0d9a2042868c4c952133c234e8" dependencies = [ "cranelift-codegen", "log", @@ -448,15 +469,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.109.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adf306d3dde705fb94bd48082f01d38c4ededc74293a4c007805f610bf08bc6e" +checksum = "2b72a3c5c166a70426dcb209bdd0bb71a787c1ea76023dc0974fbabca770e8f9" [[package]] name = "cranelift-native" -version = "0.109.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ea0ebdef7aff4a79bcbc8b6495f31315f16b3bf311152f472eaa8d679352581" +checksum = "46a42424c956bbc31fc5c2706073df896156c5420ae8fa2a5d48dbc7b295d71b" dependencies = [ "cranelift-codegen", "libc", @@ -465,9 +486,9 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.109.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d549108a1942065cdbac3bb96c2952afa0e1b9a3beff4b08c4308ac72257576d" +checksum = "49778df4289933d735b93c30a345513e030cf83101de0036e19b760f8aa09f68" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -475,7 +496,7 @@ dependencies = [ "itertools", "log", "smallvec", - "wasmparser 0.209.1", + "wasmparser 0.215.0", "wasmtime-types", ] @@ -872,6 +893,12 @@ name = "gimli" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "gimli" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" dependencies = [ "fallible-iterator 0.3.0", "indexmap 2.2.3", @@ -1159,15 +1186,6 @@ dependencies = [ "rustix", ] -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] - [[package]] name = "miniz_oxide" version = "0.7.2" @@ -1452,6 +1470,9 @@ name = "semver" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" +dependencies = [ + "serde", +] [[package]] name = "serde" @@ -1655,9 +1676,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.13" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" @@ -1947,6 +1968,7 @@ dependencies = [ "wasmparser 0.215.0", "wasmtime", "wasmtime-wasi", + "wasmtime-wasi-runtime-config", "wit-component", "wit-parser 0.212.0", ] @@ -2026,15 +2048,6 @@ dependencies = [ "wat", ] -[[package]] -name = "wasm-encoder" -version = "0.209.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4a05336882dae732ce6bd48b7e11fe597293cb72c13da4f35d7d5f8d53b2a7" -dependencies = [ - "leb128", -] - [[package]] name = "wasm-encoder" version = "0.212.0" @@ -2111,20 +2124,6 @@ dependencies = [ "cxx-build", ] -[[package]] -name = "wasmparser" -version = "0.209.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07035cc9a9b41e62d3bb3a3815a66ab87c993c06fe1cf6b2a3f2a18499d937db" -dependencies = [ - "ahash", - "bitflags 2.4.2", - "hashbrown 0.14.3", - "indexmap 2.2.3", - "semver", - "serde", -] - [[package]] name = "wasmparser" version = "0.212.0" @@ -2155,29 +2154,31 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.209.1" +version = "0.215.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceca8ae6eaa8c7c87b33c25c53bdf299f8c2a764aee1179402ff7652ef3a6859" +checksum = "d8e9a325d85053408209b3d2ce5eaddd0dd6864d1cff7a007147ba073157defc" dependencies = [ "anyhow", - "wasmparser 0.209.1", + "termcolor", + "wasmparser 0.215.0", ] [[package]] name = "wasmtime" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786d8b5e7a4d54917c5ebe555b9667337e5f93383f49bddaaeec2eba68093b45" +checksum = "9a5883d64dfc8423c56e3d8df27cffc44db25336aa468e8e0724fddf30a333d7" dependencies = [ - "addr2line", + "addr2line 0.22.0", "anyhow", "async-trait", + "bitflags 2.4.2", "bumpalo", "cc", "cfg-if", "encoding_rs", "fxprof-processed-profile", - "gimli 0.28.1", + "gimli 0.29.0", "hashbrown 0.14.3", "indexmap 2.2.3", "ittapi", @@ -2186,7 +2187,6 @@ dependencies = [ "log", "mach2", "memfd", - "memoffset", "object 0.36.1", "once_cell", "paste", @@ -2201,8 +2201,8 @@ dependencies = [ "smallvec", "sptr", "target-lexicon", - "wasm-encoder 0.209.1", - "wasmparser 0.209.1", + "wasm-encoder 0.215.0", + "wasmparser 0.215.0", "wasmtime-asm-macros", "wasmtime-cache", "wasmtime-component-macro", @@ -2221,18 +2221,18 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d697d99c341d4a9ffb72f3af7a02124d233eeb59aee010f36d88e97cca553d5e" +checksum = "1c4dc7e2a379c0dd6be5b55857d14c4b277f43a9c429a9e14403eb61776ae3be" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-cache" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916610f9ae9a6c22deb25bba2e6247ba9f00b093d30620875203b91328a1adfa" +checksum = "6a5b179f263a318e08c93281ea77cbb95e2a0c8c11e99a6188b53ead77233722" dependencies = [ "anyhow", "base64", @@ -2250,9 +2250,9 @@ dependencies = [ [[package]] name = "wasmtime-component-macro" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b29b462b068e73b5b27fae092a27f47e5937cabf6b26be2779c978698a52feca" +checksum = "4b07773d1c3dab5f014ec61316ee317aa424033e17e70a63abdf7c3a47e58fcf" dependencies = [ "anyhow", "proc-macro2", @@ -2260,20 +2260,20 @@ dependencies = [ "syn 2.0.68", "wasmtime-component-util", "wasmtime-wit-bindgen", - "wit-parser 0.209.1", + "wit-parser 0.215.0", ] [[package]] name = "wasmtime-component-util" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d2912c53d9054984b380dfbd7579f9c3681b2a73b903a56bd71a1c4f175f1e" +checksum = "e38d735320f4e83478369ce649ad8fe87c6b893220902e798547a225fc0c5874" [[package]] name = "wasmtime-cranelift" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3975deafea000457ba84355c7c0fce0372937204f77026510b7b454f28a3a65" +checksum = "e570d831d0785d93d7d8c722b1eb9a34e0d0c1534317666f65892818358a2da9" dependencies = [ "anyhow", "cfg-if", @@ -2283,36 +2283,38 @@ dependencies = [ "cranelift-frontend", "cranelift-native", "cranelift-wasm", - "gimli 0.28.1", + "gimli 0.29.0", "log", "object 0.36.1", "target-lexicon", "thiserror", - "wasmparser 0.209.1", + "wasmparser 0.215.0", "wasmtime-environ", "wasmtime-versioned-export-macros", ] [[package]] name = "wasmtime-environ" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f444e900e848b884d8a8a2949b6f5b92af642a3e663ff8fbe78731143a55be61" +checksum = "c5fe80dfbd81687431a7d4f25929fae1ae96894786d5c96b14ae41164ee97377" dependencies = [ "anyhow", "cpp_demangle", + "cranelift-bitset", "cranelift-entity", - "gimli 0.28.1", + "gimli 0.29.0", "indexmap 2.2.3", "log", "object 0.36.1", "postcard", "rustc-demangle", + "semver", "serde", "serde_derive", "target-lexicon", - "wasm-encoder 0.209.1", - "wasmparser 0.209.1", + "wasm-encoder 0.215.0", + "wasmparser 0.215.0", "wasmprinter", "wasmtime-component-util", "wasmtime-types", @@ -2320,9 +2322,9 @@ dependencies = [ [[package]] name = "wasmtime-fiber" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ded58eb2d1bf0dcd2182d0ccd7055c4b10b50d711514f1d73f61515d0fa829d" +checksum = "0f39043d13c7b58db69dc9a0feb191a961e75a9ec2402aebf42de183c022bb8a" dependencies = [ "anyhow", "cc", @@ -2335,9 +2337,9 @@ dependencies = [ [[package]] name = "wasmtime-jit-debug" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bc54198c6720f098210a85efb3ba8c078d1de4d373cdb6778850a66ae088d11" +checksum = "aec346412363eb26067cb6473281a45bd273cbbcafa3dc862793c946eff6ba7f" dependencies = [ "object 0.36.1", "once_cell", @@ -2347,9 +2349,9 @@ dependencies = [ [[package]] name = "wasmtime-jit-icache-coherence" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5afe2f0499542f9a4bcfa1b55bfdda803b6ade4e7c93c6b99e0f39dba44b0a91" +checksum = "d15de8429db996f0d17a4163a35eccc3f874cbfb50f29c379951ea1bbb39452e" dependencies = [ "anyhow", "cfg-if", @@ -2359,28 +2361,29 @@ dependencies = [ [[package]] name = "wasmtime-slab" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a7de1f2bec5bbb35d532e61c85c049dc84ae671df60492f90b954ecf21169e7" +checksum = "1f68d38fa6b30c5e1fc7d608263062997306f79e577ebd197ddcd6b0f55d87d1" [[package]] name = "wasmtime-types" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "412463e9000e14cf6856be48628d2213c20c153e29ffc22b036980c892ea6964" +checksum = "6634e7079d9c5cfc81af8610ed59b488cc5b7f9777a2f4c1667a2565c2e45249" dependencies = [ + "anyhow", "cranelift-entity", "serde", "serde_derive", "smallvec", - "wasmparser 0.209.1", + "wasmparser 0.215.0", ] [[package]] name = "wasmtime-versioned-export-macros" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de5a9bc4f44ceeb168e9e8e3be4e0b4beb9095b468479663a9e24c667e36826f" +checksum = "3850e3511d6c7f11a72d571890b0ed5f6204681f7f050b9de2690e7f13123fed" dependencies = [ "proc-macro2", "quote", @@ -2389,9 +2392,9 @@ dependencies = [ [[package]] name = "wasmtime-wasi" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8abb1301089ed8e0b4840f539cba316a73ac382090f1b25d22d8c8eed8df49c7" +checksum = "545ae8298ffce025604f7480f9c7d6948c985bef7ce9aee249ef79307813e83c" dependencies = [ "anyhow", "async-trait", @@ -2418,18 +2421,28 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "wasmtime-wasi-runtime-config" +version = "24.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dfa7046953f0622267486d4dfed5975ce2d9d4afe1132042b856a7d61c738" +dependencies = [ + "anyhow", + "wasmtime", +] + [[package]] name = "wasmtime-winch" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed4db238a0241df2d15f79ad17b3a37a27f2ea6cb885894d81b42ae107544466" +checksum = "2a25199625effa4c13dd790d64bd56884b014c69829431bfe43991c740bd5bc1" dependencies = [ "anyhow", "cranelift-codegen", - "gimli 0.28.1", + "gimli 0.29.0", "object 0.36.1", "target-lexicon", - "wasmparser 0.209.1", + "wasmparser 0.215.0", "wasmtime-cranelift", "wasmtime-environ", "winch-codegen", @@ -2437,14 +2450,14 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc077306b38288262e5ba01d4b21532a6987416cdc0aedf04bb06c22a68fdc" +checksum = "3cb331ac7ed1d5ba49cddcdb6b11973752a857148858bb308777d2fc5584121f" dependencies = [ "anyhow", "heck 0.4.1", "indexmap 2.2.3", - "wit-parser 0.209.1", + "wit-parser 0.215.0", ] [[package]] @@ -2480,9 +2493,9 @@ dependencies = [ [[package]] name = "wiggle" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29830e5d01c182d24b94092c697aa7ab0ee97d22e78a2bf40ca91eae6ebca5c2" +checksum = "cc850ca3c02c5835934d23f28cec4c5a3fb66fe0b4ecd968bbb35609dda5ddc0" dependencies = [ "anyhow", "async-trait", @@ -2495,9 +2508,9 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "557567f2793508760cd855f7659b7a0b9dc4dbc451f53f1415d6943a15311ade" +checksum = "634b8804a67200bcb43ea8af5f7c53e862439a086b68b16fd333454bc74d5aab" dependencies = [ "anyhow", "heck 0.4.1", @@ -2510,9 +2523,9 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "22.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc26129a8aea20b62c961d1b9ab4a3c3b56b10042ed85d004f8678af0f21ba6e" +checksum = "474b7cbdb942c74031e619d66c600bba7f73867c5800fc2c2306cf307649be2f" dependencies = [ "proc-macro2", "quote", @@ -2553,17 +2566,17 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c6915884e731b2db0d8cf08cb64474cb69221a161675fd3c135f91febc3daa" +checksum = "073efe897d9ead7fc609874f94580afc831114af5149b6a90ee0a3a39b497fe0" dependencies = [ "anyhow", "cranelift-codegen", - "gimli 0.28.1", + "gimli 0.29.0", "regalloc2", "smallvec", "target-lexicon", - "wasmparser 0.209.1", + "wasmparser 0.215.0", "wasmtime-cranelift", "wasmtime-environ", ] @@ -2810,9 +2823,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.209.1" +version = "0.212.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e79b9e3c0b6bb589dec46317e645851e0db2734c44e2be5e251b03ff4a51269" +checksum = "ceeb0424aa8679f3fcf2d6e3cfa381f3d6fa6179976a2c05a6249dd2bb426716" dependencies = [ "anyhow", "id-arena", @@ -2823,14 +2836,14 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.209.1", + "wasmparser 0.212.0", ] [[package]] name = "wit-parser" -version = "0.212.0" +version = "0.215.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceeb0424aa8679f3fcf2d6e3cfa381f3d6fa6179976a2c05a6249dd2bb426716" +checksum = "935a97eaffd57c3b413aa510f8f0b550a4a9fe7d59e79cd8b89a83dcb860321f" dependencies = [ "anyhow", "id-arena", @@ -2841,7 +2854,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.212.0", + "wasmparser 0.215.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index c0d35ff..4e617f1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,8 +46,9 @@ anyhow = "1" cap-std = "3.1.0" heck = { version = "0.5" } tokio = { version = "1.39.2", features = ["macros"] } -wasmtime = { version = "22.0.0", features = ["component-model"] } -wasmtime-wasi = "22.0.0" +wasmtime = { version = "24.0.0", features = ["component-model"] } +wasmtime-wasi = "24.0.0" +wasmtime-wasi-runtime-config = "24.0.0" wasmparser = "0.215.0" [workspace.dependencies] diff --git a/tests/virt.rs b/tests/virt.rs index a28cda0..c873047 100644 --- a/tests/virt.rs +++ b/tests/virt.rs @@ -2,7 +2,6 @@ use anyhow::{anyhow, bail, Context, Result}; use heck::ToSnakeCase; use serde::Deserialize; use std::collections::BTreeMap; -use std::pin::Pin; use std::process::Command; use std::{fs, path::PathBuf}; use wasi_virt::WasiVirt; @@ -14,6 +13,7 @@ use wasmtime::{ Config, Engine, Store, WasmBacktraceDetails, }; use wasmtime_wasi::{DirPerms, FilePerms, WasiCtx, WasiCtxBuilder, WasiView}; +use wasmtime_wasi_runtime_config::{WasiRuntimeConfig, WasiRuntimeConfigVariables}; use wit_component::{ComponentEncoder, DecodedWasm}; use wit_parser::WorldItem; @@ -220,14 +220,14 @@ async fn virt_test() -> Result<()> { builder.env(k, v); } } - let props: Vec<(String, String)> = { - let mut props = vec![]; + let runtime_config = { + let mut config = WasiRuntimeConfigVariables::new(); if let Some(host_config) = &test.host_config { for (k, v) in host_config { - props.push((k.clone(), v.clone())) + config.insert(k, v); } } - props + config }; let table = ResourceTable::new(); let wasi = builder.build(); @@ -246,7 +246,7 @@ async fn virt_test() -> Result<()> { struct CommandCtx { table: ResourceTable, wasi: WasiCtx, - props: Vec<(String, String)>, + runtime_config: WasiRuntimeConfigVariables, } impl WasiView for CommandCtx { fn table(&mut self) -> &mut ResourceTable { @@ -257,21 +257,25 @@ async fn virt_test() -> Result<()> { } } impl CommandCtx { - fn config(&self) -> Vec<(String, String)> { - self.props.clone() + fn runtime_config(&mut self) -> &mut WasiRuntimeConfigVariables { + &mut self.runtime_config } } wasmtime_wasi::add_to_linker_async(&mut linker)?; - wasi::config::runtime::add_to_linker_get_host(&mut linker, |ctx: &mut CommandCtx| { - StubConfig { - props: ctx.config(), - } + wasmtime_wasi_runtime_config::add_to_linker(&mut linker, |ctx: &mut CommandCtx| { + WasiRuntimeConfig::new(ctx.runtime_config()) })?; - let mut store = Store::new(&engine, CommandCtx { table, wasi, props }); + let mut store = Store::new( + &engine, + CommandCtx { + table, + wasi, + runtime_config, + }, + ); - let (instance, _instance) = - VirtTest::instantiate_async(&mut store, &component, &linker).await?; + let instance = VirtTest::instantiate_async(&mut store, &component, &linker).await?; if DEBUG { println!("- Checking expectations"); @@ -438,65 +442,3 @@ fn collect_component_imports(component_bytes: Vec) -> Result> { Ok(import_ids) } - -// TODO remove this stub once wasi:runtime/config is implemented by wasmtime -struct StubConfig { - props: Vec<(String, String)>, -} -impl wasi::config::runtime::Host for StubConfig { - #[doc = " Gets a single opaque config value set at the given key if it exists"] - #[must_use] - #[allow(clippy::type_complexity, clippy::type_repetition_in_bounds)] - fn get<'life0, 'async_trait>( - &'life0 mut self, - key: String, - ) -> ::core::pin::Pin< - Box< - dyn ::core::future::Future< - Output = Result, wasi::config::runtime::ConfigError>, - > + ::core::marker::Send - + 'async_trait, - >, - > - where - 'life0: 'async_trait, - Self: 'async_trait, - { - let mut result = Ok(None); - for (k, v) in self.props.iter() { - if *k == key { - result = Ok(Some(v.clone())); - } - } - let result = std::future::ready(result); - let result = Box::new(result); - let result = Pin::new(result); - - result - } - - #[doc = " Gets a list of all set config data"] - #[must_use] - #[allow(clippy::type_complexity, clippy::type_repetition_in_bounds)] - fn get_all<'life0, 'async_trait>( - &'life0 mut self, - ) -> ::core::pin::Pin< - Box< - dyn ::core::future::Future< - Output = Result, wasi::config::runtime::ConfigError>, - > + ::core::marker::Send - + 'async_trait, - >, - > - where - 'life0: 'async_trait, - Self: 'async_trait, - { - let result = Ok(self.props.clone()); - let result = std::future::ready(result); - let result = Box::new(result); - let result = Pin::new(result); - - result - } -}