diff --git a/CHANGELOG.md b/CHANGELOG.md index 06ce54ba7..e66171096 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - `--output-json` support for `call`, `instantiate` and `upload` commands - [#722](https://github.com/paritytech/cargo-contract/pull/722) +- Use new ink entrance crate - [#728](https://github.com/paritytech/cargo-contract/pull/728) ## [2.0.0-alpha.2] - 2022-09-02 diff --git a/Cargo.lock b/Cargo.lock index ba2202366..47b365166 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -648,11 +648,9 @@ dependencies = [ "escape8259", "hex", "indexmap", + "ink", "ink_env", - "ink_lang", "ink_metadata", - "ink_primitives", - "ink_storage", "itertools", "nom", "nom-supreme", @@ -1423,23 +1421,60 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "ink" +version = "4.0.0-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfc1a216f815f0da881250d7bff100f821d64a2e7ce08b6eccf01c32fbe95d5" +dependencies = [ + "derive_more", + "ink_env", + "ink_macro", + "ink_metadata", + "ink_prelude", + "ink_primitives", + "ink_storage", + "parity-scale-codec", +] + [[package]] name = "ink_allocator" -version = "4.0.0-alpha.1" +version = "4.0.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51716586362dbfbaf67cdfd1d2e683b7925daf69a437a6fe16ff20583129d7c4" +checksum = "1d19e055fdd9ef9fa0dd930d706b4b6f546487d3fcc9d45f6ba08d9d0d7102f3" dependencies = [ "cfg-if", ] +[[package]] +name = "ink_codegen" +version = "4.0.0-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a504663904857ce2ba5e8b85fb5d8001ebff40c327f4cc06b10c2f9b403e0a99" +dependencies = [ + "blake2", + "derive_more", + "either", + "heck", + "impl-serde 0.4.0", + "ink_ir", + "ink_primitives", + "itertools", + "parity-scale-codec", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "ink_engine" -version = "4.0.0-alpha.1" +version = "4.0.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eece522b2a9d73ae66b28b1ce34a27c2169b8fa35bc0f8f97995f6b9a2387dca" +checksum = "9d732c7fef97ab91625125750c73477f0e43cb89b57e57fca4741707c2769871" dependencies = [ "blake2", "derive_more", + "ink_primitives", "parity-scale-codec", "rand 0.8.5", "secp256k1 0.24.0", @@ -1449,9 +1484,9 @@ dependencies = [ [[package]] name = "ink_env" -version = "4.0.0-alpha.1" +version = "4.0.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a0fb4e9e5bdc53e6a49f1716d8d89d25b2f4e3bad6f280773fb976ca77a60ff" +checksum = "af306608913616b0b69a8293ce03423f057e3293648909ba66061f38e5794f79" dependencies = [ "arrayref", "blake2", @@ -1462,6 +1497,7 @@ dependencies = [ "ink_metadata", "ink_prelude", "ink_primitives", + "ink_storage_traits", "num-traits", "parity-scale-codec", "paste", @@ -1475,45 +1511,10 @@ dependencies = [ ] [[package]] -name = "ink_lang" -version = "4.0.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30424a655c93946c8e07473acdd5bc584f772a1a86d3d43bf528ceec03f1aa4c" -dependencies = [ - "derive_more", - "ink_env", - "ink_lang_macro", - "ink_metadata", - "ink_prelude", - "ink_primitives", - "ink_storage", - "parity-scale-codec", -] - -[[package]] -name = "ink_lang_codegen" -version = "4.0.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da7e0d02c594736048253a0784fd78316a93e186881317aa65b53a7a23c7f750" -dependencies = [ - "blake2", - "derive_more", - "either", - "heck", - "impl-serde 0.3.2", - "ink_lang_ir", - "itertools", - "parity-scale-codec", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "ink_lang_ir" -version = "4.0.0-alpha.1" +name = "ink_ir" +version = "4.0.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab84043bbde9fd0ab685e5f32be92c5223b943a1a30078f1ceae19386df2d32" +checksum = "900a7742a319a1fee36172869397e1f6fdf60adbb6a723cd819f0a1874775056" dependencies = [ "blake2", "either", @@ -1524,27 +1525,29 @@ dependencies = [ ] [[package]] -name = "ink_lang_macro" -version = "4.0.0-alpha.1" +name = "ink_macro" +version = "4.0.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63f2bc42f196e8397ec4c87763a4998b0c3ef605a4067e5b7a743812bab9864" +checksum = "9dbaaeaa0e16d757eb799c732737fae6d7261e8a9257d5678b75b92a4f8dc516" dependencies = [ - "ink_lang_codegen", - "ink_lang_ir", + "ink_codegen", + "ink_ir", "ink_primitives", "parity-scale-codec", "proc-macro2", + "quote", "syn", + "synstructure", ] [[package]] name = "ink_metadata" -version = "4.0.0-alpha.1" +version = "4.0.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0cf9e970d05710b5488ad92c19b9ab94fc6ece973db4f4c8e1e0d2ff59218cf" +checksum = "f2ae8287f3ae7a9473f1b767db3da834b6875ec7ac4c105ee360a38a5b9d9538" dependencies = [ "derive_more", - "impl-serde 0.3.2", + "impl-serde 0.4.0", "ink_prelude", "ink_primitives", "scale-info", @@ -1553,30 +1556,31 @@ dependencies = [ [[package]] name = "ink_prelude" -version = "4.0.0-alpha.1" +version = "4.0.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799f1435d7323a130e13ba599ab801b826e4ea90508c04306cf16615a4f88bba" +checksum = "1cd0137ab1536069c7ece025498bc957b02dcaa51460dd2a4402e80521124d04" dependencies = [ "cfg-if", ] [[package]] name = "ink_primitives" -version = "4.0.0-alpha.1" +version = "4.0.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a601c52715f3f30eaec72958dddebcf60258e3a4c163719c00258153debe515a" +checksum = "433de1b6ff673158ec18b18fc1c149f6e3fa17d76f830256a67292f6fb4bbccf" dependencies = [ - "cfg-if", + "derive_more", "ink_prelude", "parity-scale-codec", "scale-info", + "xxhash-rust", ] [[package]] name = "ink_storage" -version = "4.0.0-alpha.1" +version = "4.0.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c5208bd825a580c5e20e3c6befa001aa2b5e179cd548163baa1e6bac2ab4cb4" +checksum = "573363ad95f7dc14c41ed3109ab856419ba02f8c433ae6ca5f1d227494260f6a" dependencies = [ "array-init", "cfg-if", @@ -1585,21 +1589,23 @@ dependencies = [ "ink_metadata", "ink_prelude", "ink_primitives", - "ink_storage_derive", + "ink_storage_traits", "parity-scale-codec", "scale-info", ] [[package]] -name = "ink_storage_derive" -version = "4.0.0-alpha.1" +name = "ink_storage_traits" +version = "4.0.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8eb0065ceb70ed1a2afe8e5dc42ad97df9cdd09072aef944ff580ba7768c959" +checksum = "88aa73c6b8815726674ddc451afa23ec363bc0cafaef81f031e036ff3dfa9506" dependencies = [ - "proc-macro2", - "quote", + "ink_metadata", + "ink_prelude", + "ink_primitives", + "parity-scale-codec", + "scale-info", "syn", - "synstructure", ] [[package]] @@ -4100,6 +4106,12 @@ dependencies = [ "tap", ] +[[package]] +name = "xxhash-rust" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "074914ea4eec286eb8d1fd745768504f420a1f7b7919185682a4a267bed7d2e7" + [[package]] name = "yansi" version = "0.5.1" diff --git a/crates/cargo-contract/src/cmd/build/mod.rs b/crates/cargo-contract/src/cmd/build/mod.rs index f2499360a..76501a39f 100644 --- a/crates/cargo-contract/src/cmd/build/mod.rs +++ b/crates/cargo-contract/src/cmd/build/mod.rs @@ -295,7 +295,7 @@ fn exec_cargo_for_wasm_target( args.push("--offline"); } if build_mode == BuildMode::Debug { - args.push("--features=ink_env/ink-debug"); + args.push("--features=ink/ink-debug"); } else { args.push("-Zbuild-std-features=panic_immediate_abort"); } diff --git a/crates/cargo-contract/src/cmd/extrinsics/error.rs b/crates/cargo-contract/src/cmd/extrinsics/error.rs index a42f23093..7c7266d30 100644 --- a/crates/cargo-contract/src/cmd/extrinsics/error.rs +++ b/crates/cargo-contract/src/cmd/extrinsics/error.rs @@ -42,7 +42,7 @@ impl From for ErrorVariant { impl From for ErrorVariant { fn from(error: anyhow::Error) -> Self { - Self::Generic(GenericError::from_message(format!("{}", error))) + Self::Generic(GenericError::from_message(format!("{:?}", error))) } } diff --git a/crates/cargo-contract/src/crate_metadata.rs b/crates/cargo-contract/src/crate_metadata.rs index 1c7d98b09..12f10caad 100644 --- a/crates/cargo-contract/src/crate_metadata.rs +++ b/crates/cargo-contract/src/crate_metadata.rs @@ -100,16 +100,16 @@ impl CrateMetadata { .packages .iter() .find_map(|package| { - if package.name == "ink_lang" { + if package.name == "ink" { Some( Version::parse(&package.version.to_string()) - .expect("Invalid ink_lang version string"), + .expect("Invalid ink crate version string"), ) } else { None } }) - .ok_or_else(|| anyhow::anyhow!("No 'ink_lang' dependency found"))?; + .ok_or_else(|| anyhow::anyhow!("No 'ink' dependency found"))?; let ExtraMetadata { documentation, diff --git a/crates/cargo-contract/src/workspace/manifest.rs b/crates/cargo-contract/src/workspace/manifest.rs index 89bece23f..f68e06865 100644 --- a/crates/cargo-contract/src/workspace/manifest.rs +++ b/crates/cargo-contract/src/workspace/manifest.rs @@ -462,18 +462,16 @@ impl Manifest { .as_str() .ok_or_else(|| anyhow::anyhow!("[package] name should be a string"))?; - let ink_metadata = self + let ink_crate = self .toml .get("dependencies") .ok_or_else(|| anyhow::anyhow!("[dependencies] section not found"))? - .get("ink_metadata") - .ok_or_else(|| anyhow::anyhow!("ink_metadata dependency not found"))? + .get("ink") + .ok_or_else(|| anyhow::anyhow!("ink dependency not found"))? .as_table() - .ok_or_else(|| { - anyhow::anyhow!("ink_metadata dependency should be a table") - })?; + .ok_or_else(|| anyhow::anyhow!("ink dependency should be a table"))?; - metadata::generate_package(dir, contract_package_name, ink_metadata.clone())?; + metadata::generate_package(dir, contract_package_name, ink_crate.clone())?; } let updated_toml = toml::to_string(&self.toml)?; diff --git a/crates/cargo-contract/src/workspace/metadata.rs b/crates/cargo-contract/src/workspace/metadata.rs index 2919b5d5b..bb97ada80 100644 --- a/crates/cargo-contract/src/workspace/metadata.rs +++ b/crates/cargo-contract/src/workspace/metadata.rs @@ -31,7 +31,7 @@ use toml::value; pub(super) fn generate_package>( target_dir: P, contract_package_name: &str, - mut ink_metadata_dependency: value::Table, + mut ink_crate_dependency: value::Table, ) -> Result<()> { let dir = target_dir.as_ref(); tracing::debug!( @@ -59,12 +59,12 @@ pub(super) fn generate_package>( contract.insert("package".into(), contract_package_name.into()); // make ink_metadata dependency use default features - ink_metadata_dependency.remove("default-features"); - ink_metadata_dependency.remove("features"); - ink_metadata_dependency.remove("optional"); + ink_crate_dependency.remove("default-features"); + ink_crate_dependency.remove("features"); + ink_crate_dependency.remove("optional"); // add ink dependencies copied from contract manifest - deps.insert("ink_metadata".into(), ink_metadata_dependency.into()); + deps.insert("ink".into(), ink_crate_dependency.into()); let cargo_toml = toml::to_string(&cargo_toml)?; fs::write(dir.join("Cargo.toml"), cargo_toml)?; diff --git a/crates/cargo-contract/templates/new/_Cargo.toml b/crates/cargo-contract/templates/new/_Cargo.toml index e63990243..31b35079d 100644 --- a/crates/cargo-contract/templates/new/_Cargo.toml +++ b/crates/cargo-contract/templates/new/_Cargo.toml @@ -5,11 +5,7 @@ authors = ["[your_name] <[your_email]>"] edition = "2021" [dependencies] -ink_primitives = { version = "4.0.0-alpha.1", default-features = false } -ink_metadata = { version = "4.0.0-alpha.1", default-features = false, features = ["derive"], optional = true } -ink_env = { version = "4.0.0-alpha.1", default-features = false } -ink_storage = { version = "4.0.0-alpha.1", default-features = false } -ink_lang = { version = "4.0.0-alpha.1", default-features = false } +ink = { version = "4.0.0-alpha.3", default-features = false } scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } scale-info = { version = "2", default-features = false, features = ["derive"], optional = true } @@ -25,10 +21,7 @@ crate-type = [ [features] default = ["std"] std = [ - "ink_metadata/std", - "ink_env/std", - "ink_storage/std", - "ink_primitives/std", + "ink/std", "scale/std", "scale-info/std", ] diff --git a/crates/cargo-contract/templates/new/lib.rs b/crates/cargo-contract/templates/new/lib.rs index 45c4c5edd..6fd410c4f 100644 --- a/crates/cargo-contract/templates/new/lib.rs +++ b/crates/cargo-contract/templates/new/lib.rs @@ -1,7 +1,5 @@ #![cfg_attr(not(feature = "std"), no_std)] -use ink_lang as ink; - #[ink::contract] mod {{name}} { @@ -52,9 +50,6 @@ mod {{name}} { /// Imports all the definitions from the outer scope so we can use them here. use super::*; - /// Imports `ink_lang` so we can use `#[ink::test]`. - use ink_lang as ink; - /// We test if the default constructor does its job. #[ink::test] fn default_works() { diff --git a/crates/cargo-contract/templates/tools/generate-metadata/main.rs b/crates/cargo-contract/templates/tools/generate-metadata/main.rs index c703267b4..e675b457e 100644 --- a/crates/cargo-contract/templates/tools/generate-metadata/main.rs +++ b/crates/cargo-contract/templates/tools/generate-metadata/main.rs @@ -3,7 +3,7 @@ extern crate contract; extern "Rust" { // Note: The ink! metdata codegen generates an implementation for this function, // which is what we end up linking to here. - fn __ink_generate_metadata() -> ink_metadata::InkProject; + fn __ink_generate_metadata() -> ink::metadata::InkProject; } fn main() -> Result<(), std::io::Error> { diff --git a/crates/cargo-contract/tests/decode.rs b/crates/cargo-contract/tests/decode.rs index f04e81dc7..848da7b8f 100644 --- a/crates/cargo-contract/tests/decode.rs +++ b/crates/cargo-contract/tests/decode.rs @@ -29,8 +29,6 @@ fn decode_works() { let contract = r#" #![cfg_attr(not(feature = "std"), no_std)] - use ink_lang as ink; - #[ink::contract] mod switcher { #[ink(event)] diff --git a/crates/transcode/Cargo.toml b/crates/transcode/Cargo.toml index 5a9a811b7..ef3b3ad29 100644 --- a/crates/transcode/Cargo.toml +++ b/crates/transcode/Cargo.toml @@ -23,8 +23,8 @@ env_logger = "0.9.1" escape8259 = "0.5.2" hex = "0.4.3" indexmap = "1.9.1" -ink_env = "4.0.0-alpha.1" -ink_metadata = { version = "4.0.0-alpha.1", features = ["derive"] } +ink_env = "4.0.0-alpha.3" +ink_metadata = { package = "ink_metadata", version = "4.0.0-alpha.3" } itertools = "0.10.4" tracing = "0.1.36" nom = "7.1.1" @@ -38,9 +38,7 @@ sp-runtime = "6.0.0" [dev-dependencies] assert_matches = "1.5.0" -ink_lang = "4.0.0-alpha.1" -ink_primitives = "4.0.0-alpha.1" -ink_storage = "4.0.0-alpha.1" +ink = "4.0.0-alpha.3" [features] # This `std` feature is required for testing using an inline contract's metadata, because `ink!` annotates the metadata diff --git a/crates/transcode/src/lib.rs b/crates/transcode/src/lib.rs index faa0b6a97..b0b9626c2 100644 --- a/crates/transcode/src/lib.rs +++ b/crates/transcode/src/lib.rs @@ -403,7 +403,6 @@ mod tests { use std::str::FromStr; use crate::scon::Hex; - use ink_lang as ink; #[allow(clippy::extra_unused_lifetimes)] #[ink::contract] @@ -475,9 +474,9 @@ mod tests { } } - fn generate_metadata() -> ink_metadata::InkProject { + fn generate_metadata() -> InkProject { extern "Rust" { - fn __ink_generate_metadata() -> ink_metadata::InkProject; + fn __ink_generate_metadata() -> InkProject; } unsafe { __ink_generate_metadata() }