All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
decode
command for event, message and constructor data decoding - #481
- Fix usage of
check-only
and remove need forFromStr
impl - #499
- Fix linting support for Apple Silicon (and some other architectures) - #489
- Allow multiple args values for call and instantiate commands - #480
- Fix event decoding -
c721b1
--skip-linting
flag that allows to skip the linting step during build process - #468
- Improved error reporting during installation - #469
- Updated
cargo contract new
template dependencies to ink!3.0
- #466
We added commands to upload, instantiate and call contracts!
This allows interacting with contracts on live chains with a compatible
pallet-contracts
.
For command-line examples on how to use these commands see #79.
We are introducing a linter for ink! smart contracts in this release!
From now on cargo-contract
checks if the ink! smart contract that is
build
or check
-ed follows certain rules.
As a starting point we've only added one linting rule so far; it asserts correct
initialization of the ink_storage::Mapping
data structure.
In order for the linting to work with your smart contract, the contract has to be written in at least ink! 3.0.0-rc9. If it's older the linting will just always succeed.
- Interact with contracts: upload, instantiate and call commands - #79
- Add linting to assert correct initialization of
ink_storage::Mapping
- #431
- Upgrade
subxt
, SCALE crates, and substrate primitivesp-*
crates #451. - Updated
cargo contract new
template dependencies to ink!3.0.0-rc9
- #443
- Updated
cargo contract new
template dependencies to ink!3.0.0-rc8
- #402 - Reverted the disabled overflow checks in the
cargo contract new
template - #376 - Migrated to 2021 edition, enforcing MSRV of
1.56.1
- #360
- For contract size optimization added
workspace
section to override parentworkspace
- #378
- Updated
cargo contract new
template dependencies to ink!3.0.0-rc7
- #374 - Disabled overflow checks in the
cargo contract new
template - #372 - Use
-Clinker-plugin-lto
iflto
is enabled (reduces the size of a contract) - #358 - Deserialize metadata - #368
- Added a
--offline
flag to build contracts without network access - #356
- Update to
scale-info
1.0 and support new metadata versioning - #342 - Update
cargo contract new
template dependencies to ink!rc6
- #342
- Add option for JSON formatted output - #324
- Use new dependency resolver for template contract - #325
- Do not strip out panic messages in debug builds - #326
- Fixed a Windows issue with contract files in sub-folders - #313
- Convenient off-chain testing through
cargo contract test
- #283 - Build contracts in debug mode by default, add
--release
flag - #298 - Add
--keep-symbols
flag for better Wasm analysis capabilities - #302
- Change default optimizations pass to focus on code size - #305
- Suggest
binaryen
installation from GitHub release on outdated version - #274
- Always use library targets name for contract artifacts - #277
- Fixed
ERROR: The workspace root package should be a workspace member
when building a contract under Windows - #261
- Remove support for
--binaryen-as-dependency
- #251 - Remove support for the deprecated
cargo contract generate-metadata
command - #265 - Remove pinned
funty
dependency from "new project" template - #260
- Fix
wasm-opt --version
parsing - #248
- Improve error output for
wasm-opt
interaction - #244 - Check optimized Wasm output file exists - #243
- Detect
wasm-opt
version compatibility and improve error messages - #242 - Detect version mismatches of
parity-scale-codec
in contract and ink! dependency - #237 - Support specifying
optimization-passes
in the release profile - #231 - Support specifying
optimization-passes
on the CLI - #216 - Use
ink::test
attribute in "new project" template - #190
- Only allow new contract names beginning with an alphabetic character - #219
- Upgrade
cargo-metadata
and fix usages - #210
- no periods in new contract names - #192
- Update
cargo contract new
template dependencies forink!
rc3
- #204
- Fix linker error when building complex contracts - #199
- Implement Wasm validation for known issues/markers - #171
- Use either
binaryen-rs
dep orwasm-opt
binary - #168 - Update to scale-info 0.5 and codec 2.0 - #164
- Put build artifacts under
target/ink/
- #122
- Fix
wasm-opt
regression - #187 - Generate metadata explicitly for the contract which is build - #174
- Fix bug with empty Wasm file when using system binaryen for optimization - #179
- Suppress output on
--quiet
- #165 - Do not generate build artifacts under
target
forcheck
- #124 - update wasm-path usage name - #135
- Exit with 1 on Err #109
- Use package name instead of lib name for metadata dependency #107
- Do not prettify JSON for bundle #105
- Make
source.hash
non-optional, remove metadata-only #104 - Implement new commands
build
andcheck
+ introduce bundles (.contract files) #97 - Replace xbuild with cargo build-std #99
- Use binaryen-rs as dep instead of requiring manual wasm-opt installation #95
- Specify optional --manifest-path for build and generate-metadata #93
- Update new command template to ink! 3.0-rc2 #85
- Fix deprecation warnings #82
- Use ink 3.0.0-rc1 #82
- [template] now uses ink_env and ink_storage #81
- Update new command template to ink! 3.0 syntax #80
- Extract contract metadata to its own crate #69
- Fix ManifestPath compiler errors #73
- Upgrade cargo-xbuild and other dependencies #71
- Update subxt and async-std dependencies #66
- Generate extended contract metadata #62
- Autogenerate abi/metadata package #58
- Extract workspace to module directory #59
- Add preferred default release profile settings #55
- Add option to build with unmodified original manifest #51
- Update cargo-xbuild #54
- Fix LTO regressions in nightly toolchain #52
- First release to crates.io
- Use
subxt
release from crates.io
- Fix: fail the whole build process if the contract build fails.
- Minimize contract wasm binary size:
- Run
wasm-opt
on the contract Wasm binary. - Uses
cargo-xbuild
to build custom sysroot crates without panic string bloat. - Automatically removes the
rlib
crate type fromCargo.toml
, removing redundant metadata.
- Run
- Removes requirement for linker args specified in
.cargo/config
. - Added
--verbose
and--quiet
flags forbuild
andgenerate-metadata
commands.