From b0193cc0fa16bfdac15f7ff4f6ab130a1d427863 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Tue, 4 Jun 2024 11:17:31 +0200 Subject: [PATCH 1/9] Bump cosmwasm-std and cosmwasm-vm --- libwasmvm/Cargo.lock | 1122 +++++++++++++++++++++++++++++++----------- libwasmvm/Cargo.toml | 12 +- 2 files changed, 851 insertions(+), 283 deletions(-) diff --git a/libwasmvm/Cargo.lock b/libwasmvm/Cargo.lock index e3964f6cf..5a20e671f 100644 --- a/libwasmvm/Cargo.lock +++ b/libwasmvm/Cargo.lock @@ -29,10 +29,149 @@ dependencies = [ ] [[package]] -name = "arrayvec" -version = "0.7.4" +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "ark-bls12-381" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-serialize", + "ark-std", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", + "itertools", + "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "derivative", + "digest", + "itertools", + "num-bigint", + "num-traits", + "paste", + "rayon", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive", + "ark-std", + "digest", + "num-bigint", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", + "rayon", +] [[package]] name = "atty" @@ -79,16 +218,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] -name = "base64ct" -version = "1.6.0" +name = "base64" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bech32" -version = "0.9.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" +checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" [[package]] name = "bitflags" @@ -114,15 +253,6 @@ dependencies = [ "wyz", ] -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -134,9 +264,9 @@ dependencies = [ [[package]] name = "bnum" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56953345e39537a3e18bdaeba4cb0c58a78c1f61f361dc0fa7c5c7340ae87c5f" +checksum = "3e31ea183f6ee62ac8b8a8cf7feddd766317adfb13ff469de57ce033efd6a790" [[package]] name = "bumpalo" @@ -177,6 +307,18 @@ name = "bytes" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +dependencies = [ + "serde", +] + +[[package]] +name = "bytesize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" +dependencies = [ + "serde", +] [[package]] name = "cbindgen" @@ -185,7 +327,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da6bc11b07529f16944307272d5bd9b22530bc7d05751717c9d416586cedab49" dependencies = [ "clap", - "heck", + "heck 0.4.1", "indexmap 1.9.3", "log", "proc-macro2", @@ -194,7 +336,7 @@ dependencies = [ "serde_json", "syn 1.0.109", "tempfile", - "toml", + "toml 0.5.11", ] [[package]] @@ -261,55 +403,82 @@ dependencies = [ "windows-sys 0.33.0", ] +[[package]] +name = "cosmwasm-core" +version = "2.0.1" +source = "git+https://github.com/CosmWasm/cosmwasm.git?branch=main#3a6613fe902f1e55bb1c13f3a8901d176e8874ed" +dependencies = [ + "base64 0.22.1", + "bnum", + "cosmwasm-crypto", + "derive_more", + "hex", + "schemars", + "serde", + "sha2", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-crypto" version = "2.0.1" -source = "git+https://github.com/CosmWasm/cosmwasm.git?rev=v2.0.1#624963cd1395aef00f5f2c3fd3df553c5a8906b5" +source = "git+https://github.com/CosmWasm/cosmwasm.git?branch=main#3a6613fe902f1e55bb1c13f3a8901d176e8874ed" dependencies = [ - "digest 0.10.7", + "ark-bls12-381", + "ark-ec", + "ark-ff", + "ark-serialize", + "cfg-if", + "derive_more", + "digest", + "ecdsa", "ed25519-zebra", "k256", - "rand_core 0.6.4", + "num-traits", + "p256", + "rand_core", + "rayon", + "sha2", "thiserror", ] [[package]] name = "cosmwasm-derive" version = "2.0.1" -source = "git+https://github.com/CosmWasm/cosmwasm.git?rev=v2.0.1#624963cd1395aef00f5f2c3fd3df553c5a8906b5" +source = "git+https://github.com/CosmWasm/cosmwasm.git?branch=main#3a6613fe902f1e55bb1c13f3a8901d176e8874ed" dependencies = [ - "syn 1.0.109", + "proc-macro2", + "quote", + "syn 2.0.48", ] [[package]] name = "cosmwasm-std" version = "2.0.1" -source = "git+https://github.com/CosmWasm/cosmwasm.git?rev=v2.0.1#624963cd1395aef00f5f2c3fd3df553c5a8906b5" +source = "git+https://github.com/CosmWasm/cosmwasm.git?branch=main#3a6613fe902f1e55bb1c13f3a8901d176e8874ed" dependencies = [ - "base64", + "base64 0.22.1", "bech32", - "bnum", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", - "derivative", - "forward_ref", + "derive_more", "hex", + "rand_core", "schemars", "serde", "serde-json-wasm", - "sha2 0.10.8", - "static_assertions", + "sha2", "thiserror", ] [[package]] name = "cosmwasm-vm" version = "2.0.1" -source = "git+https://github.com/CosmWasm/cosmwasm.git?rev=v2.0.1#624963cd1395aef00f5f2c3fd3df553c5a8906b5" +source = "git+https://github.com/CosmWasm/cosmwasm.git?branch=main#3a6613fe902f1e55bb1c13f3a8901d176e8874ed" dependencies = [ "bech32", - "bitflags 1.3.2", - "bytecheck", "bytes", "clru", "cosmwasm-crypto", @@ -317,12 +486,14 @@ dependencies = [ "crc32fast", "derivative", "hex", + "rand_core", "schemars", "serde", "serde_json", - "sha2 0.10.8", + "sha2", "strum", "thiserror", + "tracing", "wasmer", "wasmer-middlewares", ] @@ -336,89 +507,6 @@ dependencies = [ "libc", ] -[[package]] -name = "cranelift-bforest" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2ab4512dfd3a6f4be184403a195f76e81a8a9f9e6c898e19d2dc3ce20e0115" -dependencies = [ - "cranelift-entity", -] - -[[package]] -name = "cranelift-codegen" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98b022ed2a5913a38839dfbafe6cf135342661293b08049843362df4301261dc" -dependencies = [ - "arrayvec", - "bumpalo", - "cranelift-bforest", - "cranelift-codegen-meta", - "cranelift-codegen-shared", - "cranelift-egraph", - "cranelift-entity", - "cranelift-isle", - "gimli 0.26.2", - "log", - "regalloc2", - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cranelift-codegen-meta" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "639307b45434ad112a98f8300c0f0ab085cbefcd767efcdef9ef19d4c0756e74" -dependencies = [ - "cranelift-codegen-shared", -] - -[[package]] -name = "cranelift-codegen-shared" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "278e52e29c53fcf32431ef08406c295699a70306d05a0715c5b1bf50e33a9ab7" - -[[package]] -name = "cranelift-egraph" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624b54323b06e675293939311943ba82d323bb340468ce1889be5da7932c8d73" -dependencies = [ - "cranelift-entity", - "fxhash", - "hashbrown 0.12.3", - "indexmap 1.9.3", - "log", - "smallvec", -] - -[[package]] -name = "cranelift-entity" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a59bcbca89c3f1b70b93ab3cbba5e5e0cbf3e63dadb23c7525cb142e21a9d4c" - -[[package]] -name = "cranelift-frontend" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d70abacb8cfef3dc8ff7e8836e9c1d70f7967dfdac824a4cd5e30223415aca6" -dependencies = [ - "cranelift-codegen", - "log", - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cranelift-isle" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "393bc73c451830ff8dbb3a07f61843d6cb41a084f9996319917c0b291ed785bb" - [[package]] name = "crc32fast" version = "1.3.2" @@ -469,7 +557,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core 0.6.4", + "rand_core", "subtle", "zeroize", ] @@ -486,25 +574,64 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "3.2.0" +version = "4.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest", + "fiat-crypto", + "platforms", + "rustc_version", "subtle", "zeroize", ] +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "darling" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +dependencies = [ + "darling_core 0.14.4", + "darling_macro 0.14.4", +] + [[package]] name = "darling" version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.20.3", + "darling_macro 0.20.3", +] + +[[package]] +name = "darling_core" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", ] [[package]] @@ -520,13 +647,24 @@ dependencies = [ "syn 2.0.48", ] +[[package]] +name = "darling_macro" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +dependencies = [ + "darling_core 0.14.4", + "quote", + "syn 1.0.109", +] + [[package]] name = "darling_macro" version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ - "darling_core", + "darling_core 0.20.3", "quote", "syn 2.0.48", ] @@ -575,12 +713,55 @@ dependencies = [ ] [[package]] -name = "digest" -version = "0.9.0" +name = "derive_builder" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8" dependencies = [ - "generic-array", + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" +dependencies = [ + "darling 0.14.4", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_builder_macro" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" +dependencies = [ + "derive_builder_core", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", + "unicode-xid", ] [[package]] @@ -589,12 +770,21 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.4", + "block-buffer", "const-oid", "crypto-common", "subtle", ] +[[package]] +name = "document-features" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +dependencies = [ + "litrs", +] + [[package]] name = "dyn-clone" version = "1.0.16" @@ -634,25 +824,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der", - "digest 0.10.7", + "digest", "elliptic-curve", "rfc6979", "signature", - "spki", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "signature", ] [[package]] name = "ed25519-zebra" -version = "3.1.0" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6" +checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" dependencies = [ "curve25519-dalek", - "hashbrown 0.12.3", + "ed25519", + "hashbrown 0.14.3", "hex", - "rand_core 0.6.4", - "serde", - "sha2 0.9.9", + "rand_core", + "sha2", "zeroize", ] @@ -670,12 +868,11 @@ checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct", "crypto-bigint", - "digest 0.10.7", + "digest", "ff", "generic-array", "group", - "pkcs8", - "rand_core 0.6.4", + "rand_core", "sec1", "subtle", "zeroize", @@ -716,7 +913,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08b6c6ab82d70f08844964ba10c7babb716de2ecaeab9be5717918a5177d3af" dependencies = [ - "darling", + "darling 0.20.3", "proc-macro2", "quote", "syn 2.0.48", @@ -756,10 +953,38 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "rand_core 0.6.4", + "rand_core", "subtle", ] +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "filetime" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "windows-sys 0.52.0", +] + +[[package]] +name = "flate2" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.7" @@ -767,10 +992,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] -name = "forward_ref" -version = "1.0.0" +name = "form_urlencoded" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] [[package]] name = "funty" @@ -778,15 +1006,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -800,13 +1019,15 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi", + "wasm-bindgen", ] [[package]] @@ -833,17 +1054,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core", "subtle", ] +[[package]] +name = "half" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" + [[package]] name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash", + "ahash 0.7.7", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.11", ] [[package]] @@ -851,6 +1087,10 @@ name = "hashbrown" version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash 0.8.11", + "allocator-api2", +] [[package]] name = "heck" @@ -858,6 +1098,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -879,7 +1125,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.7", + "digest", ] [[package]] @@ -888,6 +1134,16 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "indexmap" version = "1.9.3" @@ -896,6 +1152,7 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] @@ -906,6 +1163,16 @@ checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" dependencies = [ "equivalent", "hashbrown 0.14.3", + "serde", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", ] [[package]] @@ -932,9 +1199,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", - "sha2 0.10.8", - "signature", + "sha2", ] [[package]] @@ -951,9 +1216,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.152" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "linux-raw-sys" @@ -961,6 +1226,12 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + [[package]] name = "lock_api" version = "0.4.11" @@ -1014,25 +1285,53 @@ dependencies = [ name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "more-asserts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" + +[[package]] +name = "num-bigint" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" dependencies = [ - "autocfg", + "num-integer", + "num-traits", ] [[package]] -name = "miniz_oxide" -version = "0.7.1" +name = "num-integer" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "adler", + "num-traits", ] [[package]] -name = "more-asserts" -version = "0.2.2" +name = "num-traits" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] [[package]] name = "object" @@ -1049,18 +1348,24 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - [[package]] name = "os_str_bytes" version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + [[package]] name = "parking_lot_core" version = "0.9.9" @@ -1074,6 +1379,18 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + [[package]] name = "pin-project-lite" version = "0.2.13" @@ -1081,14 +1398,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] -name = "pkcs8" -version = "0.10.2" +name = "platforms" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] +checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" [[package]] name = "powerfmt" @@ -1096,6 +1409,21 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -1122,9 +1450,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" dependencies = [ "unicode-ident", ] @@ -1165,10 +1493,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] -name = "rand_core" -version = "0.5.1" +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] [[package]] name = "rand_core" @@ -1181,9 +1523,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -1208,18 +1550,6 @@ dependencies = [ "bitflags 1.3.2", ] -[[package]] -name = "regalloc2" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300d4fbfb40c1c66a78ba3ddd41c1110247cf52f97b87d0f2fc9209bd49b030c" -dependencies = [ - "fxhash", - "log", - "slice-group-by", - "smallvec", -] - [[package]] name = "region" version = "3.0.0" @@ -1287,6 +1617,15 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + [[package]] name = "rustix" version = "0.38.30" @@ -1322,6 +1661,7 @@ dependencies = [ "schemars_derive", "serde", "serde_json", + "url", ] [[package]] @@ -1357,7 +1697,6 @@ dependencies = [ "base16ct", "der", "generic-array", - "pkcs8", "subtle", "zeroize", ] @@ -1373,12 +1712,15 @@ name = "semver" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +dependencies = [ + "serde", +] [[package]] name = "serde" -version = "1.0.195" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] @@ -1403,11 +1745,21 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "serde_cbor" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" +dependencies = [ + "half", + "serde", +] + [[package]] name = "serde_derive" -version = "1.0.195" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", @@ -1437,16 +1789,25 @@ dependencies = [ ] [[package]] -name = "sha2" -version = "0.9.9" +name = "serde_spanned" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "serde", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.2.5", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", ] [[package]] @@ -1457,7 +1818,7 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.7", + "digest", ] [[package]] @@ -1476,8 +1837,8 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", + "digest", + "rand_core", ] [[package]] @@ -1486,28 +1847,12 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" -[[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.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1528,20 +1873,20 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strum" -version = "0.25.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.25.3" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +checksum = "f7993a8e3a9e88a00351486baae9522c91b123a088f76469e5bd5cc17198ea87" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", @@ -1582,6 +1927,17 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tar" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +dependencies = [ + "filetime", + "libc", + "xattr", +] + [[package]] name = "target-lexicon" version = "0.12.13" @@ -1689,6 +2045,65 @@ dependencies = [ "serde", ] +[[package]] +name = "toml" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.19.15", +] + +[[package]] +name = "toml" +version = "0.8.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.13", +] + +[[package]] +name = "toml_datetime" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.2.5", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" +dependencies = [ + "indexmap 2.2.5", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.9", +] + [[package]] name = "tracing" version = "0.1.40" @@ -1726,12 +2141,51 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + [[package]] name = "uuid" version = "1.7.0" @@ -1806,9 +2260,9 @@ checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" [[package]] name = "wasmer" -version = "4.2.6" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c15724dc25d1ee57962334aea8e41ade2675e5ea2ac6b8d42da6051b0face66" +checksum = "6ce4a267a570e121c9375136adefa2c48810273907de9c6817bc19db4d6144bc" dependencies = [ "bytes", "cfg-if", @@ -1825,7 +2279,6 @@ dependencies = [ "tracing", "wasm-bindgen", "wasmer-compiler", - "wasmer-compiler-cranelift", "wasmer-compiler-singlepass", "wasmer-derive", "wasmer-types", @@ -1835,9 +2288,9 @@ dependencies = [ [[package]] name = "wasmer-compiler" -version = "4.2.6" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55a7f3b3a96f8d844c25e2c032af9572306dd63fa93dc17bcca4c5458ac569bd" +checksum = "b9c23098e86ef1038155684fe50f0c1079a0e2a2e70f115b789df17e6ba98d20" dependencies = [ "backtrace", "bytes", @@ -1858,32 +2311,14 @@ dependencies = [ "wasmer-vm", "wasmparser", "winapi", -] - -[[package]] -name = "wasmer-compiler-cranelift" -version = "4.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "102e2c5bacac69495c4025767e2fa26797ffb27f242dccb7cf57d9cefd944386" -dependencies = [ - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "gimli 0.26.2", - "more-asserts", - "rayon", - "smallvec", - "target-lexicon", - "tracing", - "wasmer-compiler", - "wasmer-types", + "xxhash-rust", ] [[package]] name = "wasmer-compiler-singlepass" -version = "4.2.6" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2071db9b993508dac72d12f7a9372e0c095fbdc173e0009c4b75886bed4a855e" +checksum = "00d78d59be3ce78ad859e176b88f0d5bec0120ece0684922d7c5da1289e251b1" dependencies = [ "byteorder", "dynasm", @@ -1898,11 +2333,33 @@ dependencies = [ "wasmer-types", ] +[[package]] +name = "wasmer-config" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a0f70c177b1c5062cfe0f5308c3317751796fef9403c22a0cd7b4cacd4ccd8" +dependencies = [ + "anyhow", + "bytesize", + "derive_builder", + "hex", + "indexmap 2.2.5", + "schemars", + "semver", + "serde", + "serde_cbor", + "serde_json", + "serde_yaml", + "thiserror", + "toml 0.8.13", + "url", +] + [[package]] name = "wasmer-derive" -version = "4.2.6" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea737fa08f95d6abc4459f42a70a9833e8974b814e74971d77ef473814f4d4c" +checksum = "e48f36aeeecb655f15fdd358bdf6e4cec27df181468fa4226084157e8462bd5e" dependencies = [ "proc-macro-error", "proc-macro2", @@ -1912,9 +2369,9 @@ dependencies = [ [[package]] name = "wasmer-middlewares" -version = "4.2.6" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0346ed39c185c1c5c1094e6c0271d798276a34f80e1e5576bcb2e32fa2e7f05a" +checksum = "667dbe64667a478fd5726111180dd757113f3589a589f831bfe4ae1a256ae77e" dependencies = [ "wasmer", "wasmer-types", @@ -1923,25 +2380,30 @@ dependencies = [ [[package]] name = "wasmer-types" -version = "4.2.6" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0689110e291b0f07fc665f2824e5ff81df120848e8a9acfbf1a9bf7990773f9" +checksum = "83cb97b6b20084757a2a8d548dc0d4179c3fe9e2d711740423a1e6aa3f8b9091" dependencies = [ "bytecheck", "enum-iterator", "enumset", + "getrandom", + "hex", "indexmap 1.9.3", "more-asserts", "rkyv", + "sha2", "target-lexicon", "thiserror", + "webc", + "xxhash-rust", ] [[package]] name = "wasmer-vm" -version = "4.2.6" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd41f822a1ac4242d478754e8ceba2806a00ea5072803622e1fe91e8e28b2a1" +checksum = "bc1e19d986844b17b927ec8b0c7f3da6a7a2c2cb3b0f8ca5d4cb1a1f71bfb124" dependencies = [ "backtrace", "cc", @@ -1992,6 +2454,35 @@ dependencies = [ "time", ] +[[package]] +name = "webc" +version = "6.0.0-rc1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1fc686c7b43c9bc630a499f6ae1f0a4c4bd656576a53ae8a147b0cc9bc983ad" +dependencies = [ + "anyhow", + "base64 0.21.7", + "bytes", + "cfg-if", + "document-features", + "flate2", + "indexmap 1.9.3", + "libc", + "once_cell", + "semver", + "serde", + "serde_cbor", + "serde_json", + "sha2", + "shared-buffer", + "tar", + "tempfile", + "thiserror", + "toml 0.7.8", + "url", + "wasmer-config", +] + [[package]] name = "winapi" version = "0.3.9" @@ -2189,6 +2680,24 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86c949fede1d13936a99f14fafd3e76fd642b556dd2ce96287fbe2e0151bfac6" +dependencies = [ + "memchr", +] + [[package]] name = "wyz" version = "0.5.1" @@ -2198,8 +2707,59 @@ dependencies = [ "tap", ] +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + +[[package]] +name = "xxhash-rust" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" + +[[package]] +name = "zerocopy" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "zeroize" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] diff --git a/libwasmvm/Cargo.toml b/libwasmvm/Cargo.toml index b8111cc1c..4829d1647 100644 --- a/libwasmvm/Cargo.toml +++ b/libwasmvm/Cargo.toml @@ -26,8 +26,16 @@ default = [] backtraces = [] [dependencies] -cosmwasm-std = { git = "https://github.com/CosmWasm/cosmwasm.git", rev = "v2.0.1", features = ["staking", "stargate", "iterator"] } -cosmwasm-vm = { git = "https://github.com/CosmWasm/cosmwasm.git", rev = "v2.0.1", features = ["staking", "stargate", "iterator"] } +cosmwasm-std = { git = "https://github.com/CosmWasm/cosmwasm.git", branch = "main", features = [ + "staking", + "stargate", + "iterator", +] } +cosmwasm-vm = { git = "https://github.com/CosmWasm/cosmwasm.git", branch = "main", features = [ + "staking", + "stargate", + "iterator", +] } errno = "0.3.8" serde_json = "1.0.91" thiserror = "1.0.38" From 7b8338bdb8ece70bb8e07c62c90a11f85b4f7660 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Tue, 4 Jun 2024 11:29:22 +0200 Subject: [PATCH 2/9] Add ContractMigrateVersion to AnalysisReport --- ibc_test.go | 2 ++ internal/api/bindings.h | 15 +++++++++++++++ internal/api/lib.go | 11 ++++++++--- libwasmvm/bindings.h | 15 +++++++++++++++ libwasmvm/src/cache.rs | 31 +++++++++++++++++++++++++++++++ types/types.go | 5 +++++ 6 files changed, 76 insertions(+), 3 deletions(-) diff --git a/ibc_test.go b/ibc_test.go index df919e800..37a6c6198 100644 --- a/ibc_test.go +++ b/ibc_test.go @@ -302,6 +302,7 @@ func TestAnalyzeCode(t *testing.T) { require.NoError(t, err) require.False(t, report.HasIBCEntryPoints) require.Equal(t, "", report.RequiredCapabilities) + require.Nil(t, report.ContractMigrateVersion) // Store IBC contract wasm2, err := os.ReadFile(IBC_TEST_CONTRACT) @@ -313,6 +314,7 @@ func TestAnalyzeCode(t *testing.T) { require.NoError(t, err) require.True(t, report2.HasIBCEntryPoints) require.Equal(t, "iterator,stargate", report2.RequiredCapabilities) + require.Nil(t, report2.ContractMigrateVersion) } func TestIBCMsgGetChannel(t *testing.T) { diff --git a/internal/api/bindings.h b/internal/api/bindings.h index 2d2835f5f..6a1bdd86e 100644 --- a/internal/api/bindings.h +++ b/internal/api/bindings.h @@ -194,6 +194,14 @@ typedef struct UnmanagedVector { uintptr_t cap; } UnmanagedVector; +/** + * A version of `Option` that can be used safely in FFI. + */ +typedef struct OptionalU64 { + bool is_some; + uint64_t value; +} OptionalU64; + /** * The result type of the FFI function analyze_code. * @@ -217,6 +225,13 @@ typedef struct AnalysisReport { * This is never None/nil. */ struct UnmanagedVector required_capabilities; + /** + * The migrate version of the contract. + * This is None if the contract does not have a migrate version and the `migrate` entrypoint + * needs to be called for every migration (if present). + * If it is `Some(version)`, it only needs to be called if the `version` increased. + */ + struct OptionalU64 contract_migrate_version; } AnalysisReport; typedef struct Metrics { diff --git a/internal/api/lib.go b/internal/api/lib.go index 71b5a19ae..4acbfcad4 100644 --- a/internal/api/lib.go +++ b/internal/api/lib.go @@ -161,10 +161,15 @@ func AnalyzeCode(cache Cache, checksum []byte) (*types.AnalysisReport, error) { } requiredCapabilities := string(copyAndDestroyUnmanagedVector(report.required_capabilities)) entrypoints := string(copyAndDestroyUnmanagedVector(report.entrypoints)) + var contract_migrate_version *uint64 + if report.contract_migrate_version.is_some { + contract_migrate_version = (*uint64)(&report.contract_migrate_version.value) + } res := types.AnalysisReport{ - HasIBCEntryPoints: bool(report.has_ibc_entry_points), - RequiredCapabilities: requiredCapabilities, - Entrypoints: strings.Split(entrypoints, ","), + HasIBCEntryPoints: bool(report.has_ibc_entry_points), + RequiredCapabilities: requiredCapabilities, + Entrypoints: strings.Split(entrypoints, ","), + ContractMigrateVersion: contract_migrate_version, } return &res, nil } diff --git a/libwasmvm/bindings.h b/libwasmvm/bindings.h index 2d2835f5f..6a1bdd86e 100644 --- a/libwasmvm/bindings.h +++ b/libwasmvm/bindings.h @@ -194,6 +194,14 @@ typedef struct UnmanagedVector { uintptr_t cap; } UnmanagedVector; +/** + * A version of `Option` that can be used safely in FFI. + */ +typedef struct OptionalU64 { + bool is_some; + uint64_t value; +} OptionalU64; + /** * The result type of the FFI function analyze_code. * @@ -217,6 +225,13 @@ typedef struct AnalysisReport { * This is never None/nil. */ struct UnmanagedVector required_capabilities; + /** + * The migrate version of the contract. + * This is None if the contract does not have a migrate version and the `migrate` entrypoint + * needs to be called for every migration (if present). + * If it is `Some(version)`, it only needs to be called if the `version` increased. + */ + struct OptionalU64 contract_migrate_version; } AnalysisReport; typedef struct Metrics { diff --git a/libwasmvm/src/cache.rs b/libwasmvm/src/cache.rs index 9b21dbd9b..823a0c803 100644 --- a/libwasmvm/src/cache.rs +++ b/libwasmvm/src/cache.rs @@ -253,6 +253,11 @@ pub struct AnalysisReport { /// An UTF-8 encoded comma separated list of required capabilities. /// This is never None/nil. pub required_capabilities: UnmanagedVector, + /// The migrate version of the contract. + /// This is None if the contract does not have a migrate version and the `migrate` entrypoint + /// needs to be called for every migration (if present). + /// If it is `Some(version)`, it only needs to be called if the `version` increased. + pub contract_migrate_version: OptionalU64, } impl From for AnalysisReport { @@ -261,6 +266,8 @@ impl From for AnalysisReport { has_ibc_entry_points, required_capabilities, entrypoints, + contract_migrate_version, + .. } = report; let required_capabilities_utf8 = set_to_csv(required_capabilities).into_bytes(); @@ -269,6 +276,30 @@ impl From for AnalysisReport { has_ibc_entry_points, required_capabilities: UnmanagedVector::new(Some(required_capabilities_utf8)), entrypoints: UnmanagedVector::new(Some(entrypoints)), + contract_migrate_version: contract_migrate_version.into(), + } + } +} + +/// A version of `Option` that can be used safely in FFI. +#[derive(Copy, Clone, Default, Debug, PartialEq, Eq)] +#[repr(C)] +pub struct OptionalU64 { + is_some: bool, + value: u64, +} + +impl From> for OptionalU64 { + fn from(opt: Option) -> Self { + match opt { + None => OptionalU64 { + is_some: false, + value: 0, // value is ignored + }, + Some(value) => OptionalU64 { + is_some: true, + value, + }, } } } diff --git a/types/types.go b/types/types.go index a8cca6dd6..b9cbe7ebb 100644 --- a/types/types.go +++ b/types/types.go @@ -169,6 +169,11 @@ type AnalysisReport struct { HasIBCEntryPoints bool RequiredCapabilities string Entrypoints []string + // ContractMigrateVersion is the migrate version of the contract + // This is nil if the contract does not have a migrate version and the `migrate` entrypoint + // needs to be called for every migration (if present). + // If it is some number, the entrypoint only needs to be called if it increased. + ContractMigrateVersion *uint64 } type Metrics struct { From 3a16ee78498d51634a0e2f7460685578c180e2c4 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Tue, 4 Jun 2024 15:43:30 +0200 Subject: [PATCH 3/9] Use hackatom with migrate_version --- ibc_test.go | 2 +- internal/api/lib_test.go | 18 +++++++++--------- testdata/hackatom.wasm | Bin 177474 -> 232040 bytes 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ibc_test.go b/ibc_test.go index 37a6c6198..2da754d14 100644 --- a/ibc_test.go +++ b/ibc_test.go @@ -302,7 +302,7 @@ func TestAnalyzeCode(t *testing.T) { require.NoError(t, err) require.False(t, report.HasIBCEntryPoints) require.Equal(t, "", report.RequiredCapabilities) - require.Nil(t, report.ContractMigrateVersion) + require.Equal(t, uint64(42), *report.ContractMigrateVersion) // Store IBC contract wasm2, err := os.ReadFile(IBC_TEST_CONTRACT) diff --git a/internal/api/lib_test.go b/internal/api/lib_test.go index 30a2d93a1..78aaa7de7 100644 --- a/internal/api/lib_test.go +++ b/internal/api/lib_test.go @@ -405,7 +405,7 @@ func TestInstantiate(t *testing.T) { res, cost, err := Instantiate(cache, checksum, env, info, msg, &igasMeter, store, api, &querier, TESTING_GAS_LIMIT, TESTING_PRINT_DEBUG) require.NoError(t, err) requireOkResponse(t, res, 0) - assert.Equal(t, uint64(0x5088ea), cost.UsedInternally) + assert.Equal(t, uint64(0x540eb6), cost.UsedInternally) var result types.ContractResult err = json.Unmarshal(res, &result) @@ -436,7 +436,7 @@ func TestExecute(t *testing.T) { diff := time.Since(start) require.NoError(t, err) requireOkResponse(t, res, 0) - assert.Equal(t, uint64(0x5088ea), cost.UsedInternally) + assert.Equal(t, uint64(0x540eb6), cost.UsedInternally) t.Logf("Time (%d gas): %s\n", cost.UsedInternally, diff) // execute with the same store @@ -449,7 +449,7 @@ func TestExecute(t *testing.T) { res, cost, err = Execute(cache, checksum, env, info, []byte(`{"release":{}}`), &igasMeter2, store, api, &querier, TESTING_GAS_LIMIT, TESTING_PRINT_DEBUG) diff = time.Since(start) require.NoError(t, err) - assert.Equal(t, uint64(0x8be9c6), cost.UsedInternally) + assert.Equal(t, uint64(0x975216), cost.UsedInternally) t.Logf("Time (%d gas): %s\n", cost.UsedInternally, diff) // make sure it read the balance properly and we got 250 atoms @@ -557,7 +557,7 @@ func TestExecuteCpuLoop(t *testing.T) { diff := time.Since(start) require.NoError(t, err) requireOkResponse(t, res, 0) - assert.Equal(t, uint64(0x365a42), cost.UsedInternally) + assert.Equal(t, uint64(0x3d997e), cost.UsedInternally) t.Logf("Time (%d gas): %s\n", cost.UsedInternally, diff) // execute a cpu loop @@ -786,7 +786,7 @@ func TestMultipleInstances(t *testing.T) { require.NoError(t, err) requireOkResponse(t, res, 0) // we now count wasm gas charges and db writes - assert.Equal(t, uint64(0x4ffce0), cost.UsedInternally) + assert.Equal(t, uint64(0x53541c), cost.UsedInternally) // instance2 controlled by mary gasMeter2 := NewMockGasMeter(TESTING_GAS_LIMIT) @@ -797,14 +797,14 @@ func TestMultipleInstances(t *testing.T) { res, cost, err = Instantiate(cache, checksum, env, info, msg, &igasMeter2, store2, api, &querier, TESTING_GAS_LIMIT, TESTING_PRINT_DEBUG) require.NoError(t, err) requireOkResponse(t, res, 0) - assert.Equal(t, uint64(0x504dbc), cost.UsedInternally) + assert.Equal(t, uint64(0x53bbb4), cost.UsedInternally) // fail to execute store1 with mary - resp := exec(t, cache, checksum, "mary", store1, api, querier, 0x4a20c2) + resp := exec(t, cache, checksum, "mary", store1, api, querier, 0x503f70) require.Equal(t, "Unauthorized", resp.Err) // succeed to execute store1 with fred - resp = exec(t, cache, checksum, "fred", store1, api, querier, 0x8ba826) + resp = exec(t, cache, checksum, "fred", store1, api, querier, 0x970662) require.Equal(t, "", resp.Err) require.Equal(t, 1, len(resp.Ok.Messages)) attributes := resp.Ok.Attributes @@ -813,7 +813,7 @@ func TestMultipleInstances(t *testing.T) { require.Equal(t, "bob", attributes[1].Value) // succeed to execute store2 with mary - resp = exec(t, cache, checksum, "mary", store2, api, querier, 0x8bc8f6) + resp = exec(t, cache, checksum, "mary", store2, api, querier, 0x972c3c) require.Equal(t, "", resp.Err) require.Equal(t, 1, len(resp.Ok.Messages)) attributes = resp.Ok.Attributes diff --git a/testdata/hackatom.wasm b/testdata/hackatom.wasm index ff73c20a5ed34c71904f5f117457a88bddef50d3..580f9cf136cae71f45f3c7d788a2c648dbf6a19e 100644 GIT binary patch literal 232040 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

dwoJ_`2 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 From 26ff52f6e35e11ce5e8e0f8e941bd919f3756210 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Tue, 4 Jun 2024 15:52:48 +0200 Subject: [PATCH 4/9] Adjust gas value --- libwasmvm/src/cache.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libwasmvm/src/cache.rs b/libwasmvm/src/cache.rs index 823a0c803..9aeada1dc 100644 --- a/libwasmvm/src/cache.rs +++ b/libwasmvm/src/cache.rs @@ -975,7 +975,7 @@ mod tests { assert_eq!(elements_memory_cache, 0); assert_approx_eq!( size_pinned_memory_cache, - 2282344, + 3400000, "0.2", "size_pinned_memory_cache: {size_pinned_memory_cache}" ); From c1a7fed2f2633017281bb383fce4d921943d7daa Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Tue, 4 Jun 2024 16:51:04 +0200 Subject: [PATCH 5/9] Add optionalU64ToPtr --- internal/api/lib.go | 7 ++----- internal/api/memory.go | 7 +++++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/internal/api/lib.go b/internal/api/lib.go index 4acbfcad4..c73c55976 100644 --- a/internal/api/lib.go +++ b/internal/api/lib.go @@ -161,15 +161,12 @@ func AnalyzeCode(cache Cache, checksum []byte) (*types.AnalysisReport, error) { } requiredCapabilities := string(copyAndDestroyUnmanagedVector(report.required_capabilities)) entrypoints := string(copyAndDestroyUnmanagedVector(report.entrypoints)) - var contract_migrate_version *uint64 - if report.contract_migrate_version.is_some { - contract_migrate_version = (*uint64)(&report.contract_migrate_version.value) - } + res := types.AnalysisReport{ HasIBCEntryPoints: bool(report.has_ibc_entry_points), RequiredCapabilities: requiredCapabilities, Entrypoints: strings.Split(entrypoints, ","), - ContractMigrateVersion: contract_migrate_version, + ContractMigrateVersion: optionalU64ToPtr(report.contract_migrate_version), } return &res, nil } diff --git a/internal/api/memory.go b/internal/api/memory.go index 889f72121..f2fb06d73 100644 --- a/internal/api/memory.go +++ b/internal/api/memory.go @@ -75,6 +75,13 @@ func copyAndDestroyUnmanagedVector(v C.UnmanagedVector) []byte { return out } +func optionalU64ToPtr(val C.OptionalU64) *uint64 { + if val.is_some { + return (*uint64)(&val.value) + } + return nil +} + // copyU8Slice copies the contents of an Option<&[u8]> that was allocated on the Rust side. // Returns nil if and only if the source is None. func copyU8Slice(view C.U8SliceView) []byte { From decffbcb50c49bfa0a119aaf36913769bbb2c29b Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Tue, 25 Jun 2024 16:44:28 +0200 Subject: [PATCH 6/9] Update to 2.1.0-rc.1 --- libwasmvm/Cargo.lock | 38 ++++++++++++++------------------------ libwasmvm/Cargo.toml | 12 ++---------- 2 files changed, 16 insertions(+), 34 deletions(-) diff --git a/libwasmvm/Cargo.lock b/libwasmvm/Cargo.lock index 5a20e671f..f7efb03f7 100644 --- a/libwasmvm/Cargo.lock +++ b/libwasmvm/Cargo.lock @@ -405,32 +405,19 @@ dependencies = [ [[package]] name = "cosmwasm-core" -version = "2.0.1" -source = "git+https://github.com/CosmWasm/cosmwasm.git?branch=main#3a6613fe902f1e55bb1c13f3a8901d176e8874ed" -dependencies = [ - "base64 0.22.1", - "bnum", - "cosmwasm-crypto", - "derive_more", - "hex", - "schemars", - "serde", - "sha2", - "static_assertions", - "thiserror", -] +version = "2.1.0-rc.1" +source = "git+https://github.com/CosmWasm/cosmwasm.git?rev=v2.1.0-rc.1#7b0d0c70f26862c4594fec0e9e06ebd5c8350239" [[package]] name = "cosmwasm-crypto" -version = "2.0.1" -source = "git+https://github.com/CosmWasm/cosmwasm.git?branch=main#3a6613fe902f1e55bb1c13f3a8901d176e8874ed" +version = "2.1.0-rc.1" +source = "git+https://github.com/CosmWasm/cosmwasm.git?rev=v2.1.0-rc.1#7b0d0c70f26862c4594fec0e9e06ebd5c8350239" dependencies = [ "ark-bls12-381", "ark-ec", "ark-ff", "ark-serialize", - "cfg-if", - "derive_more", + "cosmwasm-core", "digest", "ecdsa", "ed25519-zebra", @@ -445,8 +432,8 @@ dependencies = [ [[package]] name = "cosmwasm-derive" -version = "2.0.1" -source = "git+https://github.com/CosmWasm/cosmwasm.git?branch=main#3a6613fe902f1e55bb1c13f3a8901d176e8874ed" +version = "2.1.0-rc.1" +source = "git+https://github.com/CosmWasm/cosmwasm.git?rev=v2.1.0-rc.1#7b0d0c70f26862c4594fec0e9e06ebd5c8350239" dependencies = [ "proc-macro2", "quote", @@ -455,11 +442,12 @@ dependencies = [ [[package]] name = "cosmwasm-std" -version = "2.0.1" -source = "git+https://github.com/CosmWasm/cosmwasm.git?branch=main#3a6613fe902f1e55bb1c13f3a8901d176e8874ed" +version = "2.1.0-rc.1" +source = "git+https://github.com/CosmWasm/cosmwasm.git?rev=v2.1.0-rc.1#7b0d0c70f26862c4594fec0e9e06ebd5c8350239" dependencies = [ "base64 0.22.1", "bech32", + "bnum", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", @@ -470,17 +458,19 @@ dependencies = [ "serde", "serde-json-wasm", "sha2", + "static_assertions", "thiserror", ] [[package]] name = "cosmwasm-vm" -version = "2.0.1" -source = "git+https://github.com/CosmWasm/cosmwasm.git?branch=main#3a6613fe902f1e55bb1c13f3a8901d176e8874ed" +version = "2.1.0-rc.1" +source = "git+https://github.com/CosmWasm/cosmwasm.git?rev=v2.1.0-rc.1#7b0d0c70f26862c4594fec0e9e06ebd5c8350239" dependencies = [ "bech32", "bytes", "clru", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", "crc32fast", diff --git a/libwasmvm/Cargo.toml b/libwasmvm/Cargo.toml index 4829d1647..b3f136761 100644 --- a/libwasmvm/Cargo.toml +++ b/libwasmvm/Cargo.toml @@ -26,16 +26,8 @@ default = [] backtraces = [] [dependencies] -cosmwasm-std = { git = "https://github.com/CosmWasm/cosmwasm.git", branch = "main", features = [ - "staking", - "stargate", - "iterator", -] } -cosmwasm-vm = { git = "https://github.com/CosmWasm/cosmwasm.git", branch = "main", features = [ - "staking", - "stargate", - "iterator", -] } +cosmwasm-std = { git = "https://github.com/CosmWasm/cosmwasm.git", rev = "v2.1.0-rc.1", features = ["staking", "stargate", "iterator"] } +cosmwasm-vm = { git = "https://github.com/CosmWasm/cosmwasm.git", rev = "v2.1.0-rc.1", features = ["staking", "stargate", "iterator"] } errno = "0.3.8" serde_json = "1.0.91" thiserror = "1.0.38" From c0b5da6975c5b85276a0bde600a6a5bc4de61feb Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Tue, 25 Jun 2024 16:48:42 +0200 Subject: [PATCH 7/9] Bump curve25519-dalek and self_cell --- libwasmvm/Cargo.lock | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/libwasmvm/Cargo.lock b/libwasmvm/Cargo.lock index f7efb03f7..e30f7ffd0 100644 --- a/libwasmvm/Cargo.lock +++ b/libwasmvm/Cargo.lock @@ -564,16 +564,15 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.1.2" +version = "4.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ "cfg-if", "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", - "platforms", "rustc_version", "subtle", "zeroize", @@ -1387,12 +1386,6 @@ version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" -[[package]] -name = "platforms" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" - [[package]] name = "powerfmt" version = "0.2.0" @@ -1693,9 +1686,9 @@ dependencies = [ [[package]] name = "self_cell" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba" +checksum = "d369a96f978623eb3dc28807c4852d6cc617fed53da5d3c400feff1ef34a714a" [[package]] name = "semver" From e8310e2f77fad17b9574c81791c3c62b43987baf Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Tue, 25 Jun 2024 18:14:37 +0200 Subject: [PATCH 8/9] Adjust cache size values --- internal/api/lib_test.go | 16 ++++++++-------- lib_libwasmvm_test.go | 16 ++++++++-------- libwasmvm/src/cache.rs | 2 ++ 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/internal/api/lib_test.go b/internal/api/lib_test.go index 78aaa7de7..e0d29debc 100644 --- a/internal/api/lib_test.go +++ b/internal/api/lib_test.go @@ -305,7 +305,7 @@ func TestGetMetrics(t *testing.T) { require.Equal(t, uint32(0), metrics.HitsMemoryCache) require.Equal(t, uint32(1), metrics.HitsFsCache) require.Equal(t, uint64(1), metrics.ElementsMemoryCache) - require.InEpsilon(t, 2832576, metrics.SizeMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizeMemoryCache, 0.25) // Instantiate 2 msg2 := []byte(`{"verifier": "fred", "beneficiary": "susi"}`) @@ -318,7 +318,7 @@ func TestGetMetrics(t *testing.T) { require.Equal(t, uint32(1), metrics.HitsMemoryCache) require.Equal(t, uint32(1), metrics.HitsFsCache) require.Equal(t, uint64(1), metrics.ElementsMemoryCache) - require.InEpsilon(t, 2832576, metrics.SizeMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizeMemoryCache, 0.25) // Pin err = Pin(cache, checksum) @@ -331,8 +331,8 @@ func TestGetMetrics(t *testing.T) { require.Equal(t, uint32(2), metrics.HitsFsCache) require.Equal(t, uint64(1), metrics.ElementsPinnedMemoryCache) require.Equal(t, uint64(1), metrics.ElementsMemoryCache) - require.InEpsilon(t, 2832576, metrics.SizePinnedMemoryCache, 0.25) - require.InEpsilon(t, 2832576, metrics.SizeMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizePinnedMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizeMemoryCache, 0.25) // Instantiate 3 msg3 := []byte(`{"verifier": "fred", "beneficiary": "bert"}`) @@ -347,8 +347,8 @@ func TestGetMetrics(t *testing.T) { require.Equal(t, uint32(2), metrics.HitsFsCache) require.Equal(t, uint64(1), metrics.ElementsPinnedMemoryCache) require.Equal(t, uint64(1), metrics.ElementsMemoryCache) - require.InEpsilon(t, 2832576, metrics.SizePinnedMemoryCache, 0.25) - require.InEpsilon(t, 2832576, metrics.SizeMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizePinnedMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizeMemoryCache, 0.25) // Unpin err = Unpin(cache, checksum) @@ -363,7 +363,7 @@ func TestGetMetrics(t *testing.T) { require.Equal(t, uint64(0), metrics.ElementsPinnedMemoryCache) require.Equal(t, uint64(1), metrics.ElementsMemoryCache) require.Equal(t, uint64(0), metrics.SizePinnedMemoryCache) - require.InEpsilon(t, 2832576, metrics.SizeMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizeMemoryCache, 0.25) // Instantiate 4 msg4 := []byte(`{"verifier": "fred", "beneficiary": "jeff"}`) @@ -379,7 +379,7 @@ func TestGetMetrics(t *testing.T) { require.Equal(t, uint64(0), metrics.ElementsPinnedMemoryCache) require.Equal(t, uint64(1), metrics.ElementsMemoryCache) require.Equal(t, uint64(0), metrics.SizePinnedMemoryCache) - require.InEpsilon(t, 2832576, metrics.SizeMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizeMemoryCache, 0.25) } func TestInstantiate(t *testing.T) { diff --git a/lib_libwasmvm_test.go b/lib_libwasmvm_test.go index 82327ecaf..8d9350d61 100644 --- a/lib_libwasmvm_test.go +++ b/lib_libwasmvm_test.go @@ -285,7 +285,7 @@ func TestGetMetrics(t *testing.T) { require.Equal(t, uint32(1), metrics.HitsFsCache) require.Equal(t, uint64(1), metrics.ElementsMemoryCache) t.Log(metrics.SizeMemoryCache) - require.InEpsilon(t, 2832576, metrics.SizeMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizeMemoryCache, 0.25) // Instantiate 2 msg2 := []byte(`{"verifier": "fred", "beneficiary": "susi"}`) @@ -301,7 +301,7 @@ func TestGetMetrics(t *testing.T) { require.Equal(t, uint32(1), metrics.HitsMemoryCache) require.Equal(t, uint32(1), metrics.HitsFsCache) require.Equal(t, uint64(1), metrics.ElementsMemoryCache) - require.InEpsilon(t, 2832576, metrics.SizeMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizeMemoryCache, 0.25) // Pin err = vm.Pin(checksum) @@ -314,8 +314,8 @@ func TestGetMetrics(t *testing.T) { require.Equal(t, uint32(2), metrics.HitsFsCache) require.Equal(t, uint64(1), metrics.ElementsPinnedMemoryCache) require.Equal(t, uint64(1), metrics.ElementsMemoryCache) - require.InEpsilon(t, 2832576, metrics.SizePinnedMemoryCache, 0.25) - require.InEpsilon(t, 2832576, metrics.SizeMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizePinnedMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizeMemoryCache, 0.25) // Instantiate 3 msg3 := []byte(`{"verifier": "fred", "beneficiary": "bert"}`) @@ -333,8 +333,8 @@ func TestGetMetrics(t *testing.T) { require.Equal(t, uint32(2), metrics.HitsFsCache) require.Equal(t, uint64(1), metrics.ElementsPinnedMemoryCache) require.Equal(t, uint64(1), metrics.ElementsMemoryCache) - require.InEpsilon(t, 2832576, metrics.SizePinnedMemoryCache, 0.25) - require.InEpsilon(t, 2832576, metrics.SizeMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizePinnedMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizeMemoryCache, 0.25) // Unpin err = vm.Unpin(checksum) @@ -349,7 +349,7 @@ func TestGetMetrics(t *testing.T) { require.Equal(t, uint64(0), metrics.ElementsPinnedMemoryCache) require.Equal(t, uint64(1), metrics.ElementsMemoryCache) require.Equal(t, uint64(0), metrics.SizePinnedMemoryCache) - require.InEpsilon(t, 2832576, metrics.SizeMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizeMemoryCache, 0.25) // Instantiate 4 msg4 := []byte(`{"verifier": "fred", "beneficiary": "jeff"}`) @@ -368,7 +368,7 @@ func TestGetMetrics(t *testing.T) { require.Equal(t, uint64(0), metrics.ElementsPinnedMemoryCache) require.Equal(t, uint64(1), metrics.ElementsMemoryCache) require.Equal(t, uint64(0), metrics.SizePinnedMemoryCache) - require.InEpsilon(t, 2832576, metrics.SizeMemoryCache, 0.25) + require.InEpsilon(t, 3700000, metrics.SizeMemoryCache, 0.25) } func TestLongPayloadDeserialization(t *testing.T) { diff --git a/libwasmvm/src/cache.rs b/libwasmvm/src/cache.rs index 9aeada1dc..57590e739 100644 --- a/libwasmvm/src/cache.rs +++ b/libwasmvm/src/cache.rs @@ -763,6 +763,8 @@ mod tests { hackatom_report.required_capabilities.consume().unwrap(), b"" ); + assert_eq!(hackatom_report.contract_migrate_version.is_some, true); + assert_eq!(hackatom_report.contract_migrate_version.value, 42); let mut error_msg = UnmanagedVector::default(); let ibc_reflect_report = analyze_code( From 9ce20113f7fd465b882cdc4d41eda6df4fa9c829 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Wed, 26 Jun 2024 10:12:43 +0200 Subject: [PATCH 9/9] Fix lint --- libwasmvm/src/cache.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libwasmvm/src/cache.rs b/libwasmvm/src/cache.rs index 57590e739..1fd20f3ee 100644 --- a/libwasmvm/src/cache.rs +++ b/libwasmvm/src/cache.rs @@ -763,7 +763,7 @@ mod tests { hackatom_report.required_capabilities.consume().unwrap(), b"" ); - assert_eq!(hackatom_report.contract_migrate_version.is_some, true); + assert!(hackatom_report.contract_migrate_version.is_some); assert_eq!(hackatom_report.contract_migrate_version.value, 42); let mut error_msg = UnmanagedVector::default();