From 2725770e35bacfc55b10fcac4bfa1c51a59dc85a Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Wed, 11 Sep 2024 11:48:41 +0200 Subject: [PATCH 01/28] Restructure derive crate --- packages/derive/src/entry_point.rs | 338 ++++++++++++++++++++++++++++ packages/derive/src/lib.rs | 340 +---------------------------- 2 files changed, 341 insertions(+), 337 deletions(-) create mode 100644 packages/derive/src/entry_point.rs diff --git a/packages/derive/src/entry_point.rs b/packages/derive/src/entry_point.rs new file mode 100644 index 000000000..b3de279d4 --- /dev/null +++ b/packages/derive/src/entry_point.rs @@ -0,0 +1,338 @@ +use proc_macro2::TokenStream; +use quote::{format_ident, quote, ToTokens}; +use syn::{ + parse::{Parse, ParseStream}, + parse_quote, + punctuated::Punctuated, + Token, +}; + +use super::maybe; + +struct Options { + crate_path: syn::Path, +} + +impl Default for Options { + fn default() -> Self { + Self { + crate_path: parse_quote!(::cosmwasm_std), + } + } +} + +impl Parse for Options { + fn parse(input: ParseStream) -> syn::Result { + let mut ret = Self::default(); + let attrs = Punctuated::::parse_terminated(input)?; + + for kv in attrs { + if kv.path.is_ident("crate") { + let path_as_string: syn::LitStr = syn::parse2(kv.value.to_token_stream())?; + ret.crate_path = path_as_string.parse()? + } else { + return Err(syn::Error::new_spanned(kv, "Unknown attribute")); + } + } + + Ok(ret) + } +} + +fn expand_attributes(func: &mut syn::ItemFn) -> syn::Result { + let attributes = std::mem::take(&mut func.attrs); + let mut stream = TokenStream::new(); + for attribute in attributes { + if !attribute.path().is_ident("migrate_version") { + func.attrs.push(attribute); + continue; + } + + if func.sig.ident != "migrate" { + return Err(syn::Error::new_spanned( + &attribute, + "you only want to add this attribute to your migrate function", + )); + } + + let version: syn::Expr = attribute.parse_args()?; + if !(matches!(version, syn::Expr::Lit(_)) || matches!(version, syn::Expr::Path(_))) { + return Err(syn::Error::new_spanned( + &attribute, + "Expected `u64` or `path::to::constant` in the migrate_version attribute", + )); + } + + stream = quote! { + #stream + + const _: () = { + #[allow(unused)] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + #[link_section = "cw_migrate_version"] + /// This is an internal constant exported as a custom section denoting the contract migrate version. + /// The format and even the existence of this value is an implementation detail, DO NOT RELY ON THIS! + static __CW_MIGRATE_VERSION: [u8; version_size(#version)] = stringify_version(#version); + + #[allow(unused)] + #[doc(hidden)] + const fn stringify_version(mut version: u64) -> [u8; N] { + let mut result: [u8; N] = [0; N]; + let mut index = N; + while index > 0 { + let digit: u8 = (version%10) as u8; + result[index-1] = digit + b'0'; + version /= 10; + index -= 1; + } + result + } + + #[allow(unused)] + #[doc(hidden)] + const fn version_size(version: u64) -> usize { + if version > 0 { + (version.ilog10()+1) as usize + } else { + panic!("Contract migrate version should be greater than 0.") + } + } + }; + }; + } + + Ok(stream) +} + +pub fn entry_point_impl(attr: TokenStream, item: TokenStream) -> TokenStream { + let mut function: syn::ItemFn = maybe!(syn::parse2(item)); + let Options { crate_path } = maybe!(syn::parse2(attr)); + + let attribute_code = maybe!(expand_attributes(&mut function)); + + // The first argument is `deps`, the rest is region pointers + let args = function.sig.inputs.len().saturating_sub(1); + let fn_name = &function.sig.ident; + let wasm_export = format_ident!("__wasm_export_{fn_name}"); + + // Migrate entry point can take 2 or 3 arguments + let do_call = if fn_name == "migrate" && args == 3 { + format_ident!("do_migrate_with_info") + } else { + format_ident!("do_{fn_name}") + }; + + let decl_args = (0..args).map(|item| format_ident!("ptr_{item}")); + let call_args = decl_args.clone(); + + quote! { + #attribute_code + + #function + + #[cfg(target_arch = "wasm32")] + mod #wasm_export { // new module to avoid conflict of function name + #[no_mangle] + extern "C" fn #fn_name(#( #decl_args : u32 ),*) -> u32 { + #crate_path::#do_call(&super::#fn_name, #( #call_args ),*) + } + } + } +} + +#[cfg(test)] +mod test { + use proc_macro2::TokenStream; + use quote::quote; + + use super::entry_point_impl; + + #[test] + fn contract_migrate_version_on_non_migrate() { + let code = quote! { + #[migrate_version(42)] + fn anything_else() -> Response { + // Logic here + } + }; + + let actual = entry_point_impl(TokenStream::new(), code); + let expected = quote! { + ::core::compile_error! { "you only want to add this attribute to your migrate function" } + }; + + assert_eq!(actual.to_string(), expected.to_string()); + } + + #[test] + fn contract_migrate_version_expansion() { + let code = quote! { + #[migrate_version(2)] + fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { + // Logic here + } + }; + + let actual = entry_point_impl(TokenStream::new(), code); + let expected = quote! { + const _: () = { + #[allow(unused)] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + #[link_section = "cw_migrate_version"] + /// This is an internal constant exported as a custom section denoting the contract migrate version. + /// The format and even the existence of this value is an implementation detail, DO NOT RELY ON THIS! + static __CW_MIGRATE_VERSION: [u8; version_size(2)] = stringify_version(2); + + #[allow(unused)] + #[doc(hidden)] + const fn stringify_version(mut version: u64) -> [u8; N] { + let mut result: [u8; N] = [0; N]; + let mut index = N; + while index > 0 { + let digit: u8 = (version%10) as u8; + result[index-1] = digit + b'0'; + version /= 10; + index -= 1; + } + result + } + + #[allow(unused)] + #[doc(hidden)] + const fn version_size(version: u64) -> usize { + if version > 0 { + (version.ilog10()+1) as usize + } else { + panic!("Contract migrate version should be greater than 0.") + } + } + }; + + fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { + // Logic here + } + + #[cfg(target_arch = "wasm32")] + mod __wasm_export_migrate { + #[no_mangle] + extern "C" fn migrate(ptr_0: u32, ptr_1: u32) -> u32 { + ::cosmwasm_std::do_migrate(&super::migrate, ptr_0, ptr_1) + } + } + }; + + assert_eq!(actual.to_string(), expected.to_string()); + } + + #[test] + fn contract_migrate_version_with_const_expansion() { + let code = quote! { + #[migrate_version(CONTRACT_VERSION)] + fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { + // Logic here + } + }; + + let actual = entry_point_impl(TokenStream::new(), code); + let expected = quote! { + const _: () = { + #[allow(unused)] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + #[link_section = "cw_migrate_version"] + /// This is an internal constant exported as a custom section denoting the contract migrate version. + /// The format and even the existence of this value is an implementation detail, DO NOT RELY ON THIS! + static __CW_MIGRATE_VERSION: [u8; version_size(CONTRACT_VERSION)] = stringify_version(CONTRACT_VERSION); + + #[allow(unused)] + #[doc(hidden)] + const fn stringify_version(mut version: u64) -> [u8; N] { + let mut result: [u8; N] = [0; N]; + let mut index = N; + while index > 0 { + let digit: u8 = (version%10) as u8; + result[index-1] = digit + b'0'; + version /= 10; + index -= 1; + } + result + } + + #[allow(unused)] + #[doc(hidden)] + const fn version_size(version: u64) -> usize { + if version > 0 { + (version.ilog10()+1) as usize + } else { + panic!("Contract migrate version should be greater than 0.") + } + } + }; + + fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { + // Logic here + } + + #[cfg(target_arch = "wasm32")] + mod __wasm_export_migrate { + #[no_mangle] + extern "C" fn migrate(ptr_0: u32, ptr_1: u32) -> u32 { + ::cosmwasm_std::do_migrate(&super::migrate, ptr_0, ptr_1) + } + } + }; + + assert_eq!(actual.to_string(), expected.to_string()); + } + + #[test] + fn default_expansion() { + let code = quote! { + fn instantiate(deps: DepsMut, env: Env) -> Response { + // Logic here + } + }; + + let actual = entry_point_impl(TokenStream::new(), code); + let expected = quote! { + fn instantiate(deps: DepsMut, env: Env) -> Response { } + + #[cfg(target_arch = "wasm32")] + mod __wasm_export_instantiate { + #[no_mangle] + extern "C" fn instantiate(ptr_0: u32) -> u32 { + ::cosmwasm_std::do_instantiate(&super::instantiate, ptr_0) + } + } + }; + + assert_eq!(actual.to_string(), expected.to_string()); + } + + #[test] + fn renamed_expansion() { + let attribute = quote!(crate = "::my_crate::cw_std"); + let code = quote! { + fn instantiate(deps: DepsMut, env: Env) -> Response { + // Logic here + } + }; + + let actual = entry_point_impl(attribute, code); + let expected = quote! { + fn instantiate(deps: DepsMut, env: Env) -> Response { } + + #[cfg(target_arch = "wasm32")] + mod __wasm_export_instantiate { + #[no_mangle] + extern "C" fn instantiate(ptr_0: u32) -> u32 { + ::my_crate::cw_std::do_instantiate(&super::instantiate, ptr_0) + } + } + }; + + assert_eq!(actual.to_string(), expected.to_string()); + } +} diff --git a/packages/derive/src/lib.rs b/packages/derive/src/lib.rs index a4de1a226..1c50b5e27 100644 --- a/packages/derive/src/lib.rs +++ b/packages/derive/src/lib.rs @@ -1,11 +1,4 @@ -use proc_macro2::TokenStream; -use quote::{format_ident, quote, ToTokens}; -use syn::{ - parse::{Parse, ParseStream}, - parse_quote, - punctuated::Punctuated, - ItemFn, Token, -}; +mod entry_point; macro_rules! maybe { ($result:expr) => {{ @@ -15,36 +8,7 @@ macro_rules! maybe { } }}; } - -struct Options { - crate_path: syn::Path, -} - -impl Default for Options { - fn default() -> Self { - Self { - crate_path: parse_quote!(::cosmwasm_std), - } - } -} - -impl Parse for Options { - fn parse(input: ParseStream) -> syn::Result { - let mut ret = Self::default(); - let attrs = Punctuated::::parse_terminated(input)?; - - for kv in attrs { - if kv.path.is_ident("crate") { - let path_as_string: syn::LitStr = syn::parse2(kv.value.to_token_stream())?; - ret.crate_path = path_as_string.parse()? - } else { - return Err(syn::Error::new_spanned(kv, "Unknown attribute")); - } - } - - Ok(ret) - } -} +use maybe; // function documented in cosmwasm-std #[proc_macro_attribute] @@ -52,303 +16,5 @@ pub fn entry_point( attr: proc_macro::TokenStream, item: proc_macro::TokenStream, ) -> proc_macro::TokenStream { - entry_point_impl(attr.into(), item.into()).into() -} - -fn expand_attributes(func: &mut ItemFn) -> syn::Result { - let attributes = std::mem::take(&mut func.attrs); - let mut stream = TokenStream::new(); - for attribute in attributes { - if !attribute.path().is_ident("migrate_version") { - func.attrs.push(attribute); - continue; - } - - if func.sig.ident != "migrate" { - return Err(syn::Error::new_spanned( - &attribute, - "you only want to add this attribute to your migrate function", - )); - } - - let version: syn::Expr = attribute.parse_args()?; - if !(matches!(version, syn::Expr::Lit(_)) || matches!(version, syn::Expr::Path(_))) { - return Err(syn::Error::new_spanned( - &attribute, - "Expected `u64` or `path::to::constant` in the migrate_version attribute", - )); - } - - stream = quote! { - #stream - - const _: () = { - #[allow(unused)] - #[doc(hidden)] - #[cfg(target_arch = "wasm32")] - #[link_section = "cw_migrate_version"] - /// This is an internal constant exported as a custom section denoting the contract migrate version. - /// The format and even the existence of this value is an implementation detail, DO NOT RELY ON THIS! - static __CW_MIGRATE_VERSION: [u8; version_size(#version)] = stringify_version(#version); - - #[allow(unused)] - #[doc(hidden)] - const fn stringify_version(mut version: u64) -> [u8; N] { - let mut result: [u8; N] = [0; N]; - let mut index = N; - while index > 0 { - let digit: u8 = (version%10) as u8; - result[index-1] = digit + b'0'; - version /= 10; - index -= 1; - } - result - } - - #[allow(unused)] - #[doc(hidden)] - const fn version_size(version: u64) -> usize { - if version > 0 { - (version.ilog10()+1) as usize - } else { - panic!("Contract migrate version should be greater than 0.") - } - } - }; - }; - } - - Ok(stream) -} - -fn entry_point_impl(attr: TokenStream, item: TokenStream) -> TokenStream { - let mut function: syn::ItemFn = maybe!(syn::parse2(item)); - let Options { crate_path } = maybe!(syn::parse2(attr)); - - let attribute_code = maybe!(expand_attributes(&mut function)); - - // The first argument is `deps`, the rest is region pointers - let args = function.sig.inputs.len().saturating_sub(1); - let fn_name = &function.sig.ident; - let wasm_export = format_ident!("__wasm_export_{fn_name}"); - - // Migrate entry point can take 2 or 3 arguments - let do_call = if fn_name == "migrate" && args == 3 { - format_ident!("do_migrate_with_info") - } else { - format_ident!("do_{fn_name}") - }; - - let decl_args = (0..args).map(|item| format_ident!("ptr_{item}")); - let call_args = decl_args.clone(); - - quote! { - #attribute_code - - #function - - #[cfg(target_arch = "wasm32")] - mod #wasm_export { // new module to avoid conflict of function name - #[no_mangle] - extern "C" fn #fn_name(#( #decl_args : u32 ),*) -> u32 { - #crate_path::#do_call(&super::#fn_name, #( #call_args ),*) - } - } - } -} - -#[cfg(test)] -mod test { - use proc_macro2::TokenStream; - use quote::quote; - - use crate::entry_point_impl; - - #[test] - fn contract_migrate_version_on_non_migrate() { - let code = quote! { - #[migrate_version(42)] - fn anything_else() -> Response { - // Logic here - } - }; - - let actual = entry_point_impl(TokenStream::new(), code); - let expected = quote! { - ::core::compile_error! { "you only want to add this attribute to your migrate function" } - }; - - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn contract_migrate_version_expansion() { - let code = quote! { - #[migrate_version(2)] - fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { - // Logic here - } - }; - - let actual = entry_point_impl(TokenStream::new(), code); - let expected = quote! { - const _: () = { - #[allow(unused)] - #[doc(hidden)] - #[cfg(target_arch = "wasm32")] - #[link_section = "cw_migrate_version"] - /// This is an internal constant exported as a custom section denoting the contract migrate version. - /// The format and even the existence of this value is an implementation detail, DO NOT RELY ON THIS! - static __CW_MIGRATE_VERSION: [u8; version_size(2)] = stringify_version(2); - - #[allow(unused)] - #[doc(hidden)] - const fn stringify_version(mut version: u64) -> [u8; N] { - let mut result: [u8; N] = [0; N]; - let mut index = N; - while index > 0 { - let digit: u8 = (version%10) as u8; - result[index-1] = digit + b'0'; - version /= 10; - index -= 1; - } - result - } - - #[allow(unused)] - #[doc(hidden)] - const fn version_size(version: u64) -> usize { - if version > 0 { - (version.ilog10()+1) as usize - } else { - panic!("Contract migrate version should be greater than 0.") - } - } - }; - - fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { - // Logic here - } - - #[cfg(target_arch = "wasm32")] - mod __wasm_export_migrate { - #[no_mangle] - extern "C" fn migrate(ptr_0: u32, ptr_1: u32) -> u32 { - ::cosmwasm_std::do_migrate(&super::migrate, ptr_0, ptr_1) - } - } - }; - - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn contract_migrate_version_with_const_expansion() { - let code = quote! { - #[migrate_version(CONTRACT_VERSION)] - fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { - // Logic here - } - }; - - let actual = entry_point_impl(TokenStream::new(), code); - let expected = quote! { - const _: () = { - #[allow(unused)] - #[doc(hidden)] - #[cfg(target_arch = "wasm32")] - #[link_section = "cw_migrate_version"] - /// This is an internal constant exported as a custom section denoting the contract migrate version. - /// The format and even the existence of this value is an implementation detail, DO NOT RELY ON THIS! - static __CW_MIGRATE_VERSION: [u8; version_size(CONTRACT_VERSION)] = stringify_version(CONTRACT_VERSION); - - #[allow(unused)] - #[doc(hidden)] - const fn stringify_version(mut version: u64) -> [u8; N] { - let mut result: [u8; N] = [0; N]; - let mut index = N; - while index > 0 { - let digit: u8 = (version%10) as u8; - result[index-1] = digit + b'0'; - version /= 10; - index -= 1; - } - result - } - - #[allow(unused)] - #[doc(hidden)] - const fn version_size(version: u64) -> usize { - if version > 0 { - (version.ilog10()+1) as usize - } else { - panic!("Contract migrate version should be greater than 0.") - } - } - }; - - fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { - // Logic here - } - - #[cfg(target_arch = "wasm32")] - mod __wasm_export_migrate { - #[no_mangle] - extern "C" fn migrate(ptr_0: u32, ptr_1: u32) -> u32 { - ::cosmwasm_std::do_migrate(&super::migrate, ptr_0, ptr_1) - } - } - }; - - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn default_expansion() { - let code = quote! { - fn instantiate(deps: DepsMut, env: Env) -> Response { - // Logic here - } - }; - - let actual = entry_point_impl(TokenStream::new(), code); - let expected = quote! { - fn instantiate(deps: DepsMut, env: Env) -> Response { } - - #[cfg(target_arch = "wasm32")] - mod __wasm_export_instantiate { - #[no_mangle] - extern "C" fn instantiate(ptr_0: u32) -> u32 { - ::cosmwasm_std::do_instantiate(&super::instantiate, ptr_0) - } - } - }; - - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn renamed_expansion() { - let attribute = quote!(crate = "::my_crate::cw_std"); - let code = quote! { - fn instantiate(deps: DepsMut, env: Env) -> Response { - // Logic here - } - }; - - let actual = entry_point_impl(attribute, code); - let expected = quote! { - fn instantiate(deps: DepsMut, env: Env) -> Response { } - - #[cfg(target_arch = "wasm32")] - mod __wasm_export_instantiate { - #[no_mangle] - extern "C" fn instantiate(ptr_0: u32) -> u32 { - ::my_crate::cw_std::do_instantiate(&super::instantiate, ptr_0) - } - } - }; - - assert_eq!(actual.to_string(), expected.to_string()); - } + entry_point::entry_point_impl(attr.into(), item.into()).into() } From cdef301c58ea9e0ab6a871a25158c7a340168873 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Wed, 11 Sep 2024 12:38:58 +0200 Subject: [PATCH 02/28] Add packages and CI config --- .circleci/config.yml | 38 +++++++++++++++++++++++++++ Cargo.lock | 39 ++++++++++++++++++++++++++-- packages/derive/Cargo.toml | 1 + packages/derive/src/hash_function.rs | 8 ++++++ packages/derive/src/lib.rs | 18 +++++++++++++ packages/vm-derive-impl/Cargo.toml | 6 +++++ packages/vm-derive-impl/src/main.rs | 3 +++ packages/vm-derive/Cargo.toml | 6 +++++ packages/vm-derive/src/main.rs | 3 +++ 9 files changed, 120 insertions(+), 2 deletions(-) create mode 100644 packages/derive/src/hash_function.rs create mode 100644 packages/vm-derive-impl/Cargo.toml create mode 100644 packages/vm-derive-impl/src/main.rs create mode 100644 packages/vm-derive/Cargo.toml create mode 100644 packages/vm-derive/src/main.rs diff --git a/.circleci/config.yml b/.circleci/config.yml index 1cc5524d2..02ec9bf67 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -70,6 +70,7 @@ workflows: - package_schema_derive - package_std - package_vm + - package_vm_derive - package_vm_windows - contract_burner - contract_crypto_verify @@ -492,6 +493,43 @@ jobs: - target/debug/deps key: cargocache-v2-package_vm-rust:1.74-{{ checksum "Cargo.lock" }} + package_vm_derive: + docker: + - image: rust:1.74 + steps: + - checkout + - run: + name: Version information + command: rustc --version; cargo --version; rustup --version; rustup target list --installed + - restore_cache: + keys: + - cargocache-v2-package_vm_derive-rust:1.74-{{ checksum "Cargo.lock" }} + - run: + name: Build + working_directory: ~/project/packages/vm-derive + command: cargo build --locked + - run: + name: Test + working_directory: ~/project/packages/vm-derive + command: cargo test --locked + + - run: + name: Build impl + working_directory: ~/project/packages/vm-derive-impl + command: cargo build --locked + - run: + name: Test impl + working_directory: ~/project/packages/vm-derive-impl + command: cargo test --locked + + - save_cache: + paths: + - /usr/local/cargo/registry + - target/debug/.fingerprint + - target/debug/build + - target/debug/deps + key: cargocache-v2-package_vm_derive-rust:1.74-{{ checksum "Cargo.lock" }} + package_vm_windows: executor: name: win/default diff --git a/Cargo.lock b/Cargo.lock index 7889b426f..1e93d2f91 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -247,6 +247,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + [[package]] name = "arrayvec" version = "0.7.4" @@ -347,6 +353,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -433,9 +452,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -534,6 +556,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "corosensei" version = "0.1.4" @@ -601,6 +629,7 @@ dependencies = [ name = "cosmwasm-derive" version = "2.1.3" dependencies = [ + "blake3", "proc-macro2", "quote", "syn 2.0.66", @@ -2577,6 +2606,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" diff --git a/packages/derive/Cargo.toml b/packages/derive/Cargo.toml index fd196c6ee..6f501f311 100644 --- a/packages/derive/Cargo.toml +++ b/packages/derive/Cargo.toml @@ -15,6 +15,7 @@ proc-macro = true default = [] [dependencies] +blake3 = "1.5.4" proc-macro2 = "1.0.79" quote = "1.0.35" syn = { version = "2", features = ["full"] } diff --git a/packages/derive/src/hash_function.rs b/packages/derive/src/hash_function.rs new file mode 100644 index 000000000..d58579719 --- /dev/null +++ b/packages/derive/src/hash_function.rs @@ -0,0 +1,8 @@ +use proc_macro2::TokenStream; + +pub fn hash_function_impl(input: TokenStream) -> TokenStream { + let display = input.to_string(); + let hex_hash = blake3::hash(display.as_bytes()).to_hex(); + + input +} \ No newline at end of file diff --git a/packages/derive/src/lib.rs b/packages/derive/src/lib.rs index 1c50b5e27..74700fa7a 100644 --- a/packages/derive/src/lib.rs +++ b/packages/derive/src/lib.rs @@ -1,4 +1,5 @@ mod entry_point; +mod hash_function; macro_rules! maybe { ($result:expr) => {{ @@ -18,3 +19,20 @@ pub fn entry_point( ) -> proc_macro::TokenStream { entry_point::entry_point_impl(attr.into(), item.into()).into() } + +#[proc_macro_attribute] +pub fn hash_function( + attr: proc_macro::TokenStream, + item: proc_macro::TokenStream, +) -> proc_macro::TokenStream { + if !attr.is_empty() { + return syn::Error::new_spanned( + proc_macro2::TokenStream::from(attr), + "Unexpected parameters", + ) + .into_compile_error() + .into(); + } + + hash_function::hash_function_impl(item.into()).into() +} diff --git a/packages/vm-derive-impl/Cargo.toml b/packages/vm-derive-impl/Cargo.toml new file mode 100644 index 000000000..75dff4558 --- /dev/null +++ b/packages/vm-derive-impl/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "cosmwasm-vm-derive-impl" +edition = "2021" +version.workspace = true + +[dependencies] diff --git a/packages/vm-derive-impl/src/main.rs b/packages/vm-derive-impl/src/main.rs new file mode 100644 index 000000000..e7a11a969 --- /dev/null +++ b/packages/vm-derive-impl/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/packages/vm-derive/Cargo.toml b/packages/vm-derive/Cargo.toml new file mode 100644 index 000000000..95bfd7572 --- /dev/null +++ b/packages/vm-derive/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "cosmwasm-vm-derive" +edition = "2021" +version.workspace = true + +[dependencies] diff --git a/packages/vm-derive/src/main.rs b/packages/vm-derive/src/main.rs new file mode 100644 index 000000000..e7a11a969 --- /dev/null +++ b/packages/vm-derive/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} From c7e2ed3191ad27e3e0df4f42cfaa110c0b79490c Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Wed, 11 Sep 2024 16:03:18 +0200 Subject: [PATCH 03/28] Implement using only the most high quality linker hacks --- Cargo.lock | 123 ++++++++++++------ packages/derive/src/hash_function.rs | 8 -- packages/derive/src/lib.rs | 18 --- packages/vm-derive-impl/Cargo.toml | 8 ++ packages/vm-derive-impl/src/hash_function.rs | 25 ++++ packages/vm-derive-impl/src/lib.rs | 41 ++++++ packages/vm-derive-impl/src/main.rs | 3 - .../vm-derive-impl/src/read_wasmer_version.rs | 38 ++++++ packages/vm-derive/Cargo.toml | 2 + packages/vm-derive/src/lib.rs | 19 +++ packages/vm-derive/src/main.rs | 3 - packages/vm/Cargo.toml | 2 + packages/vm/src/modules/file_system_cache.rs | 70 +++++----- packages/vm/src/wasm_backend/engine.rs | 2 + 14 files changed, 251 insertions(+), 111 deletions(-) delete mode 100644 packages/derive/src/hash_function.rs create mode 100644 packages/vm-derive-impl/src/hash_function.rs create mode 100644 packages/vm-derive-impl/src/lib.rs delete mode 100644 packages/vm-derive-impl/src/main.rs create mode 100644 packages/vm-derive-impl/src/read_wasmer_version.rs create mode 100644 packages/vm-derive/src/lib.rs delete mode 100644 packages/vm-derive/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 1e93d2f91..d8fc71634 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -444,6 +444,17 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.19", +] + [[package]] name = "cast" version = "0.3.0" @@ -632,7 +643,7 @@ dependencies = [ "blake3", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -655,7 +666,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -690,12 +701,14 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clap", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "criterion", "derivative", @@ -722,6 +735,25 @@ dependencies = [ "wat", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -945,7 +977,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -992,7 +1024,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1014,7 +1046,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1108,7 +1140,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "unicode-xid", ] @@ -1154,7 +1186,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1309,7 +1341,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1682,7 +1714,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1731,6 +1763,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "is-terminal" version = "0.4.12" @@ -2127,9 +2165,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -2156,9 +2194,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -2438,7 +2476,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2528,7 +2566,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2539,7 +2577,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2555,9 +2593,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -2683,7 +2721,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2705,9 +2743,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2722,7 +2760,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2783,7 +2821,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2872,21 +2910,22 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit 0.22.20", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] @@ -2906,15 +2945,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.14" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.18", ] [[package]] @@ -2936,7 +2975,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -3066,7 +3105,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -3088,7 +3127,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3231,7 +3270,7 @@ dependencies = [ "serde_json", "serde_yaml", "thiserror", - "toml 0.8.14", + "toml 0.8.19", "url", ] @@ -3603,9 +3642,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -3668,7 +3707,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -3689,7 +3728,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -3709,7 +3748,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -3730,7 +3769,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -3752,5 +3791,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] diff --git a/packages/derive/src/hash_function.rs b/packages/derive/src/hash_function.rs deleted file mode 100644 index d58579719..000000000 --- a/packages/derive/src/hash_function.rs +++ /dev/null @@ -1,8 +0,0 @@ -use proc_macro2::TokenStream; - -pub fn hash_function_impl(input: TokenStream) -> TokenStream { - let display = input.to_string(); - let hex_hash = blake3::hash(display.as_bytes()).to_hex(); - - input -} \ No newline at end of file diff --git a/packages/derive/src/lib.rs b/packages/derive/src/lib.rs index 74700fa7a..1c50b5e27 100644 --- a/packages/derive/src/lib.rs +++ b/packages/derive/src/lib.rs @@ -1,5 +1,4 @@ mod entry_point; -mod hash_function; macro_rules! maybe { ($result:expr) => {{ @@ -19,20 +18,3 @@ pub fn entry_point( ) -> proc_macro::TokenStream { entry_point::entry_point_impl(attr.into(), item.into()).into() } - -#[proc_macro_attribute] -pub fn hash_function( - attr: proc_macro::TokenStream, - item: proc_macro::TokenStream, -) -> proc_macro::TokenStream { - if !attr.is_empty() { - return syn::Error::new_spanned( - proc_macro2::TokenStream::from(attr), - "Unexpected parameters", - ) - .into_compile_error() - .into(); - } - - hash_function::hash_function_impl(item.into()).into() -} diff --git a/packages/vm-derive-impl/Cargo.toml b/packages/vm-derive-impl/Cargo.toml index 75dff4558..59969e552 100644 --- a/packages/vm-derive-impl/Cargo.toml +++ b/packages/vm-derive-impl/Cargo.toml @@ -3,4 +3,12 @@ name = "cosmwasm-vm-derive-impl" edition = "2021" version.workspace = true +[lib] +proc-macro = true + [dependencies] +blake3 = "1.5.4" +cargo-manifest = "0.15.2" +proc-macro2 = "1.0.86" +quote = "1.0.37" +syn = "2.0.77" diff --git a/packages/vm-derive-impl/src/hash_function.rs b/packages/vm-derive-impl/src/hash_function.rs new file mode 100644 index 000000000..abc5a2c35 --- /dev/null +++ b/packages/vm-derive-impl/src/hash_function.rs @@ -0,0 +1,25 @@ +use proc_macro2::TokenStream; +use quote::quote; + +use super::{bail, maybe}; + +pub fn hash_function_impl(attr: TokenStream, input: TokenStream) -> TokenStream { + if !attr.is_empty() { + bail!(attr, "Unexpected parameters"); + } + + // Just verify that this is actually a function + let _: syn::ItemFn = maybe!(syn::parse2(input.clone())); + + let display = input.to_string(); + let hex_hash = blake3::hash(display.as_bytes()).to_hex(); + let hex_hash = hex_hash.as_str(); + + quote! { + #input + + ::cosmwasm_vm_derive::inventory::submit! { + ::cosmwasm_vm_derive::Hash(#hex_hash) + } + } +} diff --git a/packages/vm-derive-impl/src/lib.rs b/packages/vm-derive-impl/src/lib.rs new file mode 100644 index 000000000..5ec53ed1c --- /dev/null +++ b/packages/vm-derive-impl/src/lib.rs @@ -0,0 +1,41 @@ +mod hash_function; +mod read_wasmer_version; + +macro_rules! bail { + ($span:ident, $message:literal) => {{ + return ::syn::Error::new_spanned($span, $message) + .into_compile_error() + .into(); + }}; + ($message:literal) => {{ + return ::syn::Error::new(proc_macro2::Span::call_site(), $message) + .into_compile_error() + .into(); + }}; +} + +macro_rules! maybe { + ($result:expr) => {{ + match { $result } { + Ok(val) => val, + Err(err) => return err.into_compile_error(), + } + }}; +} +use {bail, maybe}; + +#[proc_macro] +pub fn read_wasmer_version(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + read_wasmer_version::read_wasmer_version_impl(input.into()).into() +} + +/// Submit the hash of the function to a global inventory +/// +/// These hashes affect whether the Wasm cache is regenerated or not +#[proc_macro_attribute] +pub fn hash_function( + attr: proc_macro::TokenStream, + item: proc_macro::TokenStream, +) -> proc_macro::TokenStream { + hash_function::hash_function_impl(attr.into(), item.into()).into() +} diff --git a/packages/vm-derive-impl/src/main.rs b/packages/vm-derive-impl/src/main.rs deleted file mode 100644 index e7a11a969..000000000 --- a/packages/vm-derive-impl/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - println!("Hello, world!"); -} diff --git a/packages/vm-derive-impl/src/read_wasmer_version.rs b/packages/vm-derive-impl/src/read_wasmer_version.rs new file mode 100644 index 000000000..189da33bb --- /dev/null +++ b/packages/vm-derive-impl/src/read_wasmer_version.rs @@ -0,0 +1,38 @@ +use cargo_manifest::{Dependency, DependencyDetail}; +use proc_macro2::TokenStream; +use quote::quote; + +use std::env; + +use super::bail; + +pub fn read_wasmer_version_impl(input: TokenStream) -> TokenStream { + if !input.is_empty() { + bail!(input, "unexpected parameters"); + } + + let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); + let manifest = + cargo_manifest::Manifest::from_path(format!("{manifest_dir}/Cargo.toml")).unwrap(); + + let Some(dependencies) = &manifest.dependencies else { + bail!("No dependencies found in Cargo.toml"); + }; + + let Some(wasmer_dep) = dependencies.get("wasmer") else { + bail!("No wasmer dependency found in Cargo.toml"); + }; + + let version = match wasmer_dep { + Dependency::Detailed(DependencyDetail { + version: Some(version), + .. + }) => version, + Dependency::Simple(version) => version, + _ => { + bail!("Wasmer dependency does not have a version"); + } + }; + + quote! { #version } +} diff --git a/packages/vm-derive/Cargo.toml b/packages/vm-derive/Cargo.toml index 95bfd7572..53988381a 100644 --- a/packages/vm-derive/Cargo.toml +++ b/packages/vm-derive/Cargo.toml @@ -4,3 +4,5 @@ edition = "2021" version.workspace = true [dependencies] +cosmwasm-vm-derive-impl = { version = "=2.1.3", path = "../vm-derive-impl" } +inventory = "0.3.15" diff --git a/packages/vm-derive/src/lib.rs b/packages/vm-derive/src/lib.rs new file mode 100644 index 000000000..8821ad262 --- /dev/null +++ b/packages/vm-derive/src/lib.rs @@ -0,0 +1,19 @@ +pub struct Hash(pub &'static str); + +inventory::collect!(Hash); + +#[inline] +pub fn collect_hashes() -> impl Iterator { + let mut hashes = inventory::iter:: + .into_iter() + .map(|hash| hash.0) + .collect::>(); + + hashes.sort(); + hashes.into_iter() +} + +#[doc(hidden)] +pub use ::inventory; + +pub use ::cosmwasm_vm_derive_impl::*; diff --git a/packages/vm-derive/src/main.rs b/packages/vm-derive/src/main.rs deleted file mode 100644 index e7a11a969..000000000 --- a/packages/vm-derive/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - println!("Hello, world!"); -} diff --git a/packages/vm/Cargo.toml b/packages/vm/Cargo.toml index acfdc1dfa..61aeda9a4 100644 --- a/packages/vm/Cargo.toml +++ b/packages/vm/Cargo.toml @@ -44,10 +44,12 @@ bytes = "1.4.0" # need a higher version than the one required by Wasmer for clru = "0.6.1" crc32fast = "1.3.2" bech32 = "0.11.0" +blake3 = "1.5.4" # Uses the path when built locally; uses the given version from crates.io when published cosmwasm-core = { version = "2.1.3", path = "../core" } cosmwasm-std = { version = "2.1.3", path = "../std", default-features = false, features = ["std"] } cosmwasm-crypto = { version = "2.1.3", path = "../crypto" } +cosmwasm-vm-derive = { version = "2.1.3", path = "../vm-derive" } derivative = "2" hex = "0.4" rand_core = { version = "0.6", features = ["getrandom"] } diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index f0c240f19..876e7dcb6 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -3,6 +3,8 @@ use std::hash::Hash; use std::io; use std::panic::catch_unwind; use std::path::{Path, PathBuf}; +use std::sync::OnceLock; +use cosmwasm_vm_derive::read_wasmer_version; use thiserror::Error; use wasmer::{DeserializeError, Module, Target}; @@ -18,6 +20,23 @@ use crate::Size; use super::cached_module::engine_size_estimate; use super::CachedModule; +/// Function that actually does the heavy lifting of creating the module version discriminator. +/// +/// Separated for sanity tests because otherwise the `OnceLock` would cache the result. +#[inline] +fn raw_module_version_discriminator() -> String { + let wasmer_version = read_wasmer_version!(); + let hashes = cosmwasm_vm_derive::collect_hashes(); + + let mut hasher = blake3::Hasher::new(); + hasher.update(wasmer_version.as_bytes()); + for hash in hashes { + hasher.update(hash.as_bytes()); + } + + hasher.finalize().to_hex().to_string() +} + /// Bump this version whenever the module system changes in a way /// that old stored modules would be corrupt when loaded in the new system. /// This needs to be done e.g. when switching between the jit/native engine. @@ -28,42 +47,12 @@ use super::CachedModule; /// /// See https://github.com/wasmerio/wasmer/issues/2781 for more information /// on Wasmer's module stability concept. -/// -/// ## Version history: -/// - **v1**:
-/// cosmwasm_vm < 1.0.0-beta5. This is working well up to Wasmer 2.0.0 as -/// [in wasmvm 1.0.0-beta2](https://github.com/CosmWasm/wasmvm/blob/v1.0.0-beta2/libwasmvm/Cargo.lock#L1412-L1413) -/// and [wasmvm 0.16.3](https://github.com/CosmWasm/wasmvm/blob/v0.16.3/libwasmvm/Cargo.lock#L1408-L1409). -/// Versions that ship with Wasmer 2.1.x such [as wasmvm 1.0.0-beta3](https://github.com/CosmWasm/wasmvm/blob/v1.0.0-beta3/libwasmvm/Cargo.lock#L1534-L1535) -/// to [wasmvm 1.0.0-beta5](https://github.com/CosmWasm/wasmvm/blob/v1.0.0-beta5/libwasmvm/Cargo.lock#L1530-L1531) -/// are broken, i.e. they will crash when reading older v1 modules. -/// - **v2**:
-/// Version for cosmwasm_vm 1.0.0-beta5 / wasmvm 1.0.0-beta6 that ships with Wasmer 2.1.1. -/// - **v3**:
-/// Version for Wasmer 2.2.0 which contains a [module breaking change to 2.1.x](https://github.com/wasmerio/wasmer/pull/2747). -/// - **v4**:
-/// Version for Wasmer 2.3.0 which contains a module breaking change to 2.2.0 that was not reflected in -/// the module header version (). In cosmwasm-vm 1.1.0-1.1.1 -/// the old value "v3" is still used along with Wasmer 2.3.0 (bug). From cosmwasm 1.1.2 onwards, this is -/// fixed by bumping to "v4". -/// - **v5**:
-/// A change in memory layout of some types in Rust [std] caused -/// [issues with module deserialization](https://github.com/CosmWasm/wasmvm/issues/426). -/// To work around this, the version was bumped to "v5" here to invalidate these corrupt caches. -/// - **v6**:
-/// Version for cosmwasm_vm 1.3+ which adds a sub-folder with the target identier for the modules. -/// - **v7**:
-/// New version because of Wasmer 2.3.0 -> 4 upgrade. -/// This internally changes how rkyv is used for module serialization, making compatibility unlikely. -/// - **v8**:
-/// New version because of Wasmer 4.1.2 -> 4.2.2 upgrade. -/// Module compatibility between Wasmer versions is not guaranteed. -/// - **v9**:
-/// New version because of Wasmer 4.2.2 -> 4.2.6 upgrade. -/// Module compatibility between Wasmer versions is not guaranteed. -/// - **v10**:
-/// New version because of Metering middleware change. -const MODULE_SERIALIZATION_VERSION: &str = "v10"; +#[inline] +fn module_version_discriminator() -> &'static str { + static DISCRIMINATOR: OnceLock = OnceLock::new(); + + DISCRIMINATOR.get_or_init(raw_module_version_discriminator) +} /// Representation of a directory that contains compiled Wasm artifacts. pub struct FileSystemCache { @@ -232,7 +221,7 @@ fn target_id(target: &Target) -> String { /// The path to the latest version of the modules. fn modules_path(base_path: &Path, wasmer_module_version: u32, target: &Target) -> PathBuf { - let version_dir = format!("{MODULE_SERIALIZATION_VERSION}-wasmer{wasmer_module_version}"); + let version_dir = format!("{}-wasmer{wasmer_module_version}", module_version_discriminator()); let target_dir = target_id(target); base_path.join(version_dir).join(target_dir) } @@ -404,4 +393,11 @@ mod tests { } ); } + + #[test] + fn module_version_discriminator_stays_the_same() { + let v1 = module_version_discriminator(); + let v2 = module_version_discriminator(); + assert_eq!(v1, v2); + } } diff --git a/packages/vm/src/wasm_backend/engine.rs b/packages/vm/src/wasm_backend/engine.rs index 3b17776dc..941cfd4d0 100644 --- a/packages/vm/src/wasm_backend/engine.rs +++ b/packages/vm/src/wasm_backend/engine.rs @@ -1,3 +1,4 @@ +use cosmwasm_vm_derive::hash_function; use std::sync::Arc; use wasmer::NativeEngineExt; use wasmer::{ @@ -16,6 +17,7 @@ use super::limiting_tunables::LimitingTunables; /// https://github.com/WebAssembly/memory64/blob/master/proposals/memory64/Overview.md const MAX_WASM_PAGES: u32 = 65536; +#[hash_function] fn cost(operator: &Operator) -> u64 { // A flat fee for each operation // The target is 1 Teragas per second (see GAS.md). From c7d841a19620da3539acd3cd16780e3146756574 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Wed, 11 Sep 2024 16:05:59 +0200 Subject: [PATCH 04/28] Revert derive restructure --- packages/derive/src/entry_point.rs | 338 ------------------ packages/derive/src/lib.rs | 340 ++++++++++++++++++- packages/vm/src/modules/file_system_cache.rs | 23 +- 3 files changed, 350 insertions(+), 351 deletions(-) delete mode 100644 packages/derive/src/entry_point.rs diff --git a/packages/derive/src/entry_point.rs b/packages/derive/src/entry_point.rs deleted file mode 100644 index b3de279d4..000000000 --- a/packages/derive/src/entry_point.rs +++ /dev/null @@ -1,338 +0,0 @@ -use proc_macro2::TokenStream; -use quote::{format_ident, quote, ToTokens}; -use syn::{ - parse::{Parse, ParseStream}, - parse_quote, - punctuated::Punctuated, - Token, -}; - -use super::maybe; - -struct Options { - crate_path: syn::Path, -} - -impl Default for Options { - fn default() -> Self { - Self { - crate_path: parse_quote!(::cosmwasm_std), - } - } -} - -impl Parse for Options { - fn parse(input: ParseStream) -> syn::Result { - let mut ret = Self::default(); - let attrs = Punctuated::::parse_terminated(input)?; - - for kv in attrs { - if kv.path.is_ident("crate") { - let path_as_string: syn::LitStr = syn::parse2(kv.value.to_token_stream())?; - ret.crate_path = path_as_string.parse()? - } else { - return Err(syn::Error::new_spanned(kv, "Unknown attribute")); - } - } - - Ok(ret) - } -} - -fn expand_attributes(func: &mut syn::ItemFn) -> syn::Result { - let attributes = std::mem::take(&mut func.attrs); - let mut stream = TokenStream::new(); - for attribute in attributes { - if !attribute.path().is_ident("migrate_version") { - func.attrs.push(attribute); - continue; - } - - if func.sig.ident != "migrate" { - return Err(syn::Error::new_spanned( - &attribute, - "you only want to add this attribute to your migrate function", - )); - } - - let version: syn::Expr = attribute.parse_args()?; - if !(matches!(version, syn::Expr::Lit(_)) || matches!(version, syn::Expr::Path(_))) { - return Err(syn::Error::new_spanned( - &attribute, - "Expected `u64` or `path::to::constant` in the migrate_version attribute", - )); - } - - stream = quote! { - #stream - - const _: () = { - #[allow(unused)] - #[doc(hidden)] - #[cfg(target_arch = "wasm32")] - #[link_section = "cw_migrate_version"] - /// This is an internal constant exported as a custom section denoting the contract migrate version. - /// The format and even the existence of this value is an implementation detail, DO NOT RELY ON THIS! - static __CW_MIGRATE_VERSION: [u8; version_size(#version)] = stringify_version(#version); - - #[allow(unused)] - #[doc(hidden)] - const fn stringify_version(mut version: u64) -> [u8; N] { - let mut result: [u8; N] = [0; N]; - let mut index = N; - while index > 0 { - let digit: u8 = (version%10) as u8; - result[index-1] = digit + b'0'; - version /= 10; - index -= 1; - } - result - } - - #[allow(unused)] - #[doc(hidden)] - const fn version_size(version: u64) -> usize { - if version > 0 { - (version.ilog10()+1) as usize - } else { - panic!("Contract migrate version should be greater than 0.") - } - } - }; - }; - } - - Ok(stream) -} - -pub fn entry_point_impl(attr: TokenStream, item: TokenStream) -> TokenStream { - let mut function: syn::ItemFn = maybe!(syn::parse2(item)); - let Options { crate_path } = maybe!(syn::parse2(attr)); - - let attribute_code = maybe!(expand_attributes(&mut function)); - - // The first argument is `deps`, the rest is region pointers - let args = function.sig.inputs.len().saturating_sub(1); - let fn_name = &function.sig.ident; - let wasm_export = format_ident!("__wasm_export_{fn_name}"); - - // Migrate entry point can take 2 or 3 arguments - let do_call = if fn_name == "migrate" && args == 3 { - format_ident!("do_migrate_with_info") - } else { - format_ident!("do_{fn_name}") - }; - - let decl_args = (0..args).map(|item| format_ident!("ptr_{item}")); - let call_args = decl_args.clone(); - - quote! { - #attribute_code - - #function - - #[cfg(target_arch = "wasm32")] - mod #wasm_export { // new module to avoid conflict of function name - #[no_mangle] - extern "C" fn #fn_name(#( #decl_args : u32 ),*) -> u32 { - #crate_path::#do_call(&super::#fn_name, #( #call_args ),*) - } - } - } -} - -#[cfg(test)] -mod test { - use proc_macro2::TokenStream; - use quote::quote; - - use super::entry_point_impl; - - #[test] - fn contract_migrate_version_on_non_migrate() { - let code = quote! { - #[migrate_version(42)] - fn anything_else() -> Response { - // Logic here - } - }; - - let actual = entry_point_impl(TokenStream::new(), code); - let expected = quote! { - ::core::compile_error! { "you only want to add this attribute to your migrate function" } - }; - - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn contract_migrate_version_expansion() { - let code = quote! { - #[migrate_version(2)] - fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { - // Logic here - } - }; - - let actual = entry_point_impl(TokenStream::new(), code); - let expected = quote! { - const _: () = { - #[allow(unused)] - #[doc(hidden)] - #[cfg(target_arch = "wasm32")] - #[link_section = "cw_migrate_version"] - /// This is an internal constant exported as a custom section denoting the contract migrate version. - /// The format and even the existence of this value is an implementation detail, DO NOT RELY ON THIS! - static __CW_MIGRATE_VERSION: [u8; version_size(2)] = stringify_version(2); - - #[allow(unused)] - #[doc(hidden)] - const fn stringify_version(mut version: u64) -> [u8; N] { - let mut result: [u8; N] = [0; N]; - let mut index = N; - while index > 0 { - let digit: u8 = (version%10) as u8; - result[index-1] = digit + b'0'; - version /= 10; - index -= 1; - } - result - } - - #[allow(unused)] - #[doc(hidden)] - const fn version_size(version: u64) -> usize { - if version > 0 { - (version.ilog10()+1) as usize - } else { - panic!("Contract migrate version should be greater than 0.") - } - } - }; - - fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { - // Logic here - } - - #[cfg(target_arch = "wasm32")] - mod __wasm_export_migrate { - #[no_mangle] - extern "C" fn migrate(ptr_0: u32, ptr_1: u32) -> u32 { - ::cosmwasm_std::do_migrate(&super::migrate, ptr_0, ptr_1) - } - } - }; - - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn contract_migrate_version_with_const_expansion() { - let code = quote! { - #[migrate_version(CONTRACT_VERSION)] - fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { - // Logic here - } - }; - - let actual = entry_point_impl(TokenStream::new(), code); - let expected = quote! { - const _: () = { - #[allow(unused)] - #[doc(hidden)] - #[cfg(target_arch = "wasm32")] - #[link_section = "cw_migrate_version"] - /// This is an internal constant exported as a custom section denoting the contract migrate version. - /// The format and even the existence of this value is an implementation detail, DO NOT RELY ON THIS! - static __CW_MIGRATE_VERSION: [u8; version_size(CONTRACT_VERSION)] = stringify_version(CONTRACT_VERSION); - - #[allow(unused)] - #[doc(hidden)] - const fn stringify_version(mut version: u64) -> [u8; N] { - let mut result: [u8; N] = [0; N]; - let mut index = N; - while index > 0 { - let digit: u8 = (version%10) as u8; - result[index-1] = digit + b'0'; - version /= 10; - index -= 1; - } - result - } - - #[allow(unused)] - #[doc(hidden)] - const fn version_size(version: u64) -> usize { - if version > 0 { - (version.ilog10()+1) as usize - } else { - panic!("Contract migrate version should be greater than 0.") - } - } - }; - - fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { - // Logic here - } - - #[cfg(target_arch = "wasm32")] - mod __wasm_export_migrate { - #[no_mangle] - extern "C" fn migrate(ptr_0: u32, ptr_1: u32) -> u32 { - ::cosmwasm_std::do_migrate(&super::migrate, ptr_0, ptr_1) - } - } - }; - - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn default_expansion() { - let code = quote! { - fn instantiate(deps: DepsMut, env: Env) -> Response { - // Logic here - } - }; - - let actual = entry_point_impl(TokenStream::new(), code); - let expected = quote! { - fn instantiate(deps: DepsMut, env: Env) -> Response { } - - #[cfg(target_arch = "wasm32")] - mod __wasm_export_instantiate { - #[no_mangle] - extern "C" fn instantiate(ptr_0: u32) -> u32 { - ::cosmwasm_std::do_instantiate(&super::instantiate, ptr_0) - } - } - }; - - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn renamed_expansion() { - let attribute = quote!(crate = "::my_crate::cw_std"); - let code = quote! { - fn instantiate(deps: DepsMut, env: Env) -> Response { - // Logic here - } - }; - - let actual = entry_point_impl(attribute, code); - let expected = quote! { - fn instantiate(deps: DepsMut, env: Env) -> Response { } - - #[cfg(target_arch = "wasm32")] - mod __wasm_export_instantiate { - #[no_mangle] - extern "C" fn instantiate(ptr_0: u32) -> u32 { - ::my_crate::cw_std::do_instantiate(&super::instantiate, ptr_0) - } - } - }; - - assert_eq!(actual.to_string(), expected.to_string()); - } -} diff --git a/packages/derive/src/lib.rs b/packages/derive/src/lib.rs index 1c50b5e27..a4de1a226 100644 --- a/packages/derive/src/lib.rs +++ b/packages/derive/src/lib.rs @@ -1,4 +1,11 @@ -mod entry_point; +use proc_macro2::TokenStream; +use quote::{format_ident, quote, ToTokens}; +use syn::{ + parse::{Parse, ParseStream}, + parse_quote, + punctuated::Punctuated, + ItemFn, Token, +}; macro_rules! maybe { ($result:expr) => {{ @@ -8,7 +15,36 @@ macro_rules! maybe { } }}; } -use maybe; + +struct Options { + crate_path: syn::Path, +} + +impl Default for Options { + fn default() -> Self { + Self { + crate_path: parse_quote!(::cosmwasm_std), + } + } +} + +impl Parse for Options { + fn parse(input: ParseStream) -> syn::Result { + let mut ret = Self::default(); + let attrs = Punctuated::::parse_terminated(input)?; + + for kv in attrs { + if kv.path.is_ident("crate") { + let path_as_string: syn::LitStr = syn::parse2(kv.value.to_token_stream())?; + ret.crate_path = path_as_string.parse()? + } else { + return Err(syn::Error::new_spanned(kv, "Unknown attribute")); + } + } + + Ok(ret) + } +} // function documented in cosmwasm-std #[proc_macro_attribute] @@ -16,5 +52,303 @@ pub fn entry_point( attr: proc_macro::TokenStream, item: proc_macro::TokenStream, ) -> proc_macro::TokenStream { - entry_point::entry_point_impl(attr.into(), item.into()).into() + entry_point_impl(attr.into(), item.into()).into() +} + +fn expand_attributes(func: &mut ItemFn) -> syn::Result { + let attributes = std::mem::take(&mut func.attrs); + let mut stream = TokenStream::new(); + for attribute in attributes { + if !attribute.path().is_ident("migrate_version") { + func.attrs.push(attribute); + continue; + } + + if func.sig.ident != "migrate" { + return Err(syn::Error::new_spanned( + &attribute, + "you only want to add this attribute to your migrate function", + )); + } + + let version: syn::Expr = attribute.parse_args()?; + if !(matches!(version, syn::Expr::Lit(_)) || matches!(version, syn::Expr::Path(_))) { + return Err(syn::Error::new_spanned( + &attribute, + "Expected `u64` or `path::to::constant` in the migrate_version attribute", + )); + } + + stream = quote! { + #stream + + const _: () = { + #[allow(unused)] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + #[link_section = "cw_migrate_version"] + /// This is an internal constant exported as a custom section denoting the contract migrate version. + /// The format and even the existence of this value is an implementation detail, DO NOT RELY ON THIS! + static __CW_MIGRATE_VERSION: [u8; version_size(#version)] = stringify_version(#version); + + #[allow(unused)] + #[doc(hidden)] + const fn stringify_version(mut version: u64) -> [u8; N] { + let mut result: [u8; N] = [0; N]; + let mut index = N; + while index > 0 { + let digit: u8 = (version%10) as u8; + result[index-1] = digit + b'0'; + version /= 10; + index -= 1; + } + result + } + + #[allow(unused)] + #[doc(hidden)] + const fn version_size(version: u64) -> usize { + if version > 0 { + (version.ilog10()+1) as usize + } else { + panic!("Contract migrate version should be greater than 0.") + } + } + }; + }; + } + + Ok(stream) +} + +fn entry_point_impl(attr: TokenStream, item: TokenStream) -> TokenStream { + let mut function: syn::ItemFn = maybe!(syn::parse2(item)); + let Options { crate_path } = maybe!(syn::parse2(attr)); + + let attribute_code = maybe!(expand_attributes(&mut function)); + + // The first argument is `deps`, the rest is region pointers + let args = function.sig.inputs.len().saturating_sub(1); + let fn_name = &function.sig.ident; + let wasm_export = format_ident!("__wasm_export_{fn_name}"); + + // Migrate entry point can take 2 or 3 arguments + let do_call = if fn_name == "migrate" && args == 3 { + format_ident!("do_migrate_with_info") + } else { + format_ident!("do_{fn_name}") + }; + + let decl_args = (0..args).map(|item| format_ident!("ptr_{item}")); + let call_args = decl_args.clone(); + + quote! { + #attribute_code + + #function + + #[cfg(target_arch = "wasm32")] + mod #wasm_export { // new module to avoid conflict of function name + #[no_mangle] + extern "C" fn #fn_name(#( #decl_args : u32 ),*) -> u32 { + #crate_path::#do_call(&super::#fn_name, #( #call_args ),*) + } + } + } +} + +#[cfg(test)] +mod test { + use proc_macro2::TokenStream; + use quote::quote; + + use crate::entry_point_impl; + + #[test] + fn contract_migrate_version_on_non_migrate() { + let code = quote! { + #[migrate_version(42)] + fn anything_else() -> Response { + // Logic here + } + }; + + let actual = entry_point_impl(TokenStream::new(), code); + let expected = quote! { + ::core::compile_error! { "you only want to add this attribute to your migrate function" } + }; + + assert_eq!(actual.to_string(), expected.to_string()); + } + + #[test] + fn contract_migrate_version_expansion() { + let code = quote! { + #[migrate_version(2)] + fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { + // Logic here + } + }; + + let actual = entry_point_impl(TokenStream::new(), code); + let expected = quote! { + const _: () = { + #[allow(unused)] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + #[link_section = "cw_migrate_version"] + /// This is an internal constant exported as a custom section denoting the contract migrate version. + /// The format and even the existence of this value is an implementation detail, DO NOT RELY ON THIS! + static __CW_MIGRATE_VERSION: [u8; version_size(2)] = stringify_version(2); + + #[allow(unused)] + #[doc(hidden)] + const fn stringify_version(mut version: u64) -> [u8; N] { + let mut result: [u8; N] = [0; N]; + let mut index = N; + while index > 0 { + let digit: u8 = (version%10) as u8; + result[index-1] = digit + b'0'; + version /= 10; + index -= 1; + } + result + } + + #[allow(unused)] + #[doc(hidden)] + const fn version_size(version: u64) -> usize { + if version > 0 { + (version.ilog10()+1) as usize + } else { + panic!("Contract migrate version should be greater than 0.") + } + } + }; + + fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { + // Logic here + } + + #[cfg(target_arch = "wasm32")] + mod __wasm_export_migrate { + #[no_mangle] + extern "C" fn migrate(ptr_0: u32, ptr_1: u32) -> u32 { + ::cosmwasm_std::do_migrate(&super::migrate, ptr_0, ptr_1) + } + } + }; + + assert_eq!(actual.to_string(), expected.to_string()); + } + + #[test] + fn contract_migrate_version_with_const_expansion() { + let code = quote! { + #[migrate_version(CONTRACT_VERSION)] + fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { + // Logic here + } + }; + + let actual = entry_point_impl(TokenStream::new(), code); + let expected = quote! { + const _: () = { + #[allow(unused)] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + #[link_section = "cw_migrate_version"] + /// This is an internal constant exported as a custom section denoting the contract migrate version. + /// The format and even the existence of this value is an implementation detail, DO NOT RELY ON THIS! + static __CW_MIGRATE_VERSION: [u8; version_size(CONTRACT_VERSION)] = stringify_version(CONTRACT_VERSION); + + #[allow(unused)] + #[doc(hidden)] + const fn stringify_version(mut version: u64) -> [u8; N] { + let mut result: [u8; N] = [0; N]; + let mut index = N; + while index > 0 { + let digit: u8 = (version%10) as u8; + result[index-1] = digit + b'0'; + version /= 10; + index -= 1; + } + result + } + + #[allow(unused)] + #[doc(hidden)] + const fn version_size(version: u64) -> usize { + if version > 0 { + (version.ilog10()+1) as usize + } else { + panic!("Contract migrate version should be greater than 0.") + } + } + }; + + fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Response { + // Logic here + } + + #[cfg(target_arch = "wasm32")] + mod __wasm_export_migrate { + #[no_mangle] + extern "C" fn migrate(ptr_0: u32, ptr_1: u32) -> u32 { + ::cosmwasm_std::do_migrate(&super::migrate, ptr_0, ptr_1) + } + } + }; + + assert_eq!(actual.to_string(), expected.to_string()); + } + + #[test] + fn default_expansion() { + let code = quote! { + fn instantiate(deps: DepsMut, env: Env) -> Response { + // Logic here + } + }; + + let actual = entry_point_impl(TokenStream::new(), code); + let expected = quote! { + fn instantiate(deps: DepsMut, env: Env) -> Response { } + + #[cfg(target_arch = "wasm32")] + mod __wasm_export_instantiate { + #[no_mangle] + extern "C" fn instantiate(ptr_0: u32) -> u32 { + ::cosmwasm_std::do_instantiate(&super::instantiate, ptr_0) + } + } + }; + + assert_eq!(actual.to_string(), expected.to_string()); + } + + #[test] + fn renamed_expansion() { + let attribute = quote!(crate = "::my_crate::cw_std"); + let code = quote! { + fn instantiate(deps: DepsMut, env: Env) -> Response { + // Logic here + } + }; + + let actual = entry_point_impl(attribute, code); + let expected = quote! { + fn instantiate(deps: DepsMut, env: Env) -> Response { } + + #[cfg(target_arch = "wasm32")] + mod __wasm_export_instantiate { + #[no_mangle] + extern "C" fn instantiate(ptr_0: u32) -> u32 { + ::my_crate::cw_std::do_instantiate(&super::instantiate, ptr_0) + } + } + }; + + assert_eq!(actual.to_string(), expected.to_string()); + } } diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index 876e7dcb6..dc517bbdf 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -1,10 +1,10 @@ +use cosmwasm_vm_derive::read_wasmer_version; use std::fs; use std::hash::Hash; use std::io; use std::panic::catch_unwind; use std::path::{Path, PathBuf}; use std::sync::OnceLock; -use cosmwasm_vm_derive::read_wasmer_version; use thiserror::Error; use wasmer::{DeserializeError, Module, Target}; @@ -21,20 +21,20 @@ use super::cached_module::engine_size_estimate; use super::CachedModule; /// Function that actually does the heavy lifting of creating the module version discriminator. -/// +/// /// Separated for sanity tests because otherwise the `OnceLock` would cache the result. #[inline] fn raw_module_version_discriminator() -> String { let wasmer_version = read_wasmer_version!(); - let hashes = cosmwasm_vm_derive::collect_hashes(); + let hashes = cosmwasm_vm_derive::collect_hashes(); - let mut hasher = blake3::Hasher::new(); - hasher.update(wasmer_version.as_bytes()); - for hash in hashes { - hasher.update(hash.as_bytes()); - } + let mut hasher = blake3::Hasher::new(); + hasher.update(wasmer_version.as_bytes()); + for hash in hashes { + hasher.update(hash.as_bytes()); + } - hasher.finalize().to_hex().to_string() + hasher.finalize().to_hex().to_string() } /// Bump this version whenever the module system changes in a way @@ -221,7 +221,10 @@ fn target_id(target: &Target) -> String { /// The path to the latest version of the modules. fn modules_path(base_path: &Path, wasmer_module_version: u32, target: &Target) -> PathBuf { - let version_dir = format!("{}-wasmer{wasmer_module_version}", module_version_discriminator()); + let version_dir = format!( + "{}-wasmer{wasmer_module_version}", + module_version_discriminator() + ); let target_dir = target_id(target); base_path.join(version_dir).join(target_dir) } From c772667c0652869c367f744cd41154ed42bec851 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Wed, 11 Sep 2024 16:09:45 +0200 Subject: [PATCH 05/28] Regenerate lockfiles --- Cargo.lock | 1 - contracts/burner/Cargo.lock | 135 +++++++++++++++++++------ contracts/crypto-verify/Cargo.lock | 135 +++++++++++++++++++------ contracts/cyberpunk/Cargo.lock | 123 +++++++++++++++++------ contracts/empty/Cargo.lock | 135 +++++++++++++++++++------ contracts/floaty/Cargo.lock | 135 +++++++++++++++++++------ contracts/hackatom/Cargo.lock | 135 +++++++++++++++++++------ contracts/ibc-callbacks/Cargo.lock | 123 ++++++++++++++++++----- contracts/ibc-reflect-send/Cargo.lock | 135 +++++++++++++++++++------ contracts/ibc-reflect/Cargo.lock | 135 +++++++++++++++++++------ contracts/queue/Cargo.lock | 135 +++++++++++++++++++------ contracts/reflect/Cargo.lock | 135 +++++++++++++++++++------ contracts/staking/Cargo.lock | 137 ++++++++++++++++++++------ contracts/virus/Cargo.lock | 135 +++++++++++++++++++------ packages/derive/Cargo.toml | 1 - 15 files changed, 1335 insertions(+), 400 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d8fc71634..abf217ef8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -640,7 +640,6 @@ dependencies = [ name = "cosmwasm-derive" version = "2.1.3" dependencies = [ - "blake3", "proc-macro2", "quote", "syn 2.0.77", diff --git a/contracts/burner/Cargo.lock b/contracts/burner/Cargo.lock index fc442a6ef..b2d8407df 100644 --- a/contracts/burner/Cargo.lock +++ b/contracts/burner/Cargo.lock @@ -173,6 +173,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + [[package]] name = "arrayvec" version = "0.7.4" @@ -248,6 +254,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -326,11 +345,25 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.14", +] + [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -350,6 +383,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "corosensei" version = "0.1.4" @@ -395,7 +434,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -415,7 +454,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -445,11 +484,13 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "derivative", "hex", @@ -465,6 +506,25 @@ dependencies = [ "wasmer-middlewares", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -646,7 +706,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -693,7 +753,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -715,7 +775,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -800,7 +860,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "unicode-xid", ] @@ -824,7 +884,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -967,7 +1027,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1288,7 +1348,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1331,6 +1391,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "itertools" version = "0.10.5" @@ -1603,9 +1669,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1632,9 +1698,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1869,7 +1935,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1959,7 +2025,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1970,7 +2036,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2027,6 +2093,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -2092,7 +2164,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2114,9 +2186,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2131,7 +2203,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2186,7 +2258,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2232,6 +2304,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -2292,7 +2365,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2391,7 +2464,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2413,7 +2486,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2868,7 +2941,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2889,7 +2962,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2909,7 +2982,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2930,7 +3003,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2952,5 +3025,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] diff --git a/contracts/crypto-verify/Cargo.lock b/contracts/crypto-verify/Cargo.lock index 914db6211..461fc15de 100644 --- a/contracts/crypto-verify/Cargo.lock +++ b/contracts/crypto-verify/Cargo.lock @@ -173,6 +173,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + [[package]] name = "arrayvec" version = "0.7.4" @@ -254,6 +260,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -321,11 +340,25 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.14", +] + [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -345,6 +378,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "corosensei" version = "0.1.4" @@ -390,7 +429,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -410,7 +449,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -440,11 +479,13 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "derivative", "hex", @@ -460,6 +501,25 @@ dependencies = [ "wasmer-middlewares", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -659,7 +719,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -706,7 +766,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -728,7 +788,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -813,7 +873,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "unicode-xid", ] @@ -837,7 +897,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -982,7 +1042,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1309,7 +1369,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1352,6 +1412,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "itertools" version = "0.10.5" @@ -1643,9 +1709,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1672,9 +1738,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1925,7 +1991,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2016,7 +2082,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2027,7 +2093,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2094,6 +2160,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -2169,7 +2241,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2191,9 +2263,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2208,7 +2280,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2263,7 +2335,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2309,6 +2381,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -2369,7 +2442,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2468,7 +2541,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2490,7 +2563,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2945,7 +3018,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2966,7 +3039,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2986,7 +3059,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -3007,7 +3080,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -3029,5 +3102,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] diff --git a/contracts/cyberpunk/Cargo.lock b/contracts/cyberpunk/Cargo.lock index 41036b489..885d6bfe3 100644 --- a/contracts/cyberpunk/Cargo.lock +++ b/contracts/cyberpunk/Cargo.lock @@ -265,6 +265,19 @@ dependencies = [ "constant_time_eq", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -332,11 +345,25 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.14", +] + [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -407,7 +434,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -427,7 +454,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -457,11 +484,13 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "derivative", "hex", @@ -477,6 +506,25 @@ dependencies = [ "wasmer-middlewares", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -658,7 +706,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -717,7 +765,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -739,7 +787,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -824,7 +872,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "unicode-xid", ] @@ -848,7 +896,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -991,7 +1039,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1312,7 +1360,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1355,6 +1403,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "itertools" version = "0.10.5" @@ -1627,9 +1681,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1656,9 +1710,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1904,7 +1958,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1994,7 +2048,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2005,7 +2059,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2062,6 +2116,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -2127,7 +2187,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2149,9 +2209,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2166,7 +2226,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2221,7 +2281,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2267,6 +2327,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -2327,7 +2388,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2426,7 +2487,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2448,7 +2509,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2903,7 +2964,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2924,7 +2985,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2944,7 +3005,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2965,7 +3026,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2987,5 +3048,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] diff --git a/contracts/empty/Cargo.lock b/contracts/empty/Cargo.lock index 586468cd4..1369f3abd 100644 --- a/contracts/empty/Cargo.lock +++ b/contracts/empty/Cargo.lock @@ -173,6 +173,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + [[package]] name = "arrayvec" version = "0.7.4" @@ -248,6 +254,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -315,11 +334,25 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.14", +] + [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -339,6 +372,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "corosensei" version = "0.1.4" @@ -384,7 +423,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -404,7 +443,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -434,11 +473,13 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "derivative", "hex", @@ -454,6 +495,25 @@ dependencies = [ "wasmer-middlewares", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -635,7 +695,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -682,7 +742,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -704,7 +764,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -789,7 +849,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "unicode-xid", ] @@ -813,7 +873,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -966,7 +1026,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1287,7 +1347,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1330,6 +1390,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "itertools" version = "0.10.5" @@ -1602,9 +1668,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1631,9 +1697,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1868,7 +1934,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1958,7 +2024,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1969,7 +2035,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2026,6 +2092,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -2091,7 +2163,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2113,9 +2185,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2130,7 +2202,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2185,7 +2257,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2231,6 +2303,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -2291,7 +2364,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2390,7 +2463,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2412,7 +2485,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2867,7 +2940,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2888,7 +2961,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2908,7 +2981,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2929,7 +3002,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2951,5 +3024,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] diff --git a/contracts/floaty/Cargo.lock b/contracts/floaty/Cargo.lock index 93d9d9de1..58602334e 100644 --- a/contracts/floaty/Cargo.lock +++ b/contracts/floaty/Cargo.lock @@ -173,6 +173,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + [[package]] name = "arrayvec" version = "0.7.4" @@ -248,6 +254,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -315,11 +334,25 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.14", +] + [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -339,6 +372,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "corosensei" version = "0.1.4" @@ -384,7 +423,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -404,7 +443,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -434,11 +473,13 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "derivative", "hex", @@ -454,6 +495,25 @@ dependencies = [ "wasmer-middlewares", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -635,7 +695,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -682,7 +742,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -704,7 +764,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -789,7 +849,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "unicode-xid", ] @@ -813,7 +873,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -956,7 +1016,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1289,7 +1349,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1332,6 +1392,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "itertools" version = "0.10.5" @@ -1604,9 +1670,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1633,9 +1699,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1870,7 +1936,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1960,7 +2026,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1971,7 +2037,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2028,6 +2094,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -2093,7 +2165,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2115,9 +2187,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2132,7 +2204,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2187,7 +2259,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2233,6 +2305,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -2293,7 +2366,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2392,7 +2465,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2414,7 +2487,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2869,7 +2942,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2890,7 +2963,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2910,7 +2983,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2931,7 +3004,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2953,5 +3026,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] diff --git a/contracts/hackatom/Cargo.lock b/contracts/hackatom/Cargo.lock index 08f31b5c4..23d9fa7c7 100644 --- a/contracts/hackatom/Cargo.lock +++ b/contracts/hackatom/Cargo.lock @@ -173,6 +173,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + [[package]] name = "arrayvec" version = "0.7.4" @@ -248,6 +254,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -315,11 +334,25 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.14", +] + [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -339,6 +372,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "corosensei" version = "0.1.4" @@ -384,7 +423,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -404,7 +443,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -434,11 +473,13 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "derivative", "hex", @@ -454,6 +495,25 @@ dependencies = [ "wasmer-middlewares", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -635,7 +695,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -682,7 +742,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -704,7 +764,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -789,7 +849,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "unicode-xid", ] @@ -813,7 +873,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -956,7 +1016,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1290,7 +1350,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1333,6 +1393,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "itertools" version = "0.10.5" @@ -1605,9 +1671,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1634,9 +1700,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1871,7 +1937,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1961,7 +2027,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1972,7 +2038,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2029,6 +2095,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -2094,7 +2166,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2116,9 +2188,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2133,7 +2205,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2188,7 +2260,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2234,6 +2306,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -2294,7 +2367,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2393,7 +2466,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2415,7 +2488,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2870,7 +2943,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2891,7 +2964,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2911,7 +2984,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2932,7 +3005,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2954,5 +3027,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] diff --git a/contracts/ibc-callbacks/Cargo.lock b/contracts/ibc-callbacks/Cargo.lock index c54ce3992..f3dc847fb 100644 --- a/contracts/ibc-callbacks/Cargo.lock +++ b/contracts/ibc-callbacks/Cargo.lock @@ -173,6 +173,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + [[package]] name = "arrayvec" version = "0.7.4" @@ -248,6 +254,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -315,11 +334,25 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.13", +] + [[package]] name = "cc" -version = "1.0.98" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -339,6 +372,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "corosensei" version = "0.1.4" @@ -384,7 +423,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -404,7 +443,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -434,11 +473,13 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "derivative", "hex", @@ -454,6 +495,25 @@ dependencies = [ "wasmer-middlewares", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -635,7 +695,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -682,7 +742,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -704,7 +764,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -789,7 +849,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", "unicode-xid", ] @@ -945,7 +1005,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -1200,6 +1260,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "itertools" version = "0.10.5" @@ -1466,9 +1532,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.83" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1495,9 +1561,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1732,7 +1798,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -1822,7 +1888,7 @@ checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -1833,7 +1899,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -1890,6 +1956,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -1955,7 +2027,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -1977,9 +2049,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.65" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2863d96a84c6439701d7a38f9de935ec562c8832cc55d1dde0f513b52fad106" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2038,7 +2110,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -2074,6 +2146,7 @@ version = "0.8.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -2134,7 +2207,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -2236,7 +2309,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2258,7 +2331,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2698,7 +2771,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -2718,5 +2791,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] diff --git a/contracts/ibc-reflect-send/Cargo.lock b/contracts/ibc-reflect-send/Cargo.lock index ccbc1562a..3c0d6b753 100644 --- a/contracts/ibc-reflect-send/Cargo.lock +++ b/contracts/ibc-reflect-send/Cargo.lock @@ -173,6 +173,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + [[package]] name = "arrayvec" version = "0.7.4" @@ -248,6 +254,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -315,11 +334,25 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.14", +] + [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -339,6 +372,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "corosensei" version = "0.1.4" @@ -384,7 +423,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -404,7 +443,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -434,11 +473,13 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "derivative", "hex", @@ -454,6 +495,25 @@ dependencies = [ "wasmer-middlewares", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -635,7 +695,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -682,7 +742,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -704,7 +764,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -789,7 +849,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "unicode-xid", ] @@ -813,7 +873,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -956,7 +1016,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1288,7 +1348,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1331,6 +1391,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "itertools" version = "0.10.5" @@ -1603,9 +1669,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1632,9 +1698,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1869,7 +1935,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1959,7 +2025,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1970,7 +2036,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2027,6 +2093,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -2092,7 +2164,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2114,9 +2186,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2131,7 +2203,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2186,7 +2258,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2232,6 +2304,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -2292,7 +2365,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2391,7 +2464,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2413,7 +2486,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2868,7 +2941,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2889,7 +2962,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2909,7 +2982,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2930,7 +3003,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2952,5 +3025,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] diff --git a/contracts/ibc-reflect/Cargo.lock b/contracts/ibc-reflect/Cargo.lock index 7aab0fc6a..f9540fa08 100644 --- a/contracts/ibc-reflect/Cargo.lock +++ b/contracts/ibc-reflect/Cargo.lock @@ -173,6 +173,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + [[package]] name = "arrayvec" version = "0.7.4" @@ -248,6 +254,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -315,11 +334,25 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.14", +] + [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -339,6 +372,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "corosensei" version = "0.1.4" @@ -384,7 +423,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -404,7 +443,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -434,11 +473,13 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "derivative", "hex", @@ -454,6 +495,25 @@ dependencies = [ "wasmer-middlewares", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -635,7 +695,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -682,7 +742,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -704,7 +764,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -789,7 +849,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "unicode-xid", ] @@ -813,7 +873,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -956,7 +1016,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1288,7 +1348,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1331,6 +1391,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "itertools" version = "0.10.5" @@ -1603,9 +1669,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1632,9 +1698,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1869,7 +1935,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1959,7 +2025,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1970,7 +2036,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2027,6 +2093,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -2092,7 +2164,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2114,9 +2186,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2131,7 +2203,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2186,7 +2258,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2232,6 +2304,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -2292,7 +2365,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2391,7 +2464,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2413,7 +2486,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2868,7 +2941,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2889,7 +2962,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2909,7 +2982,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2930,7 +3003,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2952,5 +3025,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] diff --git a/contracts/queue/Cargo.lock b/contracts/queue/Cargo.lock index 019c11cf7..d38e3e240 100644 --- a/contracts/queue/Cargo.lock +++ b/contracts/queue/Cargo.lock @@ -173,6 +173,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + [[package]] name = "arrayvec" version = "0.7.4" @@ -248,6 +254,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -315,11 +334,25 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.14", +] + [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -339,6 +372,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "corosensei" version = "0.1.4" @@ -384,7 +423,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -404,7 +443,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -434,11 +473,13 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "derivative", "hex", @@ -454,6 +495,25 @@ dependencies = [ "wasmer-middlewares", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -635,7 +695,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -682,7 +742,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -704,7 +764,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -789,7 +849,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "unicode-xid", ] @@ -813,7 +873,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -956,7 +1016,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1277,7 +1337,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1320,6 +1380,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "itertools" version = "0.10.5" @@ -1592,9 +1658,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1632,9 +1698,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1869,7 +1935,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1959,7 +2025,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1970,7 +2036,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2027,6 +2093,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -2092,7 +2164,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2114,9 +2186,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2131,7 +2203,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2186,7 +2258,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2232,6 +2304,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -2292,7 +2365,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2391,7 +2464,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2413,7 +2486,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2868,7 +2941,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2889,7 +2962,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2909,7 +2982,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2930,7 +3003,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2952,5 +3025,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] diff --git a/contracts/reflect/Cargo.lock b/contracts/reflect/Cargo.lock index d09292d96..75da15a2f 100644 --- a/contracts/reflect/Cargo.lock +++ b/contracts/reflect/Cargo.lock @@ -173,6 +173,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + [[package]] name = "arrayvec" version = "0.7.4" @@ -248,6 +254,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -315,11 +334,25 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.14", +] + [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -339,6 +372,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "corosensei" version = "0.1.4" @@ -384,7 +423,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -404,7 +443,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -434,11 +473,13 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "derivative", "hex", @@ -454,6 +495,25 @@ dependencies = [ "wasmer-middlewares", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -635,7 +695,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -682,7 +742,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -704,7 +764,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -789,7 +849,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "unicode-xid", ] @@ -813,7 +873,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -956,7 +1016,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1277,7 +1337,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1320,6 +1380,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "itertools" version = "0.10.5" @@ -1592,9 +1658,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1621,9 +1687,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1870,7 +1936,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1960,7 +2026,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1971,7 +2037,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2028,6 +2094,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -2093,7 +2165,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2115,9 +2187,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2132,7 +2204,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2187,7 +2259,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2233,6 +2305,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -2293,7 +2366,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2392,7 +2465,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2414,7 +2487,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2869,7 +2942,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2890,7 +2963,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2910,7 +2983,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2931,7 +3004,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2953,5 +3026,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] diff --git a/contracts/staking/Cargo.lock b/contracts/staking/Cargo.lock index 8d2ee9630..824a66a5d 100644 --- a/contracts/staking/Cargo.lock +++ b/contracts/staking/Cargo.lock @@ -173,6 +173,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + [[package]] name = "arrayvec" version = "0.7.4" @@ -248,6 +254,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -315,11 +334,25 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.14", +] + [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -339,6 +372,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "corosensei" version = "0.1.4" @@ -384,7 +423,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -404,7 +443,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -434,11 +473,13 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "derivative", "hex", @@ -454,6 +495,25 @@ dependencies = [ "wasmer-middlewares", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -635,7 +695,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -682,7 +742,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -704,7 +764,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -789,7 +849,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "unicode-xid", ] @@ -813,7 +873,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -956,7 +1016,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1277,7 +1337,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1320,6 +1380,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "itertools" version = "0.10.5" @@ -1592,9 +1658,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1621,9 +1687,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1858,7 +1924,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1948,7 +2014,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1959,7 +2025,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2016,6 +2082,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -2062,7 +2134,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2114,7 +2186,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2136,9 +2208,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2153,7 +2225,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2208,7 +2280,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2254,6 +2326,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -2314,7 +2387,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2413,7 +2486,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2435,7 +2508,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2890,7 +2963,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2911,7 +2984,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2931,7 +3004,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2952,7 +3025,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2974,5 +3047,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] diff --git a/contracts/virus/Cargo.lock b/contracts/virus/Cargo.lock index 61059effe..eba1084ed 100644 --- a/contracts/virus/Cargo.lock +++ b/contracts/virus/Cargo.lock @@ -173,6 +173,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + [[package]] name = "arrayvec" version = "0.7.4" @@ -248,6 +254,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -315,11 +334,25 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-manifest" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" +dependencies = [ + "serde", + "thiserror", + "toml 0.8.14", +] + [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -339,6 +372,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "corosensei" version = "0.1.4" @@ -384,7 +423,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -404,7 +443,7 @@ version = "2.1.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -434,11 +473,13 @@ name = "cosmwasm-vm" version = "2.1.3" dependencies = [ "bech32", + "blake3", "bytes", "clru", "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-std", + "cosmwasm-vm-derive", "crc32fast", "derivative", "hex", @@ -454,6 +495,25 @@ dependencies = [ "wasmer-middlewares", ] +[[package]] +name = "cosmwasm-vm-derive" +version = "2.1.3" +dependencies = [ + "cosmwasm-vm-derive-impl", + "inventory", +] + +[[package]] +name = "cosmwasm-vm-derive-impl" +version = "2.1.3" +dependencies = [ + "blake3", + "cargo-manifest", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -635,7 +695,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -682,7 +742,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -704,7 +764,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -789,7 +849,7 @@ checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "unicode-xid", ] @@ -813,7 +873,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -956,7 +1016,7 @@ dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1277,7 +1337,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1320,6 +1380,12 @@ dependencies = [ "serde", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "itertools" version = "0.10.5" @@ -1592,9 +1658,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1621,9 +1687,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1858,7 +1924,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1948,7 +2014,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -1959,7 +2025,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2016,6 +2082,12 @@ dependencies = [ "memmap2 0.6.2", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -2081,7 +2153,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2103,9 +2175,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2120,7 +2192,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2175,7 +2247,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2221,6 +2293,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -2281,7 +2354,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2392,7 +2465,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2414,7 +2487,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2869,7 +2942,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2890,7 +2963,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2910,7 +2983,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", "synstructure", ] @@ -2931,7 +3004,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] [[package]] @@ -2953,5 +3026,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.77", ] diff --git a/packages/derive/Cargo.toml b/packages/derive/Cargo.toml index 6f501f311..fd196c6ee 100644 --- a/packages/derive/Cargo.toml +++ b/packages/derive/Cargo.toml @@ -15,7 +15,6 @@ proc-macro = true default = [] [dependencies] -blake3 = "1.5.4" proc-macro2 = "1.0.79" quote = "1.0.35" syn = { version = "2", features = ["full"] } From 6255cc6a32c3911c85d1e4e1989593355410bad9 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Wed, 11 Sep 2024 16:11:47 +0200 Subject: [PATCH 06/28] Add feature to syn --- packages/vm-derive-impl/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vm-derive-impl/Cargo.toml b/packages/vm-derive-impl/Cargo.toml index 59969e552..75b506026 100644 --- a/packages/vm-derive-impl/Cargo.toml +++ b/packages/vm-derive-impl/Cargo.toml @@ -11,4 +11,4 @@ blake3 = "1.5.4" cargo-manifest = "0.15.2" proc-macro2 = "1.0.86" quote = "1.0.37" -syn = "2.0.77" +syn = { version = "2.0.77", features = ["full"] } From de67dddedd4443c7e00a347cc577e9dd37d0cf0f Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Wed, 11 Sep 2024 16:17:33 +0200 Subject: [PATCH 07/28] Add a test to verify the hash is actually fixed --- packages/vm/src/modules/file_system_cache.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index dc517bbdf..d2ddda8bb 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -399,8 +399,17 @@ mod tests { #[test] fn module_version_discriminator_stays_the_same() { - let v1 = module_version_discriminator(); - let v2 = module_version_discriminator(); + let v1 = raw_module_version_discriminator(); + let v2 = raw_module_version_discriminator(); assert_eq!(v1, v2); } + + #[test] + fn module_version_discriminator_is_fixed() { + let discriminator = raw_module_version_discriminator(); + assert_eq!( + discriminator, + "bc465b26592e04a988baf4eb5358065904ecfff3f8f3fa9d417d137dacb4a20d" + ); + } } From 2d0f2dee62c988773a3a4061ca9d523ff8819c3e Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Wed, 11 Sep 2024 16:18:34 +0200 Subject: [PATCH 08/28] Update test --- packages/vm/src/modules/file_system_cache.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index d2ddda8bb..5aa7cf54e 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -306,9 +306,11 @@ mod tests { let module = compile(&engine, &wasm).unwrap(); cache.store(&checksum, &module).unwrap(); + let discriminator = raw_module_version_discriminator(); let mut globber = glob::glob(&format!( - "{}/v10-wasmer7/**/{}.module", + "{}/{}-wasmer7/**/{}.module", tmp_dir.path().to_string_lossy(), + discriminator, checksum )) .expect("Failed to read glob pattern"); @@ -387,13 +389,20 @@ mod tests { }; let target = Target::new(triple, wasmer::CpuFeature::POPCNT.into()); let p = modules_path(&base, 17, &target); + let descriminator = raw_module_version_discriminator(); + assert_eq!( p.as_os_str(), if cfg!(windows) { - "modules\\v10-wasmer17\\x86_64-nintendo-fuchsia-gnu-coff-01E9F9FE" + format!( + "modules\\{descriminator}-wasmer17\\x86_64-nintendo-fuchsia-gnu-coff-01E9F9FE" + ) } else { - "modules/v10-wasmer17/x86_64-nintendo-fuchsia-gnu-coff-01E9F9FE" + format!( + "modules/{descriminator}-wasmer17/x86_64-nintendo-fuchsia-gnu-coff-01E9F9FE" + ) } + .as_str() ); } From cc97b19d9a667778671dcda29d2131c3a6985d94 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Thu, 12 Sep 2024 18:02:37 +0200 Subject: [PATCH 09/28] Comment out VM cache --- .circleci/config.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 02ec9bf67..f3dbee2c5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -460,9 +460,9 @@ jobs: - run: name: Version information command: rustc --version; cargo --version; rustup --version; rustup target list --installed - - restore_cache: - keys: - - cargocache-v2-package_vm-rust:1.74-{{ checksum "Cargo.lock" }} + #- restore_cache: + # keys: + # - cargocache-v2-package_vm-rust:1.74-{{ checksum "Cargo.lock" }} - run: name: Build working_directory: ~/project/packages/vm @@ -485,13 +485,13 @@ jobs: command: | cargo build --locked --example multi_threaded_cache time ../../target/debug/examples/multi_threaded_cache >/dev/null - - save_cache: - paths: - - /usr/local/cargo/registry - - target/debug/.fingerprint - - target/debug/build - - target/debug/deps - key: cargocache-v2-package_vm-rust:1.74-{{ checksum "Cargo.lock" }} + #- save_cache: + # paths: + # - /usr/local/cargo/registry + # - target/debug/.fingerprint + # - target/debug/build + # - target/debug/deps + # key: cargocache-v2-package_vm-rust:1.74-{{ checksum "Cargo.lock" }} package_vm_derive: docker: From 48998bfd53d5dff53323740a9fa4620d2aae8ab2 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Thu, 12 Sep 2024 18:09:52 +0200 Subject: [PATCH 10/28] Revert "Comment out VM cache" This reverts commit cc97b19d9a667778671dcda29d2131c3a6985d94. --- .circleci/config.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f3dbee2c5..02ec9bf67 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -460,9 +460,9 @@ jobs: - run: name: Version information command: rustc --version; cargo --version; rustup --version; rustup target list --installed - #- restore_cache: - # keys: - # - cargocache-v2-package_vm-rust:1.74-{{ checksum "Cargo.lock" }} + - restore_cache: + keys: + - cargocache-v2-package_vm-rust:1.74-{{ checksum "Cargo.lock" }} - run: name: Build working_directory: ~/project/packages/vm @@ -485,13 +485,13 @@ jobs: command: | cargo build --locked --example multi_threaded_cache time ../../target/debug/examples/multi_threaded_cache >/dev/null - #- save_cache: - # paths: - # - /usr/local/cargo/registry - # - target/debug/.fingerprint - # - target/debug/build - # - target/debug/deps - # key: cargocache-v2-package_vm-rust:1.74-{{ checksum "Cargo.lock" }} + - save_cache: + paths: + - /usr/local/cargo/registry + - target/debug/.fingerprint + - target/debug/build + - target/debug/deps + key: cargocache-v2-package_vm-rust:1.74-{{ checksum "Cargo.lock" }} package_vm_derive: docker: From 0134b236dcb78ab12f307bb280fbe3d50993a95b Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Thu, 12 Sep 2024 18:10:57 +0200 Subject: [PATCH 11/28] Force disable incremental compilation --- .circleci/config.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 02ec9bf67..d802392b5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -455,6 +455,8 @@ jobs: package_vm: docker: - image: rust:1.74 + environment: + CARGO_INCREMENTAL: "0" steps: - checkout - run: From f2ad3b311cb26195a98b0235cf5a4ba24867e90e Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Thu, 12 Sep 2024 18:23:38 +0200 Subject: [PATCH 12/28] println! debugging :P --- .circleci/config.yml | 2 -- packages/vm-derive-impl/src/hash_function.rs | 1 + packages/vm-derive/src/lib.rs | 4 +++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index d802392b5..02ec9bf67 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -455,8 +455,6 @@ jobs: package_vm: docker: - image: rust:1.74 - environment: - CARGO_INCREMENTAL: "0" steps: - checkout - run: diff --git a/packages/vm-derive-impl/src/hash_function.rs b/packages/vm-derive-impl/src/hash_function.rs index abc5a2c35..2475b049e 100644 --- a/packages/vm-derive-impl/src/hash_function.rs +++ b/packages/vm-derive-impl/src/hash_function.rs @@ -12,6 +12,7 @@ pub fn hash_function_impl(attr: TokenStream, input: TokenStream) -> TokenStream let _: syn::ItemFn = maybe!(syn::parse2(input.clone())); let display = input.to_string(); + panic!("display: {:?}", display); let hex_hash = blake3::hash(display.as_bytes()).to_hex(); let hex_hash = hex_hash.as_str(); diff --git a/packages/vm-derive/src/lib.rs b/packages/vm-derive/src/lib.rs index 8821ad262..09d8cf45b 100644 --- a/packages/vm-derive/src/lib.rs +++ b/packages/vm-derive/src/lib.rs @@ -1,9 +1,11 @@ +use std::fmt::Debug; + pub struct Hash(pub &'static str); inventory::collect!(Hash); #[inline] -pub fn collect_hashes() -> impl Iterator { +pub fn collect_hashes() -> impl Iterator + Debug { let mut hashes = inventory::iter:: .into_iter() .map(|hash| hash.0) From 017a9abfa3e6339541ec50e4095ad0cabbcd9043 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Fri, 13 Sep 2024 13:55:51 +0200 Subject: [PATCH 13/28] Format code using rustfmt before hashing (please don't yell at me for this D:) --- packages/vm-derive-impl/src/hash_function.rs | 28 ++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/vm-derive-impl/src/hash_function.rs b/packages/vm-derive-impl/src/hash_function.rs index 2475b049e..e42138307 100644 --- a/packages/vm-derive-impl/src/hash_function.rs +++ b/packages/vm-derive-impl/src/hash_function.rs @@ -1,8 +1,33 @@ +use std::{ + io::Write, + process::{Command, Stdio}, +}; + use proc_macro2::TokenStream; use quote::quote; use super::{bail, maybe}; +// i do what i must because i can +fn format_code(code: C) -> String +where + C: AsRef<[u8]>, +{ + let mut child = Command::new("rustfmt") + .stdin(Stdio::piped()) + .stdout(Stdio::piped()) + .spawn() + .unwrap(); + + { + let mut stdin = child.stdin.take().unwrap(); + stdin.write_all(code.as_ref()).unwrap(); + } + + let output = child.wait_with_output().unwrap(); + String::from_utf8(output.stdout).unwrap() +} + pub fn hash_function_impl(attr: TokenStream, input: TokenStream) -> TokenStream { if !attr.is_empty() { bail!(attr, "Unexpected parameters"); @@ -11,8 +36,7 @@ pub fn hash_function_impl(attr: TokenStream, input: TokenStream) -> TokenStream // Just verify that this is actually a function let _: syn::ItemFn = maybe!(syn::parse2(input.clone())); - let display = input.to_string(); - panic!("display: {:?}", display); + let display = format_code(input.to_string()); let hex_hash = blake3::hash(display.as_bytes()).to_hex(); let hex_hash = hex_hash.as_str(); From 60cb24913a05b85b2b376b44767e9e4fe78c4fcf Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Fri, 13 Sep 2024 14:02:34 +0200 Subject: [PATCH 14/28] Update hash --- packages/vm-derive-impl/src/hash_function.rs | 3 ++- packages/vm/src/modules/file_system_cache.rs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/vm-derive-impl/src/hash_function.rs b/packages/vm-derive-impl/src/hash_function.rs index e42138307..0fba1c40a 100644 --- a/packages/vm-derive-impl/src/hash_function.rs +++ b/packages/vm-derive-impl/src/hash_function.rs @@ -8,7 +8,7 @@ use quote::quote; use super::{bail, maybe}; -// i do what i must because i can +// i do what i must because i can fn format_code(code: C) -> String where C: AsRef<[u8]>, @@ -25,6 +25,7 @@ where } let output = child.wait_with_output().unwrap(); + assert!(output.status.success()); String::from_utf8(output.stdout).unwrap() } diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index 5aa7cf54e..58a8f0175 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -418,7 +418,7 @@ mod tests { let discriminator = raw_module_version_discriminator(); assert_eq!( discriminator, - "bc465b26592e04a988baf4eb5358065904ecfff3f8f3fa9d417d137dacb4a20d" + "ddae2ae211962fc3481ff11cd46413750c692ddeb3d65f3e7a8a6d31ab1f8511" ); } } From 0cfa86a4e51da5b9a9d93caeb4050fbf6af29238 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Fri, 13 Sep 2024 14:40:08 +0200 Subject: [PATCH 15/28] Hash in a manual value --- packages/vm-derive-impl/src/hash_function.rs | 28 +-------- packages/vm/src/modules/file_system_cache.rs | 62 +++++++++++++++++--- 2 files changed, 54 insertions(+), 36 deletions(-) diff --git a/packages/vm-derive-impl/src/hash_function.rs b/packages/vm-derive-impl/src/hash_function.rs index 0fba1c40a..abc5a2c35 100644 --- a/packages/vm-derive-impl/src/hash_function.rs +++ b/packages/vm-derive-impl/src/hash_function.rs @@ -1,34 +1,8 @@ -use std::{ - io::Write, - process::{Command, Stdio}, -}; - use proc_macro2::TokenStream; use quote::quote; use super::{bail, maybe}; -// i do what i must because i can -fn format_code(code: C) -> String -where - C: AsRef<[u8]>, -{ - let mut child = Command::new("rustfmt") - .stdin(Stdio::piped()) - .stdout(Stdio::piped()) - .spawn() - .unwrap(); - - { - let mut stdin = child.stdin.take().unwrap(); - stdin.write_all(code.as_ref()).unwrap(); - } - - let output = child.wait_with_output().unwrap(); - assert!(output.status.success()); - String::from_utf8(output.stdout).unwrap() -} - pub fn hash_function_impl(attr: TokenStream, input: TokenStream) -> TokenStream { if !attr.is_empty() { bail!(attr, "Unexpected parameters"); @@ -37,7 +11,7 @@ pub fn hash_function_impl(attr: TokenStream, input: TokenStream) -> TokenStream // Just verify that this is actually a function let _: syn::ItemFn = maybe!(syn::parse2(input.clone())); - let display = format_code(input.to_string()); + let display = input.to_string(); let hex_hash = blake3::hash(display.as_bytes()).to_hex(); let hex_hash = hex_hash.as_str(); diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index 58a8f0175..c3bd55b8b 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -20,6 +20,51 @@ use crate::Size; use super::cached_module::engine_size_estimate; use super::CachedModule; +/// This is a value you can manually modify to the cache. +/// You normally _do not_ need to change this value yourself. +/// +/// Cases where you might need to update it yourself, is things like when the memory layout of some types in Rust [std] changes. +/// +/// --- +/// +/// Now follows the legacy documentation of this value: +/// +/// ## Version history: +/// - **v1**:
+/// cosmwasm_vm < 1.0.0-beta5. This is working well up to Wasmer 2.0.0 as +/// [in wasmvm 1.0.0-beta2](https://github.com/CosmWasm/wasmvm/blob/v1.0.0-beta2/libwasmvm/Cargo.lock#L1412-L1413) +/// and [wasmvm 0.16.3](https://github.com/CosmWasm/wasmvm/blob/v0.16.3/libwasmvm/Cargo.lock#L1408-L1409). +/// Versions that ship with Wasmer 2.1.x such [as wasmvm 1.0.0-beta3](https://github.com/CosmWasm/wasmvm/blob/v1.0.0-beta3/libwasmvm/Cargo.lock#L1534-L1535) +/// to [wasmvm 1.0.0-beta5](https://github.com/CosmWasm/wasmvm/blob/v1.0.0-beta5/libwasmvm/Cargo.lock#L1530-L1531) +/// are broken, i.e. they will crash when reading older v1 modules. +/// - **v2**:
+/// Version for cosmwasm_vm 1.0.0-beta5 / wasmvm 1.0.0-beta6 that ships with Wasmer 2.1.1. +/// - **v3**:
+/// Version for Wasmer 2.2.0 which contains a [module breaking change to 2.1.x](https://github.com/wasmerio/wasmer/pull/2747). +/// - **v4**:
+/// Version for Wasmer 2.3.0 which contains a module breaking change to 2.2.0 that was not reflected in +/// the module header version (). In cosmwasm-vm 1.1.0-1.1.1 +/// the old value "v3" is still used along with Wasmer 2.3.0 (bug). From cosmwasm 1.1.2 onwards, this is +/// fixed by bumping to "v4". +/// - **v5**:
+/// A change in memory layout of some types in Rust [std] caused +/// [issues with module deserialization](https://github.com/CosmWasm/wasmvm/issues/426). +/// To work around this, the version was bumped to "v5" here to invalidate these corrupt caches. +/// - **v6**:
+/// Version for cosmwasm_vm 1.3+ which adds a sub-folder with the target identier for the modules. +/// - **v7**:
+/// New version because of Wasmer 2.3.0 -> 4 upgrade. +/// This internally changes how rkyv is used for module serialization, making compatibility unlikely. +/// - **v8**:
+/// New version because of Wasmer 4.1.2 -> 4.2.2 upgrade. +/// Module compatibility between Wasmer versions is not guaranteed. +/// - **v9**:
+/// New version because of Wasmer 4.2.2 -> 4.2.6 upgrade. +/// Module compatibility between Wasmer versions is not guaranteed. +/// - **v10**:
+/// New version because of Metering middleware change. +const MODULE_SERIALIZATION_VERSION: &str = "v10"; + /// Function that actually does the heavy lifting of creating the module version discriminator. /// /// Separated for sanity tests because otherwise the `OnceLock` would cache the result. @@ -29,7 +74,10 @@ fn raw_module_version_discriminator() -> String { let hashes = cosmwasm_vm_derive::collect_hashes(); let mut hasher = blake3::Hasher::new(); + + hasher.update(MODULE_SERIALIZATION_VERSION.as_bytes()); hasher.update(wasmer_version.as_bytes()); + for hash in hashes { hasher.update(hash.as_bytes()); } @@ -410,15 +458,11 @@ mod tests { fn module_version_discriminator_stays_the_same() { let v1 = raw_module_version_discriminator(); let v2 = raw_module_version_discriminator(); - assert_eq!(v1, v2); - } + let v3 = raw_module_version_discriminator(); + let v4 = raw_module_version_discriminator(); - #[test] - fn module_version_discriminator_is_fixed() { - let discriminator = raw_module_version_discriminator(); - assert_eq!( - discriminator, - "ddae2ae211962fc3481ff11cd46413750c692ddeb3d65f3e7a8a6d31ab1f8511" - ); + assert_eq!(v1, v2); + assert_eq!(v2, v3); + assert_eq!(v3, v4); } } From 4dc02fb6349f9f96d0994656e782a73fe9c7b1ab Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Fri, 13 Sep 2024 16:52:23 +0200 Subject: [PATCH 16/28] Add back constant test --- packages/vm-derive-impl/Cargo.toml | 2 +- packages/vm-derive-impl/src/hash_function.rs | 37 +++++++++++++++++--- packages/vm/src/modules/file_system_cache.rs | 9 +++++ 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/packages/vm-derive-impl/Cargo.toml b/packages/vm-derive-impl/Cargo.toml index 75b506026..0af3c1788 100644 --- a/packages/vm-derive-impl/Cargo.toml +++ b/packages/vm-derive-impl/Cargo.toml @@ -11,4 +11,4 @@ blake3 = "1.5.4" cargo-manifest = "0.15.2" proc-macro2 = "1.0.86" quote = "1.0.37" -syn = { version = "2.0.77", features = ["full"] } +syn = { version = "2.0.77", features = ["extra-traits", "full"] } diff --git a/packages/vm-derive-impl/src/hash_function.rs b/packages/vm-derive-impl/src/hash_function.rs index abc5a2c35..6b6ff76a6 100644 --- a/packages/vm-derive-impl/src/hash_function.rs +++ b/packages/vm-derive-impl/src/hash_function.rs @@ -1,19 +1,48 @@ +use std::hash::{Hash, Hasher}; + use proc_macro2::TokenStream; use quote::quote; use super::{bail, maybe}; +struct Blake3Hasher { + hasher: blake3::Hasher, +} + +impl Blake3Hasher { + fn new() -> Self { + Self { + hasher: blake3::Hasher::new(), + } + } + + fn consume(self) -> String { + self.hasher.finalize().to_hex().to_string() + } +} + +impl Hasher for Blake3Hasher { + fn write(&mut self, bytes: &[u8]) { + self.hasher.update(bytes); + } + + fn finish(&self) -> u64 { + unimplemented!(); + } +} + pub fn hash_function_impl(attr: TokenStream, input: TokenStream) -> TokenStream { if !attr.is_empty() { bail!(attr, "Unexpected parameters"); } // Just verify that this is actually a function - let _: syn::ItemFn = maybe!(syn::parse2(input.clone())); + let function: syn::ItemFn = maybe!(syn::parse2(input.clone())); + + let mut hasher = Blake3Hasher::new(); + function.hash(&mut hasher); - let display = input.to_string(); - let hex_hash = blake3::hash(display.as_bytes()).to_hex(); - let hex_hash = hex_hash.as_str(); + let hex_hash = hasher.consume(); quote! { #input diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index c3bd55b8b..eee976d6d 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -465,4 +465,13 @@ mod tests { assert_eq!(v2, v3); assert_eq!(v3, v4); } + + #[test] + fn module_version_static() { + let version = raw_module_version_discriminator(); + assert_eq!( + version, + "9ef3de8cb5fb770171ae3ea14db67fe25d946fef383472a18ddd75ced7bfcd4b" + ); + } } From 214dc406baf1cc6d4bc94068859abdbdb766982e Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Fri, 20 Sep 2024 12:48:51 +0200 Subject: [PATCH 17/28] Remove manual reading of wasmer version --- Cargo.lock | 13 ------- packages/vm-derive-impl/Cargo.toml | 1 - packages/vm-derive-impl/src/lib.rs | 6 --- .../vm-derive-impl/src/read_wasmer_version.rs | 38 ------------------- packages/vm/src/modules/file_system_cache.rs | 4 +- 5 files changed, 1 insertion(+), 61 deletions(-) delete mode 100644 packages/vm-derive-impl/src/read_wasmer_version.rs diff --git a/Cargo.lock b/Cargo.lock index abf217ef8..ed5dde0b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -444,17 +444,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.19", -] - [[package]] name = "cast" version = "0.3.0" @@ -747,7 +736,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2913,7 +2901,6 @@ version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/packages/vm-derive-impl/Cargo.toml b/packages/vm-derive-impl/Cargo.toml index 0af3c1788..5e57052ba 100644 --- a/packages/vm-derive-impl/Cargo.toml +++ b/packages/vm-derive-impl/Cargo.toml @@ -8,7 +8,6 @@ proc-macro = true [dependencies] blake3 = "1.5.4" -cargo-manifest = "0.15.2" proc-macro2 = "1.0.86" quote = "1.0.37" syn = { version = "2.0.77", features = ["extra-traits", "full"] } diff --git a/packages/vm-derive-impl/src/lib.rs b/packages/vm-derive-impl/src/lib.rs index 5ec53ed1c..f39e84060 100644 --- a/packages/vm-derive-impl/src/lib.rs +++ b/packages/vm-derive-impl/src/lib.rs @@ -1,5 +1,4 @@ mod hash_function; -mod read_wasmer_version; macro_rules! bail { ($span:ident, $message:literal) => {{ @@ -24,11 +23,6 @@ macro_rules! maybe { } use {bail, maybe}; -#[proc_macro] -pub fn read_wasmer_version(input: proc_macro::TokenStream) -> proc_macro::TokenStream { - read_wasmer_version::read_wasmer_version_impl(input.into()).into() -} - /// Submit the hash of the function to a global inventory /// /// These hashes affect whether the Wasm cache is regenerated or not diff --git a/packages/vm-derive-impl/src/read_wasmer_version.rs b/packages/vm-derive-impl/src/read_wasmer_version.rs deleted file mode 100644 index 189da33bb..000000000 --- a/packages/vm-derive-impl/src/read_wasmer_version.rs +++ /dev/null @@ -1,38 +0,0 @@ -use cargo_manifest::{Dependency, DependencyDetail}; -use proc_macro2::TokenStream; -use quote::quote; - -use std::env; - -use super::bail; - -pub fn read_wasmer_version_impl(input: TokenStream) -> TokenStream { - if !input.is_empty() { - bail!(input, "unexpected parameters"); - } - - let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); - let manifest = - cargo_manifest::Manifest::from_path(format!("{manifest_dir}/Cargo.toml")).unwrap(); - - let Some(dependencies) = &manifest.dependencies else { - bail!("No dependencies found in Cargo.toml"); - }; - - let Some(wasmer_dep) = dependencies.get("wasmer") else { - bail!("No wasmer dependency found in Cargo.toml"); - }; - - let version = match wasmer_dep { - Dependency::Detailed(DependencyDetail { - version: Some(version), - .. - }) => version, - Dependency::Simple(version) => version, - _ => { - bail!("Wasmer dependency does not have a version"); - } - }; - - quote! { #version } -} diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index eee976d6d..e8952d7b4 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -1,4 +1,3 @@ -use cosmwasm_vm_derive::read_wasmer_version; use std::fs; use std::hash::Hash; use std::io; @@ -70,13 +69,12 @@ const MODULE_SERIALIZATION_VERSION: &str = "v10"; /// Separated for sanity tests because otherwise the `OnceLock` would cache the result. #[inline] fn raw_module_version_discriminator() -> String { - let wasmer_version = read_wasmer_version!(); let hashes = cosmwasm_vm_derive::collect_hashes(); let mut hasher = blake3::Hasher::new(); hasher.update(MODULE_SERIALIZATION_VERSION.as_bytes()); - hasher.update(wasmer_version.as_bytes()); + hasher.update(wasmer::VERSION.as_bytes()); for hash in hashes { hasher.update(hash.as_bytes()); From 5ad2561667d41bcf3f92f661dd9c808f84a003d7 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 20 Sep 2024 10:55:37 +0000 Subject: [PATCH 18/28] [autofix.ci] apply automated fixes --- contracts/burner/Cargo.lock | 13 ------------- contracts/crypto-verify/Cargo.lock | 13 ------------- contracts/cyberpunk/Cargo.lock | 13 ------------- contracts/empty/Cargo.lock | 13 ------------- contracts/floaty/Cargo.lock | 13 ------------- contracts/hackatom/Cargo.lock | 13 ------------- contracts/ibc-callbacks/Cargo.lock | 13 ------------- contracts/ibc-reflect-send/Cargo.lock | 13 ------------- contracts/ibc-reflect/Cargo.lock | 13 ------------- contracts/queue/Cargo.lock | 13 ------------- contracts/reflect/Cargo.lock | 13 ------------- contracts/staking/Cargo.lock | 13 ------------- contracts/virus/Cargo.lock | 13 ------------- 13 files changed, 169 deletions(-) diff --git a/contracts/burner/Cargo.lock b/contracts/burner/Cargo.lock index b2d8407df..ed5c694cf 100644 --- a/contracts/burner/Cargo.lock +++ b/contracts/burner/Cargo.lock @@ -345,17 +345,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.14", -] - [[package]] name = "cc" version = "1.1.18" @@ -519,7 +508,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2304,7 +2292,6 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/contracts/crypto-verify/Cargo.lock b/contracts/crypto-verify/Cargo.lock index 461fc15de..ff650c655 100644 --- a/contracts/crypto-verify/Cargo.lock +++ b/contracts/crypto-verify/Cargo.lock @@ -340,17 +340,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.14", -] - [[package]] name = "cc" version = "1.1.18" @@ -514,7 +503,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2381,7 +2369,6 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/contracts/cyberpunk/Cargo.lock b/contracts/cyberpunk/Cargo.lock index 885d6bfe3..486b9046b 100644 --- a/contracts/cyberpunk/Cargo.lock +++ b/contracts/cyberpunk/Cargo.lock @@ -345,17 +345,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.14", -] - [[package]] name = "cc" version = "1.1.18" @@ -519,7 +508,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2327,7 +2315,6 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/contracts/empty/Cargo.lock b/contracts/empty/Cargo.lock index 1369f3abd..f61701091 100644 --- a/contracts/empty/Cargo.lock +++ b/contracts/empty/Cargo.lock @@ -334,17 +334,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.14", -] - [[package]] name = "cc" version = "1.1.18" @@ -508,7 +497,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2303,7 +2291,6 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/contracts/floaty/Cargo.lock b/contracts/floaty/Cargo.lock index 58602334e..81b35c49e 100644 --- a/contracts/floaty/Cargo.lock +++ b/contracts/floaty/Cargo.lock @@ -334,17 +334,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.14", -] - [[package]] name = "cc" version = "1.1.18" @@ -508,7 +497,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2305,7 +2293,6 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/contracts/hackatom/Cargo.lock b/contracts/hackatom/Cargo.lock index 23d9fa7c7..11d6ffff1 100644 --- a/contracts/hackatom/Cargo.lock +++ b/contracts/hackatom/Cargo.lock @@ -334,17 +334,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.14", -] - [[package]] name = "cc" version = "1.1.18" @@ -508,7 +497,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2306,7 +2294,6 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/contracts/ibc-callbacks/Cargo.lock b/contracts/ibc-callbacks/Cargo.lock index f3dc847fb..f19769c70 100644 --- a/contracts/ibc-callbacks/Cargo.lock +++ b/contracts/ibc-callbacks/Cargo.lock @@ -334,17 +334,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.13", -] - [[package]] name = "cc" version = "1.1.18" @@ -508,7 +497,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2146,7 +2134,6 @@ version = "0.8.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/contracts/ibc-reflect-send/Cargo.lock b/contracts/ibc-reflect-send/Cargo.lock index 3c0d6b753..f81feb6a0 100644 --- a/contracts/ibc-reflect-send/Cargo.lock +++ b/contracts/ibc-reflect-send/Cargo.lock @@ -334,17 +334,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.14", -] - [[package]] name = "cc" version = "1.1.18" @@ -508,7 +497,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2304,7 +2292,6 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/contracts/ibc-reflect/Cargo.lock b/contracts/ibc-reflect/Cargo.lock index f9540fa08..f0b72854f 100644 --- a/contracts/ibc-reflect/Cargo.lock +++ b/contracts/ibc-reflect/Cargo.lock @@ -334,17 +334,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.14", -] - [[package]] name = "cc" version = "1.1.18" @@ -508,7 +497,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2304,7 +2292,6 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/contracts/queue/Cargo.lock b/contracts/queue/Cargo.lock index d38e3e240..723123e53 100644 --- a/contracts/queue/Cargo.lock +++ b/contracts/queue/Cargo.lock @@ -334,17 +334,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.14", -] - [[package]] name = "cc" version = "1.1.18" @@ -508,7 +497,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2304,7 +2292,6 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/contracts/reflect/Cargo.lock b/contracts/reflect/Cargo.lock index 75da15a2f..0bf6d6d6c 100644 --- a/contracts/reflect/Cargo.lock +++ b/contracts/reflect/Cargo.lock @@ -334,17 +334,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.14", -] - [[package]] name = "cc" version = "1.1.18" @@ -508,7 +497,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2305,7 +2293,6 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/contracts/staking/Cargo.lock b/contracts/staking/Cargo.lock index 824a66a5d..66fc26d19 100644 --- a/contracts/staking/Cargo.lock +++ b/contracts/staking/Cargo.lock @@ -334,17 +334,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.14", -] - [[package]] name = "cc" version = "1.1.18" @@ -508,7 +497,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2326,7 +2314,6 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/contracts/virus/Cargo.lock b/contracts/virus/Cargo.lock index eba1084ed..bc3f6fd02 100644 --- a/contracts/virus/Cargo.lock +++ b/contracts/virus/Cargo.lock @@ -334,17 +334,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-manifest" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa8484a7f2eef80e6dd2e2be90b322b9c29aeb1bbc206013d6eb2104db7241" -dependencies = [ - "serde", - "thiserror", - "toml 0.8.14", -] - [[package]] name = "cc" version = "1.1.18" @@ -508,7 +497,6 @@ name = "cosmwasm-vm-derive-impl" version = "2.1.3" dependencies = [ "blake3", - "cargo-manifest", "proc-macro2", "quote", "syn 2.0.77", @@ -2293,7 +2281,6 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ - "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", From c55684cfe9c60d6c483c2966b551b6028b70b412 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Fri, 20 Sep 2024 13:12:17 +0200 Subject: [PATCH 19/28] Get rid of `inventory` --- Cargo.lock | 14 ---- contracts/burner/Cargo.lock | 14 ---- contracts/crypto-verify/Cargo.lock | 14 ---- contracts/cyberpunk/Cargo.lock | 14 ---- contracts/empty/Cargo.lock | 14 ---- contracts/floaty/Cargo.lock | 14 ---- contracts/hackatom/Cargo.lock | 14 ---- contracts/ibc-callbacks/Cargo.lock | 14 ---- contracts/ibc-reflect-send/Cargo.lock | 14 ---- contracts/ibc-reflect/Cargo.lock | 14 ---- contracts/queue/Cargo.lock | 14 ---- contracts/reflect/Cargo.lock | 14 ---- contracts/staking/Cargo.lock | 14 ---- contracts/virus/Cargo.lock | 14 ---- packages/vm-derive-impl/Cargo.toml | 13 ---- packages/vm-derive-impl/src/hash_function.rs | 54 ------------- packages/vm-derive-impl/src/lib.rs | 35 --------- packages/vm-derive/Cargo.toml | 9 ++- packages/vm-derive/src/hash_function.rs | 82 ++++++++++++++++++++ packages/vm-derive/src/lib.rs | 37 ++++----- packages/vm/src/modules/file_system_cache.rs | 5 +- packages/vm/src/wasm_backend/engine.rs | 2 +- packages/vm/src/wasm_backend/mod.rs | 2 +- 23 files changed, 113 insertions(+), 322 deletions(-) delete mode 100644 packages/vm-derive-impl/Cargo.toml delete mode 100644 packages/vm-derive-impl/src/hash_function.rs delete mode 100644 packages/vm-derive-impl/src/lib.rs create mode 100644 packages/vm-derive/src/hash_function.rs diff --git a/Cargo.lock b/Cargo.lock index ed5dde0b9..50a9cefe6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -726,14 +726,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1750,12 +1742,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "is-terminal" version = "0.4.12" diff --git a/contracts/burner/Cargo.lock b/contracts/burner/Cargo.lock index ed5c694cf..68f65e5a3 100644 --- a/contracts/burner/Cargo.lock +++ b/contracts/burner/Cargo.lock @@ -498,14 +498,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1379,12 +1371,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "itertools" version = "0.10.5" diff --git a/contracts/crypto-verify/Cargo.lock b/contracts/crypto-verify/Cargo.lock index ff650c655..294390e34 100644 --- a/contracts/crypto-verify/Cargo.lock +++ b/contracts/crypto-verify/Cargo.lock @@ -493,14 +493,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1400,12 +1392,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "itertools" version = "0.10.5" diff --git a/contracts/cyberpunk/Cargo.lock b/contracts/cyberpunk/Cargo.lock index 486b9046b..b3fb71599 100644 --- a/contracts/cyberpunk/Cargo.lock +++ b/contracts/cyberpunk/Cargo.lock @@ -498,14 +498,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1391,12 +1383,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "itertools" version = "0.10.5" diff --git a/contracts/empty/Cargo.lock b/contracts/empty/Cargo.lock index f61701091..a7e1b89f0 100644 --- a/contracts/empty/Cargo.lock +++ b/contracts/empty/Cargo.lock @@ -487,14 +487,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1378,12 +1370,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "itertools" version = "0.10.5" diff --git a/contracts/floaty/Cargo.lock b/contracts/floaty/Cargo.lock index 81b35c49e..dfd65427b 100644 --- a/contracts/floaty/Cargo.lock +++ b/contracts/floaty/Cargo.lock @@ -487,14 +487,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1380,12 +1372,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "itertools" version = "0.10.5" diff --git a/contracts/hackatom/Cargo.lock b/contracts/hackatom/Cargo.lock index 11d6ffff1..08da00837 100644 --- a/contracts/hackatom/Cargo.lock +++ b/contracts/hackatom/Cargo.lock @@ -487,14 +487,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1381,12 +1373,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "itertools" version = "0.10.5" diff --git a/contracts/ibc-callbacks/Cargo.lock b/contracts/ibc-callbacks/Cargo.lock index f19769c70..10b3642c0 100644 --- a/contracts/ibc-callbacks/Cargo.lock +++ b/contracts/ibc-callbacks/Cargo.lock @@ -487,14 +487,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1248,12 +1240,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "itertools" version = "0.10.5" diff --git a/contracts/ibc-reflect-send/Cargo.lock b/contracts/ibc-reflect-send/Cargo.lock index f81feb6a0..0b91398e7 100644 --- a/contracts/ibc-reflect-send/Cargo.lock +++ b/contracts/ibc-reflect-send/Cargo.lock @@ -487,14 +487,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1379,12 +1371,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "itertools" version = "0.10.5" diff --git a/contracts/ibc-reflect/Cargo.lock b/contracts/ibc-reflect/Cargo.lock index f0b72854f..95b51c0b8 100644 --- a/contracts/ibc-reflect/Cargo.lock +++ b/contracts/ibc-reflect/Cargo.lock @@ -487,14 +487,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1379,12 +1371,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "itertools" version = "0.10.5" diff --git a/contracts/queue/Cargo.lock b/contracts/queue/Cargo.lock index 723123e53..7a011f82b 100644 --- a/contracts/queue/Cargo.lock +++ b/contracts/queue/Cargo.lock @@ -487,14 +487,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1368,12 +1360,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "itertools" version = "0.10.5" diff --git a/contracts/reflect/Cargo.lock b/contracts/reflect/Cargo.lock index 0bf6d6d6c..a2970a1fa 100644 --- a/contracts/reflect/Cargo.lock +++ b/contracts/reflect/Cargo.lock @@ -487,14 +487,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1368,12 +1360,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "itertools" version = "0.10.5" diff --git a/contracts/staking/Cargo.lock b/contracts/staking/Cargo.lock index 66fc26d19..455f53984 100644 --- a/contracts/staking/Cargo.lock +++ b/contracts/staking/Cargo.lock @@ -487,14 +487,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1368,12 +1360,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "itertools" version = "0.10.5" diff --git a/contracts/virus/Cargo.lock b/contracts/virus/Cargo.lock index bc3f6fd02..172e92929 100644 --- a/contracts/virus/Cargo.lock +++ b/contracts/virus/Cargo.lock @@ -487,14 +487,6 @@ dependencies = [ [[package]] name = "cosmwasm-vm-derive" version = "2.1.3" -dependencies = [ - "cosmwasm-vm-derive-impl", - "inventory", -] - -[[package]] -name = "cosmwasm-vm-derive-impl" -version = "2.1.3" dependencies = [ "blake3", "proc-macro2", @@ -1368,12 +1360,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "itertools" version = "0.10.5" diff --git a/packages/vm-derive-impl/Cargo.toml b/packages/vm-derive-impl/Cargo.toml deleted file mode 100644 index 5e57052ba..000000000 --- a/packages/vm-derive-impl/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "cosmwasm-vm-derive-impl" -edition = "2021" -version.workspace = true - -[lib] -proc-macro = true - -[dependencies] -blake3 = "1.5.4" -proc-macro2 = "1.0.86" -quote = "1.0.37" -syn = { version = "2.0.77", features = ["extra-traits", "full"] } diff --git a/packages/vm-derive-impl/src/hash_function.rs b/packages/vm-derive-impl/src/hash_function.rs deleted file mode 100644 index 6b6ff76a6..000000000 --- a/packages/vm-derive-impl/src/hash_function.rs +++ /dev/null @@ -1,54 +0,0 @@ -use std::hash::{Hash, Hasher}; - -use proc_macro2::TokenStream; -use quote::quote; - -use super::{bail, maybe}; - -struct Blake3Hasher { - hasher: blake3::Hasher, -} - -impl Blake3Hasher { - fn new() -> Self { - Self { - hasher: blake3::Hasher::new(), - } - } - - fn consume(self) -> String { - self.hasher.finalize().to_hex().to_string() - } -} - -impl Hasher for Blake3Hasher { - fn write(&mut self, bytes: &[u8]) { - self.hasher.update(bytes); - } - - fn finish(&self) -> u64 { - unimplemented!(); - } -} - -pub fn hash_function_impl(attr: TokenStream, input: TokenStream) -> TokenStream { - if !attr.is_empty() { - bail!(attr, "Unexpected parameters"); - } - - // Just verify that this is actually a function - let function: syn::ItemFn = maybe!(syn::parse2(input.clone())); - - let mut hasher = Blake3Hasher::new(); - function.hash(&mut hasher); - - let hex_hash = hasher.consume(); - - quote! { - #input - - ::cosmwasm_vm_derive::inventory::submit! { - ::cosmwasm_vm_derive::Hash(#hex_hash) - } - } -} diff --git a/packages/vm-derive-impl/src/lib.rs b/packages/vm-derive-impl/src/lib.rs deleted file mode 100644 index f39e84060..000000000 --- a/packages/vm-derive-impl/src/lib.rs +++ /dev/null @@ -1,35 +0,0 @@ -mod hash_function; - -macro_rules! bail { - ($span:ident, $message:literal) => {{ - return ::syn::Error::new_spanned($span, $message) - .into_compile_error() - .into(); - }}; - ($message:literal) => {{ - return ::syn::Error::new(proc_macro2::Span::call_site(), $message) - .into_compile_error() - .into(); - }}; -} - -macro_rules! maybe { - ($result:expr) => {{ - match { $result } { - Ok(val) => val, - Err(err) => return err.into_compile_error(), - } - }}; -} -use {bail, maybe}; - -/// Submit the hash of the function to a global inventory -/// -/// These hashes affect whether the Wasm cache is regenerated or not -#[proc_macro_attribute] -pub fn hash_function( - attr: proc_macro::TokenStream, - item: proc_macro::TokenStream, -) -> proc_macro::TokenStream { - hash_function::hash_function_impl(attr.into(), item.into()).into() -} diff --git a/packages/vm-derive/Cargo.toml b/packages/vm-derive/Cargo.toml index 53988381a..7e4fe922d 100644 --- a/packages/vm-derive/Cargo.toml +++ b/packages/vm-derive/Cargo.toml @@ -3,6 +3,11 @@ name = "cosmwasm-vm-derive" edition = "2021" version.workspace = true +[lib] +proc-macro = true + [dependencies] -cosmwasm-vm-derive-impl = { version = "=2.1.3", path = "../vm-derive-impl" } -inventory = "0.3.15" +blake3 = "1.5.4" +proc-macro2 = "1.0.86" +quote = "1.0.37" +syn = { version = "2.0.77", features = ["extra-traits", "full"] } diff --git a/packages/vm-derive/src/hash_function.rs b/packages/vm-derive/src/hash_function.rs new file mode 100644 index 000000000..44faf770a --- /dev/null +++ b/packages/vm-derive/src/hash_function.rs @@ -0,0 +1,82 @@ +use std::hash::{Hash, Hasher}; + +use proc_macro2::TokenStream; +use quote::{quote, ToTokens}; +use syn::{punctuated::Punctuated, Token}; + +use super::maybe; + +struct Options { + const_name: syn::Ident, +} + +impl syn::parse::Parse for Options { + fn parse(input: syn::parse::ParseStream) -> syn::Result { + let params = Punctuated::::parse_terminated(input)?; + + let mut const_name = None; + for param in params { + if param.path.is_ident("const_name") { + if const_name.is_some() { + return Err(syn::Error::new_spanned(param, "Duplicate parameter")); + } + + let ident_as_string: syn::LitStr = syn::parse2(param.value.to_token_stream())?; + const_name = Some(ident_as_string.parse()?); + } else { + return Err(syn::Error::new_spanned(param, "Unknown parameter")); + } + } + + Ok(Self { + const_name: const_name + .ok_or_else(|| syn::Error::new(input.span(), "Missing parameters"))?, + }) + } +} + +struct Blake3Hasher { + hasher: blake3::Hasher, +} + +impl Blake3Hasher { + fn new() -> Self { + Self { + hasher: blake3::Hasher::new(), + } + } + + fn consume(self) -> blake3::Hash { + self.hasher.finalize() + } +} + +impl Hasher for Blake3Hasher { + fn write(&mut self, bytes: &[u8]) { + self.hasher.update(bytes); + } + + fn finish(&self) -> u64 { + unimplemented!(); + } +} + +pub fn hash_function_impl(attr: TokenStream, input: TokenStream) -> TokenStream { + let options: Options = maybe!(syn::parse2(attr)); + + // Just verify that this is actually a function + let function: syn::ItemFn = maybe!(syn::parse2(input.clone())); + + let mut hasher = Blake3Hasher::new(); + function.hash(&mut hasher); + let hash = hasher.consume(); + + let hash_variable_name = &options.const_name; + let hash_bytes = hash.as_bytes(); + + quote! { + pub const #hash_variable_name: &[u8] = &[#(#hash_bytes),*]; + + #input + } +} diff --git a/packages/vm-derive/src/lib.rs b/packages/vm-derive/src/lib.rs index 09d8cf45b..7ede9e202 100644 --- a/packages/vm-derive/src/lib.rs +++ b/packages/vm-derive/src/lib.rs @@ -1,21 +1,22 @@ -use std::fmt::Debug; +mod hash_function; -pub struct Hash(pub &'static str); - -inventory::collect!(Hash); - -#[inline] -pub fn collect_hashes() -> impl Iterator + Debug { - let mut hashes = inventory::iter:: - .into_iter() - .map(|hash| hash.0) - .collect::>(); - - hashes.sort(); - hashes.into_iter() +macro_rules! maybe { + ($result:expr) => {{ + match { $result } { + Ok(val) => val, + Err(err) => return err.into_compile_error(), + } + }}; } +use maybe; -#[doc(hidden)] -pub use ::inventory; - -pub use ::cosmwasm_vm_derive_impl::*; +/// Submit the hash of the function to a global inventory +/// +/// These hashes affect whether the Wasm cache is regenerated or not +#[proc_macro_attribute] +pub fn hash_function( + attr: proc_macro::TokenStream, + item: proc_macro::TokenStream, +) -> proc_macro::TokenStream { + hash_function::hash_function_impl(attr.into(), item.into()).into() +} diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index e8952d7b4..341ae5f33 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -14,6 +14,7 @@ use crate::errors::{VmError, VmResult}; use crate::filesystem::mkdir_p; use crate::modules::current_wasmer_module_version; use crate::wasm_backend::make_runtime_engine; +use crate::wasm_backend::COST_FUNCTION_HASH; use crate::Size; use super::cached_module::engine_size_estimate; @@ -69,7 +70,7 @@ const MODULE_SERIALIZATION_VERSION: &str = "v10"; /// Separated for sanity tests because otherwise the `OnceLock` would cache the result. #[inline] fn raw_module_version_discriminator() -> String { - let hashes = cosmwasm_vm_derive::collect_hashes(); + let hashes = [COST_FUNCTION_HASH]; let mut hasher = blake3::Hasher::new(); @@ -77,7 +78,7 @@ fn raw_module_version_discriminator() -> String { hasher.update(wasmer::VERSION.as_bytes()); for hash in hashes { - hasher.update(hash.as_bytes()); + hasher.update(hash); } hasher.finalize().to_hex().to_string() diff --git a/packages/vm/src/wasm_backend/engine.rs b/packages/vm/src/wasm_backend/engine.rs index 941cfd4d0..77dccd6be 100644 --- a/packages/vm/src/wasm_backend/engine.rs +++ b/packages/vm/src/wasm_backend/engine.rs @@ -17,7 +17,7 @@ use super::limiting_tunables::LimitingTunables; /// https://github.com/WebAssembly/memory64/blob/master/proposals/memory64/Overview.md const MAX_WASM_PAGES: u32 = 65536; -#[hash_function] +#[hash_function(const_name = "COST_FUNCTION_HASH")] fn cost(operator: &Operator) -> u64 { // A flat fee for each operation // The target is 1 Teragas per second (see GAS.md). diff --git a/packages/vm/src/wasm_backend/mod.rs b/packages/vm/src/wasm_backend/mod.rs index a7c8bf057..63f6611b9 100644 --- a/packages/vm/src/wasm_backend/mod.rs +++ b/packages/vm/src/wasm_backend/mod.rs @@ -7,4 +7,4 @@ mod limiting_tunables; pub use engine::make_compiler_config; pub use compile::compile; -pub use engine::{make_compiling_engine, make_runtime_engine}; +pub use engine::{make_compiling_engine, make_runtime_engine, COST_FUNCTION_HASH}; From 4a2ff20f9ee26f957428909a65375421bbc4e9c6 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Fri, 20 Sep 2024 13:13:22 +0200 Subject: [PATCH 20/28] Fix hash --- packages/vm/src/modules/file_system_cache.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index 341ae5f33..085655f3d 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -470,7 +470,7 @@ mod tests { let version = raw_module_version_discriminator(); assert_eq!( version, - "9ef3de8cb5fb770171ae3ea14db67fe25d946fef383472a18ddd75ced7bfcd4b" + "2cc4970565c9d957af65f1ea3511d7426e38aca57181167cc4af5daf2b68a763" ); } } From 90f4571b9ba3e7c8c20b8c9eeb56c1dd503026f2 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Fri, 20 Sep 2024 13:17:24 +0200 Subject: [PATCH 21/28] Remove mention of the impl crate from CI --- .circleci/config.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 02ec9bf67..1584602dc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -513,15 +513,6 @@ jobs: working_directory: ~/project/packages/vm-derive command: cargo test --locked - - run: - name: Build impl - working_directory: ~/project/packages/vm-derive-impl - command: cargo build --locked - - run: - name: Test impl - working_directory: ~/project/packages/vm-derive-impl - command: cargo test --locked - - save_cache: paths: - /usr/local/cargo/registry From dde76948924fd96f9f4bef581b508e4cfe35b937 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Tue, 24 Sep 2024 17:15:49 +0200 Subject: [PATCH 22/28] Update doc comment --- packages/vm-derive/src/lib.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/vm-derive/src/lib.rs b/packages/vm-derive/src/lib.rs index 7ede9e202..11a4caed8 100644 --- a/packages/vm-derive/src/lib.rs +++ b/packages/vm-derive/src/lib.rs @@ -10,9 +10,17 @@ macro_rules! maybe { } use maybe; -/// Submit the hash of the function to a global inventory -/// -/// These hashes affect whether the Wasm cache is regenerated or not +/// Hash the function +/// +/// # Example +/// +/// ```rust +/// # use vm_derive::hash_function; +/// #[hash_function(const_name = "HASH")] +/// fn foo() { +/// println!("Hello, world!"); +/// } +/// ``` #[proc_macro_attribute] pub fn hash_function( attr: proc_macro::TokenStream, From 32c505f99e3a371d2283a82e58c3adb444c26e8a Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Tue, 24 Sep 2024 17:18:53 +0200 Subject: [PATCH 23/28] Update doc comment --- packages/vm-derive/src/lib.rs | 4 ++-- packages/vm/src/modules/file_system_cache.rs | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/vm-derive/src/lib.rs b/packages/vm-derive/src/lib.rs index 11a4caed8..00c1420b2 100644 --- a/packages/vm-derive/src/lib.rs +++ b/packages/vm-derive/src/lib.rs @@ -11,9 +11,9 @@ macro_rules! maybe { use maybe; /// Hash the function -/// +/// /// # Example -/// +/// /// ```rust /// # use vm_derive::hash_function; /// #[hash_function(const_name = "HASH")] diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index adefe9950..b6b31cd08 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -87,10 +87,22 @@ fn raw_module_version_discriminator() -> String { hasher.finalize().to_hex().to_string() } -/// Bump this version whenever the module system changes in a way +/// This version __MUST__ change whenever the module system changes in a way /// that old stored modules would be corrupt when loaded in the new system. /// This needs to be done e.g. when switching between the jit/native engine. /// +/// By default, this derived by performing the following operation: +/// +/// ```ignore +/// BLAKE3( +/// manual module version, +/// wasmer version requirement, +/// BLAKE3(cost_fn) +/// ) +/// ``` +/// +/// If anything else changes, you must change the manual module version. +/// /// The string is used as a folder and should be named in a way that is /// easy to interpret for system admins. It should allow easy clearing /// of old versions. From 69dce2bf5940944db67cd849ed67d8b59e87c821 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Tue, 24 Sep 2024 17:19:25 +0200 Subject: [PATCH 24/28] Fix doc test --- packages/vm-derive/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vm-derive/src/lib.rs b/packages/vm-derive/src/lib.rs index 00c1420b2..bdbb93846 100644 --- a/packages/vm-derive/src/lib.rs +++ b/packages/vm-derive/src/lib.rs @@ -15,7 +15,7 @@ use maybe; /// # Example /// /// ```rust -/// # use vm_derive::hash_function; +/// # use cosmwasm_vm_derive::hash_function; /// #[hash_function(const_name = "HASH")] /// fn foo() { /// println!("Hello, world!"); From 9cc784ced968e0dec9428eb26ac979446b0d9e3b Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Tue, 24 Sep 2024 17:20:43 +0200 Subject: [PATCH 25/28] Update test --- packages/vm/src/modules/file_system_cache.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index b6b31cd08..8a11efb8f 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -485,7 +485,7 @@ mod tests { let version = raw_module_version_discriminator(); assert_eq!( version, - "2cc4970565c9d957af65f1ea3511d7426e38aca57181167cc4af5daf2b68a763" + "ccb684857ad601a472678fe20c863ee289157dc01b6f3c67c50886beae630ae8" ); } } From 9cb19ed27b3f5e8940662545bb7b07581878e032 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Fri, 27 Sep 2024 12:24:56 +0200 Subject: [PATCH 26/28] Remove outdated comment --- packages/vm/src/modules/file_system_cache.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index 8a11efb8f..07e1ab0b7 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -103,10 +103,6 @@ fn raw_module_version_discriminator() -> String { /// /// If anything else changes, you must change the manual module version. /// -/// The string is used as a folder and should be named in a way that is -/// easy to interpret for system admins. It should allow easy clearing -/// of old versions. -/// /// See https://github.com/wasmerio/wasmer/issues/2781 for more information /// on Wasmer's module stability concept. #[inline] From bce8adf678e7b2b2b3705e44a0a43f57c316d68e Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Fri, 27 Sep 2024 12:25:48 +0200 Subject: [PATCH 27/28] Add changelog entry --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11bdb1181..6b758ae80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,8 @@ and this project adheres to - cosmwasm-vm: Effectively remove the `cranelift` feature. It still exists but is only a no-op for semver compatibility. It will now unconditionally use the singlepass compiler. ([#2260]) +- cosmwasm-vm: Automatically derive cache version from function hashes and the + Wasmer version ([#2250]) [#2118]: https://github.com/CosmWasm/cosmwasm/pull/2118 [#2211]: https://github.com/CosmWasm/cosmwasm/issues/2211 @@ -64,6 +66,7 @@ and this project adheres to [#2247]: https://github.com/CosmWasm/cosmwasm/pull/2247 [#2255]: https://github.com/CosmWasm/cosmwasm/pull/2255 [#2260]: https://github.com/CosmWasm/cosmwasm/pull/2260 +[#2250]: https://github.com/CosmWasm/cosmwasm/pull/2250 ## [2.1.3] - 2024-08-08 From 74089c7b9fccd987cb9db700c0749fc031e609ca Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Fri, 27 Sep 2024 12:36:17 +0200 Subject: [PATCH 28/28] Update hash --- packages/vm/src/modules/file_system_cache.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vm/src/modules/file_system_cache.rs b/packages/vm/src/modules/file_system_cache.rs index 07e1ab0b7..473c3a1ee 100644 --- a/packages/vm/src/modules/file_system_cache.rs +++ b/packages/vm/src/modules/file_system_cache.rs @@ -481,7 +481,7 @@ mod tests { let version = raw_module_version_discriminator(); assert_eq!( version, - "ccb684857ad601a472678fe20c863ee289157dc01b6f3c67c50886beae630ae8" + "b2a230627e6fd9c14c45aabcf781b58d873dd251fcb004d30e081c8407cad5af" ); } }