diff --git a/.config/cargo_spellcheck.dic b/.config/cargo_spellcheck.dic index a56820143c3..79911aecea5 100644 --- a/.config/cargo_spellcheck.dic +++ b/.config/cargo_spellcheck.dic @@ -63,6 +63,7 @@ v3 validator variadic versa +versioning Verbatim metadata timestamp diff --git a/RELEASES.md b/RELEASES.md index bbfe067239c..66d10a9058a 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -4,6 +4,7 @@ This is the 6th release candidate for ink! 3.0. ## Changed +- Update to `scale-info` 1.0 - [#845](https://github.com/paritytech/ink/pull/845). - Message and constructor selectors no longer take their inputs as string but as `u32` decodable integer. For example: - It is no longer possible to specify a selector as `#[ink(selector = "0xC0DECAFE")]`. diff --git a/crates/env/Cargo.toml b/crates/env/Cargo.toml index 6a6e0fcc837..ea528c3e7ec 100644 --- a/crates/env/Cargo.toml +++ b/crates/env/Cargo.toml @@ -40,7 +40,7 @@ blake2 = { version = "0.9", optional = true } # Sadly couldn't be marked as dev-dependency. # Never use this crate outside the off-chain environment! rand = { version = "0.8", default-features = false, features = ["alloc"], optional = true } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [features] default = ["std"] diff --git a/crates/lang/Cargo.toml b/crates/lang/Cargo.toml index 0a91a88fd46..f1dc6c79dd8 100644 --- a/crates/lang/Cargo.toml +++ b/crates/lang/Cargo.toml @@ -28,7 +28,7 @@ static_assertions = "1.1" [dev-dependencies] # required for the doctest of `env_access::EnvAccess::instantiate_contract` -scale-info = { version = "0.6", default-features = false, features = ["derive"] } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } [features] default = ["std"] diff --git a/crates/lang/codegen/src/generator/metadata.rs b/crates/lang/codegen/src/generator/metadata.rs index 5326150b69b..2d58d29f368 100644 --- a/crates/lang/codegen/src/generator/metadata.rs +++ b/crates/lang/codegen/src/generator/metadata.rs @@ -49,14 +49,14 @@ impl GenerateCode for Metadata<'_> { #no_cross_calling_cfg const _: () = { #[no_mangle] - pub fn __ink_generate_metadata() -> ::ink_metadata::InkProject { + pub fn __ink_generate_metadata() -> ::ink_metadata::MetadataVersioned { let contract: ::ink_metadata::ContractSpec = { #contract }; let layout: ::ink_metadata::layout::Layout = { #layout }; - ::ink_metadata::InkProject::new(layout, contract) + ::ink_metadata::InkProject::new(layout, contract).into() } }; } diff --git a/crates/lang/macro/Cargo.toml b/crates/lang/macro/Cargo.toml index 29cc59537d1..0746f534428 100644 --- a/crates/lang/macro/Cargo.toml +++ b/crates/lang/macro/Cargo.toml @@ -31,7 +31,7 @@ ink_lang = { version = "3.0.0-rc5", path = ".." } ink_prelude = { version = "3.0.0-rc5", path = "../../prelude/" } trybuild = "1.0.24" -scale-info = { version = "0.6", default-features = false, features = ["derive"] } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } [lib] name = "ink_lang_macro" diff --git a/crates/metadata/Cargo.toml b/crates/metadata/Cargo.toml index ad9eee83054..8a68846aaae 100644 --- a/crates/metadata/Cargo.toml +++ b/crates/metadata/Cargo.toml @@ -21,7 +21,7 @@ ink_primitives = { version = "3.0.0-rc5", path = "../primitives/", default-featu serde = { version = "1.0", default-features = false, features = ["derive", "alloc"] } impl-serde = "0.3.1" derive_more = { version = "0.99", default-features = false, features = ["from"] } -scale-info = { version = "0.6", default-features = false, features = ["derive", "serde"] } +scale-info = { version = "1.0", default-features = false, features = ["derive", "serde", "decode"] } [dev-dependencies] pretty_assertions = "1.0.0" diff --git a/crates/metadata/src/layout/tests.rs b/crates/metadata/src/layout/tests.rs index 4137f631196..d49166e1a00 100644 --- a/crates/metadata/src/layout/tests.rs +++ b/crates/metadata/src/layout/tests.rs @@ -58,7 +58,7 @@ fn named_fields_work() { 0000000000000000\ 0000000000000000\ 0000000000000000", - "ty": 1, + "ty": 0, } }, "name": "a", @@ -71,7 +71,7 @@ fn named_fields_work() { 0000000000000000\ 0000000000000000\ 0000000000000000", - "ty": 2, + "ty": 1, } }, "name": "b", @@ -115,7 +115,7 @@ fn tuple_struct_work() { 0000000000000000\ 0000000000000000\ 0000000000000000", - "ty": 1, + "ty": 0, } }, "name": null, @@ -128,7 +128,7 @@ fn tuple_struct_work() { 0000000000000000\ 0000000000000000\ 0000000000000000", - "ty": 2, + "ty": 1, } }, "name": null, @@ -261,7 +261,7 @@ fn mixed_enum_work() { 0000000000000000\ 0000000000000000\ 0000000000000000", - "ty": 1, + "ty": 0, } }, "name": null, @@ -274,7 +274,7 @@ fn mixed_enum_work() { 0000000000000000\ 0000000000000000\ 0000000000000000", - "ty": 2, + "ty": 1, } }, "name": null, @@ -291,7 +291,7 @@ fn mixed_enum_work() { 0000000000000000\ 0000000000000000\ 0000000000000000", - "ty": 1, + "ty": 0, } }, "name": "a", @@ -304,7 +304,7 @@ fn mixed_enum_work() { 0000000000000000\ 0000000000000000\ 0000000000000000", - "ty": 2, + "ty": 1, } }, "name": "b", @@ -348,7 +348,7 @@ fn unbounded_layout_works() { 0000000000000000\ 0000000000000000\ 0000000000000000", - "ty": 1 + "ty": 0 } }, "offset": "0x\ diff --git a/crates/metadata/src/lib.rs b/crates/metadata/src/lib.rs index 4f7c7893394..552bd79a056 100644 --- a/crates/metadata/src/lib.rs +++ b/crates/metadata/src/lib.rs @@ -57,6 +57,31 @@ use serde::{ Serialize, }; +/// Versioned ink! project metadata. +/// +/// # Note +/// +/// Represents the version of the serialized metadata *format*, which is distinct from the version +/// of this crate for Rust semantic versioning compatibility. +#[derive(Debug, Serialize, Deserialize)] +#[allow(clippy::large_enum_variant)] +pub enum MetadataVersioned { + /// Version 0 placeholder. Represents the original non-versioned metadata format. + V0(MetadataVersionDeprecated), + /// Version 1 of the contract metadata. + V1(InkProject), +} + +impl From for MetadataVersioned { + fn from(ink_project: InkProject) -> Self { + MetadataVersioned::V1(ink_project) + } +} + +/// Enum to represent a deprecated metadata version that cannot be instantiated. +#[derive(Debug, Serialize, Deserialize)] +pub enum MetadataVersionDeprecated {} + /// An entire ink! project for metadata file generation purposes. #[derive(Debug, Serialize, Deserialize)] pub struct InkProject { diff --git a/crates/metadata/src/tests.rs b/crates/metadata/src/tests.rs index 91a5991ec65..aefa57d6fc6 100644 --- a/crates/metadata/src/tests.rs +++ b/crates/metadata/src/tests.rs @@ -114,7 +114,7 @@ fn spec_contract_json() { "displayName": [ "i32" ], - "type": 1 + "type": 0 } } ], @@ -140,7 +140,7 @@ fn spec_contract_json() { "displayName": [ "i32" ], - "type": 1 + "type": 0 } } ], @@ -161,7 +161,7 @@ fn spec_contract_json() { "displayName": [ "i32" ], - "type": 1 + "type": 0 }, "selector": "0x25444afe" } diff --git a/crates/primitives/Cargo.toml b/crates/primitives/Cargo.toml index 6939af1974c..fe9d48a431f 100644 --- a/crates/primitives/Cargo.toml +++ b/crates/primitives/Cargo.toml @@ -17,7 +17,7 @@ include = ["/Cargo.toml", "src/**/*.rs", "/README.md", "/LICENSE"] [dependencies] ink_prelude = { version = "3.0.0-rc5", path = "../prelude/", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive", "full"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [dev-dependencies] criterion = "0.3.1" diff --git a/crates/primitives/src/key.rs b/crates/primitives/src/key.rs index d215f6f8cab..28e30f307a2 100644 --- a/crates/primitives/src/key.rs +++ b/crates/primitives/src/key.rs @@ -241,7 +241,9 @@ const _: () = { fn type_info() -> Type { Type::builder() .path(Path::new("Key", "ink_primitives")) - .composite(Fields::unnamed().field_of::<[u8; 32]>("[u8; 32]")) + .composite( + Fields::unnamed().field(|f| f.ty::<[u8; 32]>().type_name("[u8; 32]")), + ) } } }; diff --git a/crates/storage/Cargo.toml b/crates/storage/Cargo.toml index 864b01f50ff..8f6b7d6c220 100644 --- a/crates/storage/Cargo.toml +++ b/crates/storage/Cargo.toml @@ -23,7 +23,7 @@ ink_prelude = { version = "3.0.0-rc5", path = "../prelude/", default-features = scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive", "full"] } derive_more = { version = "0.99", default-features = false, features = ["from", "display"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } cfg-if = "1.0" array-init = { version = "2.0", default-features = false } diff --git a/crates/storage/src/alloc/boxed/storage.rs b/crates/storage/src/alloc/boxed/storage.rs index 6a0811d5eeb..c48f616e5e7 100644 --- a/crates/storage/src/alloc/boxed/storage.rs +++ b/crates/storage/src/alloc/boxed/storage.rs @@ -68,8 +68,11 @@ const _: () = { // .type_params(vec![scale_info::MetaType::new::()]) .composite( scale_info::build::Fields::named() - .field_of::("allocation", "DynamicAllocation"), - ) + .field(|f| f + .name("allocation") + .ty::() + .type_name("DynamicAllocation"), + )) } } }; diff --git a/examples/contract-terminate/Cargo.toml b/examples/contract-terminate/Cargo.toml index 3a29788df2f..e0458f8021e 100644 --- a/examples/contract-terminate/Cargo.toml +++ b/examples/contract-terminate/Cargo.toml @@ -12,7 +12,7 @@ ink_storage = { version = "3.0.0-rc5", path = "../../crates/storage", default-fe ink_lang = { version = "3.0.0-rc5", path = "../../crates/lang", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "contract_terminate" diff --git a/examples/contract-transfer/Cargo.toml b/examples/contract-transfer/Cargo.toml index 159fbe7fb59..8f0d01a057f 100644 --- a/examples/contract-transfer/Cargo.toml +++ b/examples/contract-transfer/Cargo.toml @@ -13,7 +13,7 @@ ink_lang = { version = "3.0.0-rc5", path = "../../crates/lang", default-features ink_prelude = { version = "3.0.0-rc5", path = "../../crates/prelude", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "contract_transfer" diff --git a/examples/delegator/Cargo.toml b/examples/delegator/Cargo.toml index 9d6398c2361..1a9ab1e8a33 100644 --- a/examples/delegator/Cargo.toml +++ b/examples/delegator/Cargo.toml @@ -16,7 +16,7 @@ scale = { package = "parity-scale-codec", version = "2", default-features = fals adder = { version = "3.0.0-rc5", path = "adder", default-features = false, features = ["ink-as-dependency"] } subber = { version = "3.0.0-rc5", path = "subber", default-features = false, features = ["ink-as-dependency"] } accumulator = { version = "3.0.0-rc5", path = "accumulator", default-features = false, features = ["ink-as-dependency"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "delegator" diff --git a/examples/delegator/accumulator/Cargo.toml b/examples/delegator/accumulator/Cargo.toml index d311cc44fc9..d182837427d 100644 --- a/examples/delegator/accumulator/Cargo.toml +++ b/examples/delegator/accumulator/Cargo.toml @@ -12,7 +12,7 @@ ink_storage = { version = "3.0.0-rc5", path = "../../../crates/storage", default ink_lang = { version = "3.0.0-rc5", path = "../../../crates/lang", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "accumulator" diff --git a/examples/delegator/adder/Cargo.toml b/examples/delegator/adder/Cargo.toml index 0f7653fb04a..bcf52463d22 100644 --- a/examples/delegator/adder/Cargo.toml +++ b/examples/delegator/adder/Cargo.toml @@ -14,7 +14,7 @@ ink_lang = { version = "3.0.0-rc5", path = "../../../crates/lang", default-featu accumulator = { version = "3.0.0-rc5", path = "../accumulator", default-features = false, features = ["ink-as-dependency"] } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "adder" diff --git a/examples/delegator/subber/Cargo.toml b/examples/delegator/subber/Cargo.toml index 9bab0c8df39..039b20bfc18 100644 --- a/examples/delegator/subber/Cargo.toml +++ b/examples/delegator/subber/Cargo.toml @@ -14,7 +14,7 @@ ink_lang = { version = "3.0.0-rc5", path = "../../../crates/lang", default-featu accumulator = { version = "3.0.0-rc5", path = "../accumulator", default-features = false, features = ["ink-as-dependency"] } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "subber" diff --git a/examples/dns/Cargo.toml b/examples/dns/Cargo.toml index b993f92b64c..ef67685dcc3 100644 --- a/examples/dns/Cargo.toml +++ b/examples/dns/Cargo.toml @@ -12,7 +12,7 @@ ink_storage = { version = "3.0.0-rc5", path = "../../crates/storage", default-fe ink_lang = { version = "3.0.0-rc5", path = "../../crates/lang", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "dns" diff --git a/examples/erc1155/Cargo.toml b/examples/erc1155/Cargo.toml index e319c3e7026..96e43524573 100644 --- a/examples/erc1155/Cargo.toml +++ b/examples/erc1155/Cargo.toml @@ -13,7 +13,7 @@ ink_lang = { version = "3.0.0-rc5", path = "../../crates/lang", default-features ink_prelude = { version = "3.0.0-rc5", path = "../../crates/prelude", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "erc1155" diff --git a/examples/erc20/Cargo.toml b/examples/erc20/Cargo.toml index 6f010abaa48..c29fc7f7816 100644 --- a/examples/erc20/Cargo.toml +++ b/examples/erc20/Cargo.toml @@ -12,7 +12,7 @@ ink_storage = { version = "3.0.0-rc5", path = "../../crates/storage", default-fe ink_lang = { version = "3.0.0-rc5", path = "../../crates/lang", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "erc20" diff --git a/examples/erc721/Cargo.toml b/examples/erc721/Cargo.toml index 07e14c3a421..d81cd9b6549 100644 --- a/examples/erc721/Cargo.toml +++ b/examples/erc721/Cargo.toml @@ -12,7 +12,7 @@ ink_storage = { version = "3.0.0-rc5", path = "../../crates/storage", default-fe ink_lang = { version = "3.0.0-rc5", path = "../../crates/lang", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "erc721" diff --git a/examples/flipper/Cargo.toml b/examples/flipper/Cargo.toml index f15018b6240..7542efde211 100644 --- a/examples/flipper/Cargo.toml +++ b/examples/flipper/Cargo.toml @@ -12,7 +12,7 @@ ink_storage = { version = "3.0.0-rc5", path = "../../crates/storage", default-fe ink_lang = { version = "3.0.0-rc5", path = "../../crates/lang", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "flipper" diff --git a/examples/incrementer/Cargo.toml b/examples/incrementer/Cargo.toml index e967be9b7be..81e4c399581 100644 --- a/examples/incrementer/Cargo.toml +++ b/examples/incrementer/Cargo.toml @@ -12,7 +12,7 @@ ink_storage = { version = "3.0.0-rc5", path = "../../crates/storage", default-fe ink_lang = { version = "3.0.0-rc5", path = "../../crates/lang", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "incrementer" diff --git a/examples/multisig_plain/Cargo.toml b/examples/multisig_plain/Cargo.toml index 8097d9a090a..0a82d3a1cac 100755 --- a/examples/multisig_plain/Cargo.toml +++ b/examples/multisig_plain/Cargo.toml @@ -13,7 +13,7 @@ ink_lang = { version = "3.0.0-rc5", path = "../../crates/lang", default-features ink_prelude = { version = "3.0.0-rc5", path = "../../crates/prelude", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "multisig_plain" diff --git a/examples/rand-extension/Cargo.toml b/examples/rand-extension/Cargo.toml index edd4fa0abf9..ec755933c5a 100755 --- a/examples/rand-extension/Cargo.toml +++ b/examples/rand-extension/Cargo.toml @@ -12,7 +12,7 @@ ink_storage = { path = "../../crates/storage", default-features = false } ink_lang = { path = "../../crates/lang", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "rand_extension" diff --git a/examples/trait-erc20/Cargo.toml b/examples/trait-erc20/Cargo.toml index 2921853c4fa..bc54fb50ae8 100644 --- a/examples/trait-erc20/Cargo.toml +++ b/examples/trait-erc20/Cargo.toml @@ -12,7 +12,7 @@ ink_storage = { version = "3.0.0-rc5", path = "../../crates/storage", default-fe ink_lang = { version = "3.0.0-rc5", path = "../../crates/lang", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "trait_erc20" diff --git a/examples/trait-flipper/Cargo.toml b/examples/trait-flipper/Cargo.toml index 5d2f2046ca4..6230f782aec 100644 --- a/examples/trait-flipper/Cargo.toml +++ b/examples/trait-flipper/Cargo.toml @@ -12,7 +12,7 @@ ink_storage = { version = "3.0.0-rc5", path = "../../crates/storage", default-fe ink_lang = { version = "3.0.0-rc5", path = "../../crates/lang", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "trait_flipper" diff --git a/examples/trait-incrementer/Cargo.toml b/examples/trait-incrementer/Cargo.toml index 45a22af4155..3b6d2d39a88 100644 --- a/examples/trait-incrementer/Cargo.toml +++ b/examples/trait-incrementer/Cargo.toml @@ -12,7 +12,7 @@ ink_storage = { version = "3.0.0-rc5", path = "../../crates/storage", default-fe ink_lang = { version = "3.0.0-rc5", path = "../../crates/lang", default-features = false } scale = { package = "parity-scale-codec", version = "2", default-features = false, features = ["derive"] } -scale-info = { version = "0.6", default-features = false, features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"], optional = true } [lib] name = "trait_incrementer"