Skip to content

Releases: use-ink/cargo-contract

v4.0.0

12 Mar 09:38
v4.0.0
d4765c9
Compare
Choose a tag to compare

This cargo-contract release is compatible with Rust versions >=1.70and ink! versions >=5.0.0

_ℹ️ We have created a migration guide from ink! 4 to ink! 5. It also contains an
overview over newly added features in this release of cargo-contract and explains
e.g. the newly added contract verification in more detail.

You can view it here._

Notable changes:

  • Verifiable builds inside a docker container - #1148
  • Extrinsics extracted to separate crate - #1181
  • Fix building contracts with Rust >= 1.70: enable sign_ext Wasm opcode - #1189
  • Support for multiple versions of pallet-contracts - #1399

Added

  • Export ink_metadata types in transcode crate - #1522
  • Improved error message for Strings as CLI arguments - #1492
  • Add a user-friendly view of contract storage data in the form of a table - #1414
  • Add rpc command - #1458
  • Add schema generation and verification - #1404
  • Compare Environment types against the node - #1377
  • Detect INK_STATIC_BUFFER_SIZE env var - #1310
  • Add verify command - #1306
  • Add --binary flag for info command - #1311
  • Add --all flag for info command - #1319
  • Add contract language detection feature for info command - #1329
  • Add warning message when using incompatible contract's ink! version - #1334
  • Add workspace support -#1358
  • Add Storage Total Deposit to info command output - #1347
  • Add dynamic types support - #1399
  • Basic storage inspection command - #1395
  • Standardised verifiable builds - #1148
  • Enable Wasm sign_ext #1189
  • Expose extrinsics operations as a library - #1181
  • Suggest valid message or constructor name, when misspelled - #1162
  • Add flag -y as a shortcut for --skip-confirm - #1127
  • Add command line argument --max-memory-pages - #1128
  • Show Gas consumption by default for dry-runs - #1121

Changed

  • Print type comparison warning only on --verbose - #1483
  • Mandatory dylint-based lints - #1412
  • Add a new tabular layout for the contract storage data - #1485
  • Run wasm-opt first, remove sign_ext feature - #1416
  • Bump subxt to 0.32.0 - #1352
  • Remove check for compatible scale and scale-info versions - #1370
  • Dry-run result output improvements - 1123
  • Display build progress with --output-json, print to stderr - 1211
  • Upgrade wasm-opt to 0.113 - #1188
  • Update substrate dependencies - #1149
  • Make output format of cargo contract info consistent with other subcommands - #1120
  • set minimum supported rust-version to 1.70 - #1241

Fixed

  • Fix parsing of docker STDOUT - #1526
  • Remove docker container on build failure - #1531
  • Fix build --verifiable command #1511
  • Do not allow to execute calls on immutable contract messages - #1397
  • Improve JSON Output for Upload and Remove Commands - #1389
  • Fix for a Url to String conversion in info command - #1330
  • Configure tty output correctly - #1209
  • Set lto = "thin" for metadata build to fix linkme on macOS - #1200
  • fix(build): An error when running with --lint - #1174
  • Dry-run result output improvements - #1123
  • feat: use CARGO_ENCODED_RUSTFLAGS instead of RUSTFLAGS - #1124

v4.0.0-rc.4

08 Mar 14:48
v4.0.0-rc.4
14e93e6
Compare
Choose a tag to compare
v4.0.0-rc.4 Pre-release
Pre-release

Added

  • Export ink_metadata types in transcode crate - #1522

Fixed

  • Fix parsing of docker STDOUT - #1526
  • Remove docker container on build failure - #1531

v4.0.0-rc.3

29 Feb 13:54
v4.0.0-rc.3
bc629cc
Compare
Choose a tag to compare
v4.0.0-rc.3 Pre-release
Pre-release

Fixed

  • Fix build --verifiable command #1511

Misc

Also bumps ink crates to 5.0.0-rc.2

v4.0.0-rc.2

09 Feb 16:35
bb80fc2
Compare
Choose a tag to compare
v4.0.0-rc.2 Pre-release
Pre-release

Added

  • Improved error message for Strings as CLI arguments - #1492
  • Add a user-friendly view of contract storage data in the form of a table - #1414
  • Add rpc command - #1458

Changed

  • Print type comparison warning only on --verbose - #1483
  • Mandatory dylint-based lints - #1412
  • Add a new tabular layout for the contract storage data - #1485

v4.0.0-rc.1

01 Dec 16:07
v4.0.0-rc.1
fcaa018
Compare
Choose a tag to compare
v4.0.0-rc.1 Pre-release
Pre-release

Changed

  • Run wasm-opt first, remove sign_ext feature - #1416

v4.0.0-rc

01 Dec 11:49
v4.0.0-rc
bb6f0ce
Compare
Choose a tag to compare
v4.0.0-rc Pre-release
Pre-release

Added

  • Add schema generation and verification - #1404
  • Compare Environment types against the node - #1377
  • Detect INK_STATIC_BUFFER_SIZE env var - #1310
  • Add verify command - #1306
  • Add --binary flag for info command - #1311
  • Add --all flag for info command - #1319
  • Add contract language detection feature for info command - #1329
  • Add warning message when using incompatible contract's ink! version - #1334
  • Add workspace support -#1358
  • Add Storage Total Deposit to info command output - #1347
  • Add dynamic types support - #1399
  • Basic storage inspection command - #1395

Changed

  • Bump subxt to 0.32.0 - #1352
  • Remove check for compatible scale and scale-info versions - #1370
  • Bump ink to 5.0.0-rc - #1415

Fixed

  • Do not allow to execute calls on immutable contract messages - #1397
  • Improve JSON Output for Upload and Remove Commands - #1389
  • Fix for a Url to String conversion in info command - #1330

v3.2.0

22 Aug 09:32
88c92ba
Compare
Choose a tag to compare

[3.2.0]

This release allows building contracts with recent (> 1.69) Rust toolchains which can emit
signext Wasm instructions. An extra pass is added to wasm-opt which "lowers" signext
instructions to MVP compatible instructions. The resulting binaries can therefore be
deployed to chains with an older version of pallet-contracts which does not yet support
those instructions.

Changed

v4.0.0-alpha

27 Jul 15:27
07d2b6a
Compare
Choose a tag to compare
v4.0.0-alpha Pre-release
Pre-release

Replaces the yanked 3.1.0 due to issues with supporting both Rust versions < 1.70
and >= 1.70.

If you intend to use cargo-contract with Rust >= 1.70, and deploy to a node with a
version of pallet-contracts at least polkadot-1.0.0, then this is the release to use.

If you still want to compile with 1.69 and target an older version of pallet-contracts
then use the previous 3.0.1 release.

Notable changes:

  • Verifiable builds inside a docker container - #1148
  • Extrinsics extracted to separate crate - #1181
  • Fix building contracts with Rust >= 1.70: enable sign_ext Wasm opcode - #1189

Added

  • Standardised verifiable builds - #1148
  • Enable Wasm sign_ext #1189
  • Expose extrinsics operations as a library - #1181
  • Suggest valid message or constructor name, when misspelled - #1162
  • Add flag -y as a shortcut for --skip-confirm - #1127
  • Add command line argument --max-memory-pages - #1128
  • Show Gas consumption by default for dry-runs - #1121

Changed

  • Dry-run result output improvements - 1123
  • Display build progress with --output-json, print to stderr - 1211
  • Update subxt to 0.30.1 with new subxt-signer crate - #1236
  • Upgrade wasm-opt to 0.113 - #1188
  • Update substrate dependencies - #1149
  • Make output format of cargo contract info consistent with other subcommands - #1120
  • set minimum supported rust-version to 1.70 - #1241
  • [extrinsics] update metadata to substrate-contracts-node 0.29 - #1242

Fixed

  • Configure tty output correctly - #1209
  • Set lto = "thin" for metadata build to fix linkme on macOS - #1200
  • fix(build): An error when running with --lint - #1174
  • Dry-run result output improvements - #1123
  • feat: use CARGO_ENCODED_RUSTFLAGS instead of RUSTFLAGS - #1124

v3.0.1

18 May 15:10
c746b0d
Compare
Choose a tag to compare

Fixed

  • [contract-build] flush the remaining buffered bytes 1118

v3.0.0

17 May 12:48
141434a
Compare
Choose a tag to compare

cargo-contract v3 0-800

Added

  • Experimental support for RISC-V contracts - #1076

Changed

  • Contracts are build as bin crate now (we used cdylib before) - #1076
    • BREAKING CHANGE: Make sure that your contract is no_main by having this on top of your contract:
      • #![cfg_attr(not(feature = "std"), no_std, no_main)]
      • This will be detected and suggested for error[E0601] #1113
  • Update contracts node metadata (#1105)
    • Compatible with substrate-contracts-node 0.25.0-a2b09462c7c

Fixed

  • Fix original Wasm artifact path #1116