From bcbc80f8d5c81084a026b998701b7936e6595847 Mon Sep 17 00:00:00 2001 From: primoly <168267431+primoly@users.noreply.github.com> Date: Sun, 10 Nov 2024 16:53:11 +0100 Subject: [PATCH 1/5] Add a missing `format!` (#349) thank you --- src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index fb0b04d3..28198cfe 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -545,9 +545,9 @@ fn spawn_outputs( .collect::>(); if matches!(command, CargoCommand::Run | CargoCommand::Serve) && executables.len() > 1 { - config.terminal().error( + config.terminal().error(format!( "`cargo component {command}` can run at most one component, but multiple were specified", - ) + )) } else if executables.is_empty() { config.terminal().error(format!( "a component {ty} target must be available for `cargo component {command}`", From a3e779c38e8fb0f7db8983f26b3e86cc7604b255 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Fri, 15 Nov 2024 06:08:30 -0800 Subject: [PATCH 2/5] Update to the latest wit-bindgen etc. (#352) * Update to the latest wit-bindgen etc. Update to the latest wit-bindgen, wasm-tools, warg, and wasi-preview1-component-adapter-provider crates. In particular, this updates to the wasm-encoder that always uses a leading zero byte, following WebAssembly/component-model#263. Fixes #350. * Update the tests for the new wit-component API. * rustfmt * When assigning a world a new name, update `pkg.worlds` too. --- Cargo.lock | 614 +++++++++++++++++++++++++------------------ Cargo.toml | 16 +- src/bindings.rs | 9 +- src/lib.rs | 2 +- tests/support/mod.rs | 4 +- 5 files changed, 383 insertions(+), 262 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eefe0f86..6cbb3708 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -49,6 +49,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -129,10 +135,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] -name = "arrayvec" -version = "0.5.2" +name = "arraydeque" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "assert_cmd" @@ -365,7 +371,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "rustversion", - "serde 1.0.209", + "serde", "serde_json", "serde_path_to_error", "serde_urlencoded", @@ -472,6 +478,9 @@ name = "bitflags" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] [[package]] name = "bitmaps" @@ -521,7 +530,7 @@ checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "regex-automata 0.4.7", - "serde 1.0.209", + "serde", ] [[package]] @@ -538,9 +547,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "camino" @@ -548,7 +557,7 @@ version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ - "serde 1.0.209", + "serde", ] [[package]] @@ -574,7 +583,7 @@ dependencies = [ "rand_core", "rpassword", "semver", - "serde 1.0.209", + "serde", "serde_json", "shell-escape", "tempfile", @@ -587,16 +596,16 @@ dependencies = [ "warg-protocol", "warg-server", "wasi-preview1-component-adapter-provider", - "wasm-metadata 0.216.0", + "wasm-metadata 0.220.0", "wasm-pkg-client", - "wasmparser 0.216.0", - "wasmprinter 0.216.0", + "wasmparser 0.220.0", + "wasmprinter 0.220.0", "wat", "which", "wit-bindgen-core", "wit-bindgen-rust", - "wit-component 0.216.0", - "wit-parser 0.216.0", + "wit-component 0.220.0", + "wit-parser 0.220.0", ] [[package]] @@ -612,16 +621,16 @@ dependencies = [ "log", "owo-colors", "semver", - "serde 1.0.209", + "serde", "tokio", "tokio-util", "toml_edit 0.22.20", - "unicode-width", + "unicode-width 0.1.13", "url", "wasm-pkg-client", "windows-sys 0.52.0", - "wit-component 0.216.0", - "wit-parser 0.216.0", + "wit-component 0.220.0", + "wit-parser 0.220.0", ] [[package]] @@ -631,7 +640,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1124054becb9262cc15c5e96e82f0d782f2aed3a3034d1f71a6385a6fa9e9595" dependencies = [ "home", - "serde 1.0.209", + "serde", "serde_derive", "toml_edit 0.22.20", ] @@ -642,7 +651,7 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ - "serde 1.0.209", + "serde", ] [[package]] @@ -654,7 +663,7 @@ dependencies = [ "camino", "cargo-platform", "semver", - "serde 1.0.209", + "serde", "serde_json", "thiserror", ] @@ -692,8 +701,8 @@ dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", - "num-traits 0.2.19", - "serde 1.0.209", + "num-traits", + "serde", "wasm-bindgen", "windows-targets 0.52.6", ] @@ -765,18 +774,21 @@ dependencies = [ [[package]] name = "config" -version = "0.11.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1b9d958c2b1368a663f05538fc1b5975adce1e19f435acceae987aceeeb369" +checksum = "68578f196d2a33ff61b27fae256c3164f65e36382648e30666dde05b8cc9dfdf" dependencies = [ - "lazy_static 1.5.0", + "async-trait", + "convert_case", + "json5", "nom", + "pathdiff", + "ron", "rust-ini", - "serde 1.0.209", - "serde-hjson", + "serde", "serde_json", - "toml 0.5.11", - "yaml-rust", + "toml", + "yaml-rust2", ] [[package]] @@ -788,7 +800,7 @@ dependencies = [ "encode_unicode", "lazy_static 1.5.0", "libc", - "unicode-width", + "unicode-width 0.1.13", "windows-sys 0.52.0", ] @@ -798,6 +810,35 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -829,6 +870,12 @@ version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + [[package]] name = "crypto-bigint" version = "0.5.5" @@ -904,7 +951,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", - "serde 1.0.209", + "serde", ] [[package]] @@ -982,11 +1029,11 @@ dependencies = [ [[package]] name = "directories" -version = "4.0.1" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" +checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" dependencies = [ - "dirs-sys 0.3.7", + "dirs-sys", ] [[package]] @@ -995,30 +1042,28 @@ version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "dirs-sys 0.4.1", + "dirs-sys", ] [[package]] name = "dirs-sys" -version = "0.3.7" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", + "option-ext", "redox_users", - "winapi", + "windows-sys 0.48.0", ] [[package]] -name = "dirs-sys" -version = "0.4.1" +name = "dlv-list" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.48.0", + "const-random", ] [[package]] @@ -1034,7 +1079,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31951f49556e34d90ed28342e1df7e1cb7a229c4cab0aecc627b5d91edd41d07" dependencies = [ "base64 0.21.7", - "serde 1.0.209", + "serde", "serde_json", ] @@ -1100,7 +1145,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" dependencies = [ "enumflags2_derive", - "serde 1.0.209", + "serde", ] [[package]] @@ -1229,7 +1274,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" dependencies = [ - "num-traits 0.2.19", + "num-traits", ] [[package]] @@ -1447,7 +1492,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", - "serde 1.0.209", + "allocator-api2", + "serde", +] + +[[package]] +name = "hashlink" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +dependencies = [ + "hashbrown 0.14.5", ] [[package]] @@ -1709,7 +1764,7 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", - "serde 1.0.209", + "serde", ] [[package]] @@ -1720,7 +1775,7 @@ checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", - "serde 1.0.209", + "serde", ] [[package]] @@ -1809,6 +1864,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json5" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +dependencies = [ + "pest", + "pest_derive", + "serde", +] + [[package]] name = "jwt" version = "0.16.0" @@ -1819,7 +1885,7 @@ dependencies = [ "crypto-common", "digest", "hmac", - "serde 1.0.209", + "serde", "serde_json", "sha2", ] @@ -1856,19 +1922,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" -[[package]] -name = "lexical-core" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" -dependencies = [ - "arrayvec", - "bitflags 1.3.2", - "cfg-if", - "ryu", - "static_assertions", -] - [[package]] name = "libc" version = "0.2.158" @@ -1885,12 +1938,6 @@ dependencies = [ "libc", ] -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - [[package]] name = "linux-keyutils" version = "0.2.4" @@ -2010,7 +2057,7 @@ dependencies = [ "cfg-if", "miette-derive", "thiserror", - "unicode-width", + "unicode-width 0.1.13", ] [[package]] @@ -2040,6 +2087,12 @@ dependencies = [ "unicase", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.7.4" @@ -2081,13 +2134,12 @@ dependencies = [ [[package]] name = "nom" -version = "5.1.3" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08959a387a676302eebf4ddbcbc611da04285579f76f88ee0506c63b1a61dd4b" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ - "lexical-core", "memchr", - "version_check", + "minimal-lexical", ] [[package]] @@ -2126,7 +2178,7 @@ dependencies = [ "num-integer", "num-iter", "num-rational", - "num-traits 0.2.19", + "num-traits", ] [[package]] @@ -2136,7 +2188,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", - "num-traits 0.2.19", + "num-traits", ] [[package]] @@ -2145,7 +2197,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ - "num-traits 0.2.19", + "num-traits", ] [[package]] @@ -2160,7 +2212,7 @@ version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "num-traits 0.2.19", + "num-traits", ] [[package]] @@ -2171,7 +2223,7 @@ checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", - "num-traits 0.2.19", + "num-traits", ] [[package]] @@ -2182,16 +2234,7 @@ checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ "num-bigint", "num-integer", - "num-traits 0.2.19", -] - -[[package]] -name = "num-traits" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" -dependencies = [ - "num-traits 0.2.19", + "num-traits", ] [[package]] @@ -2214,9 +2257,9 @@ dependencies = [ [[package]] name = "oci-client" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e050f8bab3f561aa5ab537e1a6ed24006d58b4ee93cd6bb2c0cb822726f306" +checksum = "474675fdc023fbcc9dcf4782e938a3a1ae5fd469c728d8db40599bd25c77e1ba" dependencies = [ "bytes", "chrono", @@ -2229,7 +2272,7 @@ dependencies = [ "olpc-cjson", "regex", "reqwest", - "serde 1.0.209", + "serde", "serde_json", "sha2", "thiserror", @@ -2247,7 +2290,7 @@ dependencies = [ "derive_builder", "getset", "regex", - "serde 1.0.209", + "serde", "serde_json", "strum", "strum_macros", @@ -2256,14 +2299,14 @@ dependencies = [ [[package]] name = "oci-wasm" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8403a1f0598a12452babb25a7bdf815269c4d83b064862a560879e66e3e85ee" +checksum = "f147e207436277483c23cb8e55ccd039ee1657c6a8d19471a6de187da6973ef8" dependencies = [ "anyhow", "chrono", "oci-client", - "serde 1.0.209", + "serde", "serde_json", "sha2", "tokio", @@ -2277,7 +2320,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d637c9c15b639ccff597da8f4fa968300651ad2f1e968aefc3b4927a6fb2027a" dependencies = [ - "serde 1.0.209", + "serde", "serde_json", "unicode-normalization", ] @@ -2300,7 +2343,17 @@ version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" dependencies = [ - "num-traits 0.2.19", + "num-traits", +] + +[[package]] +name = "ordered-multimap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" +dependencies = [ + "dlv-list", + "hashbrown 0.14.5", ] [[package]] @@ -2385,7 +2438,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1030c719b0ec2a2d25a5df729d6cff1acf3cc230bf766f4f97833591f7577b90" dependencies = [ "base64 0.21.7", - "serde 1.0.209", + "serde", ] [[package]] @@ -2412,7 +2465,7 @@ dependencies = [ "pbjson-build", "prost", "prost-build", - "serde 1.0.209", + "serde", ] [[package]] @@ -2430,6 +2483,51 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "pest" +version = "2.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "pest_meta" +version = "2.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + [[package]] name = "petgraph" version = "0.6.5" @@ -2734,16 +2832,16 @@ dependencies = [ [[package]] name = "ptree" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0de80796b316aec75344095a6d2ef68ec9b8f573b9e7adc821149ba3598e270" +checksum = "709c3b241d6a6ccc1933b1c6d7d997fae2b3dff8981f6780eac67df03c32f3ef" dependencies = [ "ansi_term", "atty", "config", "directories", "petgraph", - "serde 1.0.209", + "serde", "serde-value", "tint", ] @@ -2937,7 +3035,7 @@ dependencies = [ "rustls", "rustls-pemfile", "rustls-pki-types", - "serde 1.0.209", + "serde", "serde_json", "serde_urlencoded", "sync_wrapper 1.0.1", @@ -2981,6 +3079,18 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64 0.21.7", + "bitflags 2.6.0", + "serde", + "serde_derive", +] + [[package]] name = "rpassword" version = "7.3.1" @@ -3004,9 +3114,13 @@ dependencies = [ [[package]] name = "rust-ini" -version = "0.13.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e52c148ef37f8c375d49d5a73aa70713125b7f19095948a923f80afdeb22ec2" +checksum = "3e0698206bcb8882bf2a9ecb4c1e7785db57ff052297085a6efd4fe42302068a" +dependencies = [ + "cfg-if", + "ordered-multimap", +] [[package]] name = "rustc-demangle" @@ -3135,7 +3249,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" dependencies = [ - "serde 1.0.209", + "serde", "zeroize", ] @@ -3153,7 +3267,7 @@ dependencies = [ "num", "once_cell", "rand", - "serde 1.0.209", + "serde", "sha2", "zbus", ] @@ -3187,15 +3301,9 @@ version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ - "serde 1.0.209", + "serde", ] -[[package]] -name = "serde" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" - [[package]] name = "serde" version = "1.0.209" @@ -3205,18 +3313,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-hjson" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a3a4e0ea8a88553209f6cc6cfe8724ecad22e1acf372793c27d995290fe74f8" -dependencies = [ - "lazy_static 1.5.0", - "num-traits 0.1.43", - "regex", - "serde 0.8.23", -] - [[package]] name = "serde-value" version = "0.7.0" @@ -3224,7 +3320,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" dependencies = [ "ordered-float", - "serde 1.0.209", + "serde", ] [[package]] @@ -3247,7 +3343,7 @@ dependencies = [ "itoa", "memchr", "ryu", - "serde 1.0.209", + "serde", ] [[package]] @@ -3257,7 +3353,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" dependencies = [ "itoa", - "serde 1.0.209", + "serde", ] [[package]] @@ -3277,7 +3373,7 @@ version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ - "serde 1.0.209", + "serde", ] [[package]] @@ -3289,7 +3385,7 @@ dependencies = [ "form_urlencoded", "itoa", "ryu", - "serde 1.0.209", + "serde", ] [[package]] @@ -3303,7 +3399,7 @@ dependencies = [ "hex", "indexmap 1.9.3", "indexmap 2.5.0", - "serde 1.0.209", + "serde", "serde_derive", "serde_json", "serde_with_macros", @@ -3331,7 +3427,7 @@ dependencies = [ "indexmap 2.5.0", "itoa", "ryu", - "serde 1.0.209", + "serde", "unsafe-libyaml", ] @@ -3649,7 +3745,7 @@ dependencies = [ "itoa", "num-conv", "powerfmt", - "serde 1.0.209", + "serde", "time-core", "time-macros", ] @@ -3679,6 +3775,15 @@ dependencies = [ "lazy_static 0.2.11", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tinyvec" version = "1.8.0" @@ -3759,22 +3864,13 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde 1.0.209", -] - [[package]] name = "toml" version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ - "serde 1.0.209", + "serde", "serde_spanned", "toml_datetime", "toml_edit 0.22.20", @@ -3786,7 +3882,7 @@ version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ - "serde 1.0.209", + "serde", ] [[package]] @@ -3807,7 +3903,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ "indexmap 2.5.0", - "serde 1.0.209", + "serde", "serde_spanned", "toml_datetime", "winnow 0.6.18", @@ -3940,6 +4036,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + [[package]] name = "uds_windows" version = "1.1.0" @@ -3981,12 +4083,24 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + [[package]] name = "unicode-width" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + [[package]] name = "unicode-xid" version = "0.2.5" @@ -4014,7 +4128,7 @@ dependencies = [ "form_urlencoded", "idna", "percent-encoding", - "serde 1.0.209", + "serde", ] [[package]] @@ -4071,13 +4185,13 @@ dependencies = [ [[package]] name = "warg-api" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44b422328c3a86be288f569694aa97df958ade0cd9514ed00bc562952c6778e" +checksum = "51cb70a7a94a8ac0e1d846495ad5391d998713b4949a04dcc8b75efc0b693554" dependencies = [ "indexmap 2.5.0", "itertools 0.12.1", - "serde 1.0.209", + "serde", "serde_with", "thiserror", "warg-crypto", @@ -4086,9 +4200,9 @@ dependencies = [ [[package]] name = "warg-client" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd1af3c0a73c56613c152fb99048af889a57063756299460c8fc26fea52ddccc" +checksum = "8879f4b84479b2577adc1b612ca774fc2b493924234b01923bdbd2756c887e7c" dependencies = [ "anyhow", "async-recursion", @@ -4109,7 +4223,7 @@ dependencies = [ "reqwest", "secrecy", "semver", - "serde 1.0.209", + "serde", "serde_json", "sha256", "tempfile", @@ -4132,9 +4246,9 @@ dependencies = [ [[package]] name = "warg-crypto" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52fb6f3a64e3fef5425a0ab2b4354f1e49a699b76d58dd91d632483634f10474" +checksum = "038397a3acf14e6397a483cdc25306ad228f70eb5b498d16cd842fa8b3df585a" dependencies = [ "anyhow", "base64 0.21.7", @@ -4145,7 +4259,7 @@ dependencies = [ "p256", "rand_core", "secrecy", - "serde 1.0.209", + "serde", "sha2", "signature", "thiserror", @@ -4153,9 +4267,9 @@ dependencies = [ [[package]] name = "warg-protobuf" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bbb2d353497af3f6334bce11bfe69d638eedbb6d5059992acb2a05dd0beef5b" +checksum = "1b51028c12a18fe5067d563d4e3270d04a822471a5d1b975cc884113cf9b2f9d" dependencies = [ "anyhow", "pbjson", @@ -4166,15 +4280,15 @@ dependencies = [ "prost-types", "protox", "regex", - "serde 1.0.209", + "serde", "warg-crypto", ] [[package]] name = "warg-protocol" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a710c66d8b5f2a7b046ecd2d45121530f561fd5c699b9c85ee49d332cfe773" +checksum = "f94692783b60367e260d3c0091872aef7d9ce2a937765194d04c71814f23ec84" dependencies = [ "anyhow", "base64 0.21.7", @@ -4184,7 +4298,7 @@ dependencies = [ "prost", "prost-types", "semver", - "serde 1.0.209", + "serde", "serde_with", "thiserror", "warg-crypto", @@ -4195,9 +4309,9 @@ dependencies = [ [[package]] name = "warg-server" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331adb004508a909dfae729efb708a762fdfbdcb7dd5a1ac14db46a7aa1532ac" +checksum = "a44481c65db7290d41dc2f50db903c19ca0245b30c561280b42f047e7831f1f3" dependencies = [ "anyhow", "axum", @@ -4206,12 +4320,12 @@ dependencies = [ "futures", "indexmap 2.5.0", "secrecy", - "serde 1.0.209", + "serde", "tempfile", "thiserror", "tokio", "tokio-util", - "toml 0.8.19", + "toml", "tower", "tower-http", "tracing", @@ -4226,9 +4340,9 @@ dependencies = [ [[package]] name = "warg-transparency" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b950a71a544b7ac8f5a5e95f43886ac97c3fe5c7080b955b1b534037596d7be" +checksum = "f6b5ce0d43d043e084016b2814ae3a5e165e993d65be99be6afad0b74c2f9231" dependencies = [ "anyhow", "indexmap 2.5.0", @@ -4246,9 +4360,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi-preview1-component-adapter-provider" -version = "24.0.0" +version = "24.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e6cadfa74538edd5409b6f8c79628436529138e9618b7373bec7aae7805835" +checksum = "0f76d9fa52234153eeb40b088de91a8c13dc28a912cf6f31cd89ca4bac9024e0" [[package]] name = "wasm-bindgen" @@ -4329,7 +4443,7 @@ dependencies = [ "indexmap 2.5.0", "log", "petgraph", - "serde 1.0.209", + "serde", "serde_derive", "serde_yaml", "smallvec", @@ -4350,61 +4464,61 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.216.0" +version = "0.219.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04c23aebea22c8a75833ae08ed31ccc020835b12a41999e58c31464271b94a88" +checksum = "29cbbd772edcb8e7d524a82ee8cef8dd046fc14033796a754c3ad246d019fa54" dependencies = [ "leb128", - "wasmparser 0.216.0", + "wasmparser 0.219.1", ] [[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-metadata" -version = "0.216.0" +version = "0.219.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47c8154d703a6b0e45acf6bd172fa002fc3c7058a9f7615e517220aeca27c638" +checksum = "2af5a8e37a5e996861e1813f8de30911c47609c9ff51a7284f7dbd754dc3a9f3" dependencies = [ "anyhow", "indexmap 2.5.0", - "serde 1.0.209", + "serde", "serde_derive", "serde_json", "spdx", - "wasm-encoder 0.216.0", - "wasmparser 0.216.0", + "wasm-encoder 0.219.1", + "wasmparser 0.219.1", ] [[package]] name = "wasm-metadata" -version = "0.219.1" +version = "0.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af5a8e37a5e996861e1813f8de30911c47609c9ff51a7284f7dbd754dc3a9f3" +checksum = "3f3e5f5920c5abfc45573c89b07b38efdaae1515ef86f83dad12d60e50ecd62b" dependencies = [ "anyhow", "indexmap 2.5.0", - "serde 1.0.209", + "serde", "serde_derive", "serde_json", "spdx", - "wasm-encoder 0.219.1", - "wasmparser 0.219.1", + "wasm-encoder 0.220.0", + "wasmparser 0.220.0", ] [[package]] name = "wasm-pkg-client" -version = "0.8.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff3e17576a2a2170f5ec4c2834c3a05504b3c38f1cdd669e48c4b570e47bfb4" +checksum = "bde35f9ffbc6917f7876f9d07a1083eacb5915736ecfd64f784f4d634384c823" dependencies = [ "anyhow", "async-trait", @@ -4416,13 +4530,13 @@ dependencies = [ "oci-client", "oci-wasm", "secrecy", - "serde 1.0.209", + "serde", "serde_json", "sha2", "thiserror", "tokio", "tokio-util", - "toml 0.8.19", + "toml", "tracing", "tracing-subscriber", "url", @@ -4436,9 +4550,9 @@ dependencies = [ [[package]] name = "wasm-pkg-common" -version = "0.8.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da50c3adeef70b9ffbef0000eedff727ea050148a42cfc8a27f25f1e3bb100ae" +checksum = "2d9a1ebffee2a4b3c19d64b264423ddff3a4303e2c3a0dc13f4c9211618e2b67" dependencies = [ "anyhow", "bytes", @@ -4447,12 +4561,12 @@ dependencies = [ "http", "reqwest", "semver", - "serde 1.0.209", + "serde", "serde_json", "sha2", "thiserror", "tokio", - "toml 0.8.19", + "toml", "tracing", ] @@ -4482,29 +4596,29 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.216.0" +version = "0.219.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcdee6bea3619d311fb4b299721e89a986c3470f804b6d534340e412589028e3" +checksum = "5c771866898879073c53b565a6c7b49953795159836714ac56a5befb581227c5" dependencies = [ "ahash", "bitflags 2.6.0", "hashbrown 0.14.5", "indexmap 2.5.0", "semver", - "serde 1.0.209", ] [[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.6.0", "hashbrown 0.14.5", "indexmap 2.5.0", "semver", + "serde", ] [[package]] @@ -4519,33 +4633,33 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.216.0" +version = "0.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f82916f3892e53620639217d6ec78fe15c678352a3fbf3f3745b6417d0bd70f" +checksum = "ae749f2c66587777ce9ad0e8c632e72c77574336b17d2f040a47cffbd92198c7" dependencies = [ "anyhow", "termcolor", - "wasmparser 0.216.0", + "wasmparser 0.220.0", ] [[package]] name = "wast" -version = "216.0.0" +version = "220.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7eb1f2eecd913fdde0dc6c3439d0f24530a98ac6db6cb3d14d92a5328554a08" +checksum = "4e708c8de08751fd66e70961a32bae9d71901f14a70871e181cb8461a3bb3165" dependencies = [ "bumpalo", "leb128", "memchr", - "unicode-width", - "wasm-encoder 0.216.0", + "unicode-width 0.2.0", + "wasm-encoder 0.220.0", ] [[package]] name = "wat" -version = "1.216.0" +version = "1.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac0409090fb5154f95fb5ba3235675fd9e579e731524d63b6a2f653e1280c82a" +checksum = "de4f1d7d59614ba690541360102b995c4eb1b9ed373701d5102cc1a968b1c5a3" dependencies = [ "wast", ] @@ -4825,103 +4939,103 @@ checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" [[package]] name = "wit-bindgen-core" -version = "0.31.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175a2edcf18d1efd1412cb560b895dd09903f4fe73c3a597fbb0075ad86a03e8" +checksum = "19857cff2a480fece56ea43f9199322ee5014688a3539ebf8d29ae62d75a3a1f" dependencies = [ "anyhow", "heck 0.5.0", - "wit-parser 0.216.0", + "wit-parser 0.220.0", ] [[package]] name = "wit-bindgen-rust" -version = "0.31.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a1c119b99edc4fc44ebfd3c461337b18f9db35388358344750b4fcfc788986b" +checksum = "6d894e599c161d71acb6a78e8ec8a609a09c2bb227de50829f5afbd03b844a69" dependencies = [ "anyhow", "heck 0.5.0", "indexmap 2.5.0", "prettyplease", "syn 2.0.77", - "wasm-metadata 0.216.0", + "wasm-metadata 0.220.0", "wit-bindgen-core", - "wit-component 0.216.0", + "wit-component 0.220.0", ] [[package]] name = "wit-component" -version = "0.216.0" +version = "0.219.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e2ca3ece38ea2447a9069b43074ba73d96dde1944cba276c54e41371745f9dc" +checksum = "ad1673163c0cb14a6a19ddbf44dd4efe6f015ec1ebb8156710ac32501f19fba2" dependencies = [ "anyhow", "bitflags 2.6.0", "indexmap 2.5.0", "log", - "serde 1.0.209", + "serde", "serde_derive", "serde_json", - "wasm-encoder 0.216.0", - "wasm-metadata 0.216.0", - "wasmparser 0.216.0", - "wit-parser 0.216.0", + "wasm-encoder 0.219.1", + "wasm-metadata 0.219.1", + "wasmparser 0.219.1", + "wit-parser 0.219.1", ] [[package]] name = "wit-component" -version = "0.219.1" +version = "0.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1673163c0cb14a6a19ddbf44dd4efe6f015ec1ebb8156710ac32501f19fba2" +checksum = "73ccedf54cc65f287da268d64d2bf4f7530d2cfb2296ffbe3ad5f65567e4cf53" dependencies = [ "anyhow", "bitflags 2.6.0", "indexmap 2.5.0", "log", - "serde 1.0.209", + "serde", "serde_derive", "serde_json", - "wasm-encoder 0.219.1", - "wasm-metadata 0.219.1", - "wasmparser 0.219.1", - "wit-parser 0.219.1", + "wasm-encoder 0.220.0", + "wasm-metadata 0.220.0", + "wasmparser 0.220.0", + "wit-parser 0.220.0", ] [[package]] name = "wit-parser" -version = "0.216.0" +version = "0.219.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4d108165c1167a4ccc8a803dcf5c28e0a51d6739fd228cc7adce768632c764c" +checksum = "4a86f669283257e8e424b9a4fc3518e3ade0b95deb9fbc0f93a1876be3eda598" dependencies = [ "anyhow", "id-arena", "indexmap 2.5.0", "log", "semver", - "serde 1.0.209", + "serde", "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.216.0", + "wasmparser 0.219.1", ] [[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", "indexmap 2.5.0", "log", "semver", - "serde 1.0.209", + "serde", "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.219.1", + "wasmparser 0.220.0", ] [[package]] @@ -4935,12 +5049,14 @@ dependencies = [ ] [[package]] -name = "yaml-rust" -version = "0.4.5" +name = "yaml-rust2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +checksum = "8902160c4e6f2fb145dbe9d6760a75e3c9522d8bf796ed7047c85919ac7115f8" dependencies = [ - "linked-hash-map", + "arraydeque", + "encoding_rs", + "hashlink", ] [[package]] @@ -4971,7 +5087,7 @@ dependencies = [ "once_cell", "ordered-stream", "rand", - "serde 1.0.209", + "serde", "serde_repr", "sha1", "static_assertions", @@ -5004,7 +5120,7 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" dependencies = [ - "serde 1.0.209", + "serde", "static_assertions", "zvariant", ] @@ -5045,7 +5161,7 @@ dependencies = [ "byteorder", "enumflags2", "libc", - "serde 1.0.209", + "serde", "static_assertions", "zvariant_derive", ] diff --git a/Cargo.toml b/Cargo.toml index 13e76a06..90ba8c1d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -106,16 +106,16 @@ warg-crypto = "0.9.0" warg-protocol = "0.9.0" warg-server = "0.9.0" wasi-preview1-component-adapter-provider = "24" -wasm-metadata = "0.216.0" +wasm-metadata = "0.220.0" wasm-pkg-client = "0.8.0" -wasmparser = "0.216.0" -wasmprinter = "0.216.0" -wat = "1.216.0" +wasmparser = "0.220.0" +wasmprinter = "0.220.0" +wat = "1.220.0" which = "6.0.1" -wit-bindgen-core = "0.31.0" -wit-bindgen-rust = "0.31.0" -wit-component = "0.216.0" -wit-parser = "0.216.0" +wit-bindgen-core = "0.35.0" +wit-bindgen-rust = "0.35.0" +wit-component = "0.220.0" +wit-parser = "0.220.0" [profile.release] panic = "abort" diff --git a/src/bindings.rs b/src/bindings.rs index 3930225a..5ebea307 100644 --- a/src/bindings.rs +++ b/src/bindings.rs @@ -1,13 +1,14 @@ //! Module for bindings generation. use std::{ collections::{HashMap, HashSet}, + mem, path::{Path, PathBuf}, }; use anyhow::{bail, Context, Result}; use cargo_component_core::registry::DecodedDependency; use heck::ToKebabCase; -use indexmap::{IndexMap, IndexSet}; +use indexmap::{map::MutableKeys, IndexMap, IndexSet}; use semver::Version; use wasm_pkg_client::PackageRef; use wit_bindgen_core::Files; @@ -186,12 +187,16 @@ impl<'a> BindingsGenerator<'a> { // Set the world name as currently it defaults to "root" // For now, set it to the name from the id let world = &mut resolve.worlds[component_world_id]; - world.name = id.name().to_string(); + let old_name = mem::replace(&mut world.name, id.name().to_string()); let pkg = &mut resolve.packages[world.package.unwrap()]; pkg.name.namespace = id.namespace().to_string(); pkg.name.name = id.name().to_string(); + // Update the world name in the `pkg.worlds` map too. + let (_index, key, _value) = pkg.worlds.get_full_mut2(&old_name).unwrap(); + *key = id.name().to_string(); + let source = merged .merge(resolve) .with_context(|| format!("failed to merge world of dependency `{id}`"))? diff --git a/src/lib.rs b/src/lib.rs index 28198cfe..972ac70b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -946,7 +946,7 @@ fn componentize( )?; } - let encoder = ComponentEncoder::default() + let mut encoder = ComponentEncoder::default() .module(bytes)? .import_name_map(import_name_map.clone()) .adapter( diff --git a/tests/support/mod.rs b/tests/support/mod.rs index 451c2574..5525594d 100644 --- a/tests/support/mod.rs +++ b/tests/support/mod.rs @@ -103,8 +103,8 @@ pub async fn publish_wit( ) .context("failed to resolve wit for publishing")?; - let bytes = wit_component::encode(Some(true), &resolve, pkg) - .context("failed to encode wit for publishing")?; + let bytes = + wit_component::encode(&resolve, pkg).context("failed to encode wit for publishing")?; publish(config, &id.parse()?, version, bytes).await } From 96cb023dc6e9500b0867926e5fe056aa0f7a83cb Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Fri, 15 Nov 2024 06:30:40 -0800 Subject: [PATCH 3/5] Don't use `MutableKeys` to set the new world name. (#353) The [`MutableKeys` trait] requires that the new key have the same hash value as the old key. Since that's not true when we're changing a world name, rebuild a new `IndexMap` instead, to avoid perterbing the key order. [`MutableKeys` trait]: https://docs.rs/indexmap/latest/indexmap/map/trait.MutableKeys.html --- src/bindings.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/bindings.rs b/src/bindings.rs index 5ebea307..90c217e7 100644 --- a/src/bindings.rs +++ b/src/bindings.rs @@ -8,7 +8,7 @@ use std::{ use anyhow::{bail, Context, Result}; use cargo_component_core::registry::DecodedDependency; use heck::ToKebabCase; -use indexmap::{map::MutableKeys, IndexMap, IndexSet}; +use indexmap::{IndexMap, IndexSet}; use semver::Version; use wasm_pkg_client::PackageRef; use wit_bindgen_core::Files; @@ -193,9 +193,19 @@ impl<'a> BindingsGenerator<'a> { pkg.name.namespace = id.namespace().to_string(); pkg.name.name = id.name().to_string(); - // Update the world name in the `pkg.worlds` map too. - let (_index, key, _value) = pkg.worlds.get_full_mut2(&old_name).unwrap(); - *key = id.name().to_string(); + // Update the world name in the `pkg.worlds` map too. Don't use + // `MutableKeys` because the new world name may not have the same + // hash as the old world name. + let mut new_worlds = IndexMap::new(); + for (name, world) in pkg.worlds.iter() { + if name == &old_name { + new_worlds.insert(id.name().to_string(), *world); + } else { + new_worlds.insert(name.clone(), *world); + } + } + assert_eq!(pkg.worlds.len(), new_worlds.len()); + pkg.worlds = new_worlds; let source = merged .merge(resolve) From 0186a827e7aebeeb3d6600cef4c84b63baafe1e7 Mon Sep 17 00:00:00 2001 From: Tomas Olvecky Date: Sat, 16 Nov 2024 04:08:36 +0100 Subject: [PATCH 4/5] Avoid overwriting `bindings.rs` if content is unchanged (#346) Compare the contents of `bindings.rs` before overwriting. If no changes are detected, skip the overwrite to prevent unnecessary recompilation. --- src/lib.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 972ac70b..be055dbe 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -855,13 +855,14 @@ async fn generate_package_bindings( path = output_dir.display() ) })?; - - fs::write(&bindings_path, bindings).with_context(|| { - format!( - "failed to write bindings file `{path}`", - path = bindings_path.display() - ) - })?; + if fs::read_to_string(&bindings_path).unwrap_or_default() != bindings { + fs::write(&bindings_path, bindings).with_context(|| { + format!( + "failed to write bindings file `{path}`", + path = bindings_path.display() + ) + })?; + } Ok(import_name_map) } From 1e58afa097e153797e4195cf3f2bc749a3654f31 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Mon, 18 Nov 2024 08:18:32 -0800 Subject: [PATCH 5/5] Simply the options used with wit-bindgen-rust. (#354) Use the default `bitflags_path`, because it's now the same as what we were overriding it to be. And add a comment to the `runtime_path` option, to explain why we override it. --- src/bindings.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/bindings.rs b/src/bindings.rs index 90c217e7..7c34f416 100644 --- a/src/bindings.rs +++ b/src/bindings.rs @@ -110,8 +110,13 @@ impl<'a> BindingsGenerator<'a> { }, additional_derive_attributes: settings.derives.clone(), std_feature: settings.std_feature, + // We use pregenerated bindings, rather than the `generate!` macro + // from the `wit-bindgen` crate, so instead of getting the runtime + // from the default path of `wit_bindgen::rt`, which is a re-export + // of the `wit-bindgen-rt` API, we just use the `wit-bindgen-rt` + // crate directly. runtime_path: Some("wit_bindgen_rt".to_string()), - bitflags_path: Some("wit_bindgen_rt::bitflags".to_string()), + bitflags_path: None, raw_strings: settings.raw_strings, skip: settings.skip.clone(), stubs: settings.stubs,