- Use smart contract v1 cost configuration when simulating locally (the reduce execution cost introduced as part of Concordium Protocol Version 7)
- Added a
--tag <RELEASE-TAG>
option tocargo concordium init
to allow specifying the release tag of the templates. Defaults toreleases/templates/latest
. - When running integration tests the module output path is now exposed to the
tests via the
CARGO_CONCORDIUM_TEST_MODULE_OUTPUT_PATH
environment variable. - Add the default build output (
--out <PATH>
) pathconcordium-out/module.wasm.v1
. - Change
--out
flag being optional when using the--verifiable
flag. - Change
--verifiable
flag to use the default output path if the--out
flag is not set. - Embed the schema in the Wasm module by default and can be disabled using the
--no-schema-embed
flag. The--schema-embed
flag (short-e
) is now deprecated. - Fixed long error message when the
wasm32-unknown-unknown
target is not installed.
- Bump minimum Rust version to 1.73.
- Support state-related host functions when running unit-tests with
cargo concordium test
. Each test-case is provided with an empty temporary key-value store. - Support interrupt events to be introduced in protocol version 7.
-
Fix a bug so that a non-zero status code is now returned by
cargo concordium test
if tests fail. -
Add support for running contracts while collecting debug output. Contracts can be built with debugging support enabled by using the
--allow-debug
flag that is supported both bycargo concordium build
andcargo concordium test
.When this flag is enabled in tests debug output is emitted at the end of the test. Additionally, when running tests
cargo-concordium
will setCARGO_CONCORDIUM_TEST_ALLOW_DEBUG
environment variable for all the tests.
- Support crate names with uppercase letters.
- Warn about non-verifiable builds.
- Fix a bug where a missing target directory would fail if a reproducible build was requested without a schema.
- Make sure to ignore the target directory also on Windows.
- Do not include file modification times in the tar archive produced as part of a verifiable build.
- Support verifiable/reproducible builds.
- Add support for
--manifest-path
flag. - Add
schema-template
command to print the template of a given schema to a file or the console. - Add
--schema-template-out
option tocargo concordium build
to optionally output the schema template to a file or the console. - Make
cargo-concordium
compatible with protocol 6 semantics on the chain. In particular cargo-concordium now does validation according to protocol 6 rules, allowing sign extension instructions, disallowing globals in initializers of data and element segments, and allows host functions for checking account signatures, and retrieving account keys.
- Make
cargo concordium test
compile your smart contract module and run integration on it, if available.- This makes it easier to use the
concordium-smart-contract-testing
library for integration tests, without the risk of running the tests against a stale Wasm module. - The
test
command is now essentially the same ascargo concordium build
followed by the previouscargo concordium test
andcargo test --test '*'
. This behaviour ensures that unit tests run in Wasm and the integration tests run with the native target, but using the compiled Wasm module. - All the build options from
cargo concordium build
now also exist forcargo concordium test
.- This allows you to run tests against the exact module you will also deploy on the chain.
- This makes it easier to use the
- When JSON parameters included in
cargo concordium run
cannot be serialized, the error returned now includes trace information, which makes it easier to identify the cause of the error.
- Add padding to base64 output to work around parsers that require it.
- Non-existing directories in paths provided to the following arguments for when running
cargo concordium build
will now be created instead of causing an error:--out
,--schema-out
,--schema-json-out
,--schema-base64-out
. Likewise for the--out-bin
and--out-json
arguments provided tocargo concordium run init
andcargo concordium run update
. - Fix a bug where
cargo concordium
was unable to determine the smart contract package if the package was part of a Cargo workspace.
- Support calling
cargo concordium build
andcargo concordium test
from a project subdirectory. - Fix a bug in schema parsing in
cargo concordium run
commands. Schemas with negative integers did not allow for supplying negative integers.
- Add
schema-base64
command to convert a given schema to base64 format. - Add
--schema-base64-out
option tocargo concordium build
to optionally output the schema in base64 format.
- Add
schema-json
command to get schemas for individual entrypoints from the binary schema file. - Add
--schema-json-out
option tocargo concordium build
to optionally output the schema in JSON format.
- Add support for sampling random numbers for randomized testing with
cargo concordium test
. - Add support for providing a seed to initialize a random generator to
cargo-concordium
. The generator can be used for randomized testing. Command format:cargo concordium test --seed 1234567890
. The provided seed value is au64
number. If the seed is not provided, a random one will be sampled.
cargo-concordium
now checks that the user input from the output flags consists of a path and a file name.- Add support for V3 schemas that include support for event schemas. This enables
cargo-concordium
to build and interact with smart contracts usingconcordium-std
version 4.1.Cargo-concordium
now always generates V3 schemas.
- Support building and testing contracts using new protocol 5 features; upgradability and chain queries.
- Support for relaxed smart contract resource restrictions in
cargo concordium run
. cargo concordium build
now checks contracts with respect to protocol version 5 semantics.
- Introduce the
init
subcommand that can initialize a new project and use contract templates to set up an initial project.
- Add support for V2 schemas that include support for error values. This enables
cargo-concordium
to build and interact with smart contracts usingconcordium-std
version 4.
- Support schema types for LEB128 and byte arrays.
- Support schema modules which includes version information.
- Add support for v2 schemas.
- Use v2 schemas when building v1 contracts.
- Add support for V1 contract builds, testing, and execution.
- The output of
cargo concordium build
is now versioned. - Support contracts written with Rust edition 2021.
- Clarify that energy units used by
cargo-concordium
are "interpreter energy" and not the same as NRG. - Allow the user to only specify the necessary fields in the JSON context files
- Also allow the
--context
parameter to be omitted, for when no context is needed
- Also allow the
- Correct and improve error message for incorrect array length during contract simulation: show expected and actual length rather than mislabelled actual length.