Releases: dfinity/sdk
0.20.2-beta.0
fix: dfx canister delete
fails
dfx canister delete
occasionally fails because it attempts to withdraw too many cycles from the canister before it is deleted.
Usually, dfx
tries again with a larger margin of cycles, but sometimes this gets stuck.
It is now possible to use --initial-margin
to manually supply a margin in case the automatic margin does not work.
perf: improve sync command performance
Improves sync
(eg. dfx deploy
, icx-asset sync
) performance by parallelization:
- Make asset properties query faster by parallelization, significant improvement for canisters that have many assets
- Make chunk creation process faster, by increasing parallelization 4=>25, significant improvement when deploying lots of small assets
icx-asset
: add support for log levels, defaulting to info
PocketIC support
Passing --pocketic
to dfx start
now starts a PocketIC server instead of the replica. PocketIC is lighter-weight than the replica and execution environment internals can be manipulated by REST commands. For more information, see the PocketIC readme.
feat: subaccount can be derived from principal in dfx ledger account-id
feat: dfx info candid-ui-url
dfx info candid-ui-url
displays the URL to the Candid UI canister for an explicitly specified --network <network name>
(or local
by default).
chore: Improve help text of dfx identity new
to include which characters are valid in identity names
fix: Capitalization of "Wasm" in docs and messages
The output of dfx canister status
has been also changed to use consistent capitalization of words.
fix!(frontend-canister): include .well-known
directory by default for asset upload
When uploading assets to an asset canister, dfx
by default excludes directories and files with names that start with .
.
dfx
will start including folders with the name .well-known
by default.
It is possible to override this in .ic-assets.json
like this:
{
"match": ".well-known",
"ignore": true
}
fix: Transferring funds too early in dfx ledger create-canister
with --next-to
When creating a canister with dfx ledger create-canister --next-to
on a canister that does not exist (e.g., 2vxsx-fae), then the funds are first transferred away from the users account, but the call then fails to create the new canister, and the funds are not returned to the user's account.
Dependencies
Updated to agent-rs 0.35.0
Replica
Updated replica to elected commit ec35ebd252d4ffb151d2cfceba3a86c4fb87c6d6.
This incorporates the following executed proposals:
0.20.1
feat: reformatted error output
Rather than increasing indentation, dfx now aligns the error causes with a "Caused by: " prefix.
Also changed error types to report error causes as causes, rather than embedding their error cause in the error text.
Before:
Error: Failed while trying to deploy canisters.
Caused by: Failed while trying to deploy canisters.
Failed to build all canisters.
Failed while trying to build all canisters.
The build step failed for canister 'bw4dl-smaaa-aaaaa-qaacq-cai' (wasminst_backend) with an embedded error: Failed to build Motoko canister 'wasminst_backend'.: Failed to compile Motoko.: Failed to run 'moc'.: The command '"/Users/ericswanson/.cache/dfinity/versions/0.19.0/moc" ... params ... failed with exit status 'exit status: 1'.
Stdout:
Stderr:
/Users/ericswanson/w/wasminst/src/wasminst_backend/main2.mo: No such file or directory
After:
Error: Failed while trying to deploy canisters.
Caused by: Failed to build all canisters.
Caused by: Failed while trying to build all canisters.
Caused by: The build step failed for canister 'bw4dl-smaaa-aaaaa-qaacq-cai' (wasminst_backend)
Caused by: Failed to build Motoko canister 'wasminst_backend'.
Caused by: Failed to compile Motoko.
Caused by: Failed to run 'moc'.
Caused by: The command '"/Users/ericswanson/.cache/dfinity/versions/0.20.0/moc" ... params ... failed with exit status 'exit status: 1'.
Stdout:
Stderr:
/Users/ericswanson/w/wasminst/src/wasminst_backend/main2.mo: No such file or directory
fix: "Failed to decrypt PEM file" errors messages will now include the cause
feat: Wasm memory soft-limit
Adds support for the wasm_memory_limit
canister setting, which limits the canister's heap during most calls but does not affect queries. As with other canister settings, it can be set in dfx canister create
or dfx canister update-settings
via the --wasm-memory-limit
flag, as well as in dfx.json
under canisters[].initialization_values.wasm_memory_limit
.
feat: extensions can define a canister type
Please see extension-defined-canister-types for details.
feat: init_arg_file in dfx.json
Introduces support for the init_arg_file
field in dfx.json
, providing an alternative method to specify initialization arguments.
This field accepts a relative path, from the directory containing the dfx.json
file.
Note
- Only one of
init_arg
andinit_arg_file
can be defined at a time. - If
--argument
or--argument-file
are set, the argument from the command line takes precedence over the one in dfx.json.
fix: dfx new failure when node is available but npm is not
dfx new
could fail with "Failed to scaffold frontend code" if node was installed but npm was not installed.
Dependencies
Cycles wallet
Updated cycles wallet to a gzipped version of 20240410
release:
- Module hash:
7745d3114e3e5fbafe8a7150a0a8c15a5b8dc9257f294d5ced67d41be76065bc
, in gzipped form:664df1045e093084f4ebafedd3a793cc3b3be0a7ef1b245d8d3defe20b33057c
- dfinity/cycles-wallet@b013764
Replica
Updated replica to elected commit 5e285dcaf77db014ac85d6f96ff392fe461945f5.
This incorporates the following executed proposals:
Full Changelog: 0.9.1...0.20.1
0.20.0
0.20.0
fix: set CANISTER_CANDID_PATH_<canister name>
properly for remote canisters
In the remote canister declaration it is possible to set a candid file to use when the canister is remote on a specific network.
dfx
now correctly sets the CANISTER_CANDID_PATH_<canister name>
environment variable during the build process on remote networks if the file exists.
feat: display schema for dfx metadata json
dfx schema --for dfx-metadata
to display JSON schema of the "dfx" metadata.
feat: add tech_stack to the Canister Metadata Standard
The standardized dfx
metadata is extended with another object: tech_stack
.
Please check tech-stack for more details.
chore: updated management canister .did file
feat: added dfx completion
command
This command generates shell completion scripts for bash
, elvish
, fish
, zsh
, or PowerShell.
Describing how to install shell completion scripts is beyond the scope of this document.
Here are two commands that would enable command completion in the current shell:
In zsh:
source <(dfx completion zsh)
In bash:
source <(dfx completion)
fix: dfx no longer always creates .dfx directory if dfx.json is present
Previously, dfx
would always create a .dfx
directory in the project root if dfx.json
was present.
Now, it only does so if the command accesses the .dfx directory in some way.
fix: dfx only loads dfx.json for commands that need it
For example, this will work now:
echo garbage >dfx.json && dfx identity get-principal
Dependencies
Replica
Updated replica to elected commit 02dcaf3ccdfe46bd959d683d43c5513d37a1420d.
This incorporates the following executed proposals:
0.20.1-beta.0
0.20.1
feat: reformatted error output
Rather than increasing indentation, dfx now aligns the error causes with a "Caused by: " prefix.
Also changed error types to report error causes as causes, rather than embedding their error cause in the error text.
Before:
Error: Failed while trying to deploy canisters.
Caused by: Failed while trying to deploy canisters.
Failed to build all canisters.
Failed while trying to build all canisters.
The build step failed for canister 'bw4dl-smaaa-aaaaa-qaacq-cai' (wasminst_backend) with an embedded error: Failed to build Motoko canister 'wasminst_backend'.: Failed to compile Motoko.: Failed to run 'moc'.: The command '"/Users/ericswanson/.cache/dfinity/versions/0.19.0/moc" ... params ... failed with exit status 'exit status: 1'.
Stdout:
Stderr:
/Users/ericswanson/w/wasminst/src/wasminst_backend/main2.mo: No such file or directory
After:
Error: Failed while trying to deploy canisters.
Caused by: Failed to build all canisters.
Caused by: Failed while trying to build all canisters.
Caused by: The build step failed for canister 'bw4dl-smaaa-aaaaa-qaacq-cai' (wasminst_backend)
Caused by: Failed to build Motoko canister 'wasminst_backend'.
Caused by: Failed to compile Motoko.
Caused by: Failed to run 'moc'.
Caused by: The command '"/Users/ericswanson/.cache/dfinity/versions/0.20.0/moc" ... params ... failed with exit status 'exit status: 1'.
Stdout:
Stderr:
/Users/ericswanson/w/wasminst/src/wasminst_backend/main2.mo: No such file or directory
fix: "Failed to decrypt PEM file" errors messages will now include the cause
feat: WASM memory soft-limit
Adds support for the wasm_memory_limit
canister setting, which limits the canister's heap during most calls but does not affect queries. As with other canister settings, it can be set in dfx canister create
or dfx canister update-settings
via the --wasm-memory-limit
flag, as well as in dfx.json
under canisters[].initialization_values.wasm_memory_limit
.
feat: extensions can define a canister type
Please see extension-defined-canister-types for details.
feat: init_arg_file in dfx.json
Introduces support for the init_arg_file
field in dfx.json
, providing an alternative method to specify initialization arguments.
This field accepts a relative path, from the directory containing the dfx.json
file.
Note
- Only one of
init_arg
andinit_arg_file
can be defined at a time. - If
--argument
or--argument-file
are set, the argument from the command line takes precedence over the one in dfx.json.
fix: dfx new failure when node is available but npm is not
dfx new
could fail with "Failed to scaffold frontend code" if node was installed but npm was not installed.
Dependencies
Cycles wallet
Updated cycles wallet to a gzipped version of 20240410
release:
- Module hash:
7745d3114e3e5fbafe8a7150a0a8c15a5b8dc9257f294d5ced67d41be76065bc
, in gzipped form:664df1045e093084f4ebafedd3a793cc3b3be0a7ef1b245d8d3defe20b33057c
- dfinity/cycles-wallet@b013764
Replica
Updated replica to elected commit 5e285dcaf77db014ac85d6f96ff392fe461945f5.
This incorporates the following executed proposals:
0.20.0-icsystemtest.1: feat: init_arg_file in dfx.json (#3721)
* Add support in dfx.json. (WIP) * Trim the string read from the arg file. * Update dfx-json-schema.json file. * Get the absolute path of 'init_arg_file', and update changelog. * Fix cargo format. * simplify a bit * comments * improve the warning message * changelog * fmt --------- Co-authored-by: Vincent Zhang <[email protected]> Co-authored-by: Linwei Shang <[email protected]>
0.20.0-icsystemtest.0: feat: init_arg_file in dfx.json (#3721)
* Add support in dfx.json. (WIP) * Trim the string read from the arg file. * Update dfx-json-schema.json file. * Get the absolute path of 'init_arg_file', and update changelog. * Fix cargo format. * simplify a bit * comments * improve the warning message * changelog * fmt --------- Co-authored-by: Vincent Zhang <[email protected]> Co-authored-by: Linwei Shang <[email protected]>
0.20.0-extensioncanistertype.0: chore(deps): bump rustls from 0.21.10 to 0.21.11 (#3720)
Bumps [rustls](https://github.com/rustls/rustls) from 0.21.10 to 0.21.11. - [Release notes](https://github.com/rustls/rustls/releases) - [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustls/rustls/compare/v/0.21.10...v/0.21.11) --- updated-dependencies: - dependency-name: rustls dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0.20.0-beta.0
fix: set CANISTER_CANDID_PATH_<canister name>
properly for remote canisters
In the remote canister declaration it is possible to set a candid file to use when the canister is remote on a specific network.
dfx
now correctly sets the CANISTER_CANDID_PATH_<canister name>
environment variable during the build process on remote networks if the file exists.
feat: display schema for dfx metadata json
dfx schema --for dfx-metadata
to display JSON schema of the "dfx" metadata.
feat: add tech_stack to the Canister Metadata Standard
The standardized dfx
metadata is extended with another object: tech_stack
.
Please check tech-stack for more details.
chore: updated management canister .did file
feat: added dfx completion
command
This command generates shell completion scripts for bash
, elvish
, fish
, zsh
, or PowerShell.
Describing how to install shell completion scripts is beyond the scope of this document.
Here are two commands that would enable command completion in the current shell:
In zsh:
source <(dfx completion zsh)
In bash:
source <(dfx completion)
fix: dfx no longer always creates .dfx directory if dfx.json is present
Previously, dfx
would always create a .dfx
directory in the project root if dfx.json
was present.
Now, it only does so if the command accesses the .dfx directory in some way.
fix: dfx only loads dfx.json for commands that need it
For example, this will work now:
echo garbage >dfx.json && dfx identity get-principal
Dependencies
Replica
Updated replica to elected commit 02dcaf3ccdfe46bd959d683d43c5513d37a1420d.
This incorporates the following executed proposals:
0.19.0
fix: call management canister Bitcoin query API without replica-signed query
dfx canister call --query
defaults to use "Replica-signed query" feature.
It doesn't work with bitcoin query calls to the management canister because the Boundary Nodes cannot route the read_state
call.
Only for these particular queries, dfx
will make the query calls without checking the replica signatures.
If the response reliability is a concern, you can make update calls to the secure alternatives.
feat(beta): enable cycles ledger support
If the environment variable DFX_CYCLES_LEDGER_SUPPORT_ENABLE
is set and no cycles wallet is configured, then dfx will try to use the cycles ledger to perform any operation that the cycles wallet usually is used for.
The following commands/options have been unhidden:
dfx cycles
--from-subaccount
fordfx deploy
,dfx canister create
,dfx canister deposit-cycles
to determine which cycles ledger subaccount the used cycles should be used from--created-at-time
fordfx deploy
,dfx create canister
,dfx canister deposit-cycles
to control transaction deduplication on the cycles ledger--to-subaccount
fordfx canister delete
to control into which subaccount cycles are withdrawn before the canister is deleted
The cycles ledger will not be supported by default until the cycles ledger canister is under NNS control.
feat: dfx canister call ... --output json
This is the same as dfx canister call ... | idl2json
, for convenience.
See also: https://github.com/dfinity/idl2json
fix: Output of dfx ping is now valid JSON
Added commas in between fields, and newlines to improve formatting.
fix: canister status output to be grep compatible
dfx canister status
now outputs to stdout
, rather than stderr
, so that its output is grep
compatible.
fix: fetching canister logs to be grep & tail compatible
dfx canister logs
now outputs to stdout, rather than stderr, so that its output is grep
and tail
compatible.
fix: fetching canister logs
The management canister method fetch_canister_logs
can be called only as a query, not as an update call. Therefore, dfx canister logs <canister_id>
now uses a query call for this purpose.
dfx wallet set-name
now actually sets the name of the wallet
feat: hyphenated project names
DFX no longer forbids hyphens in project names. Anywhere they appear as the name of a variable, e.g. environment variables or generated JS variables, they will be replaced with underscores.
fix: .ic-assets.json configuration entries no longer overwrite the default for allow_raw_access
Previously, any configuration element in .ic-assets.json functioned as if a setting of
"allow_raw_access": true
were present in the json object.
For example, given the following configuration, all files would be configured
with allow_raw_access
set to true
, as if the second entry specified
"allow_raw_access": true
(which is the default), even though it does not.
[
{
"match": "**/*",
"allow_raw_access": false
},
{
"match": "**/*",
"headers": {
"X-Anything": "Something"
}
}
]
Now, given the same configuration, all files would be configured with allow_raw_access
set to false, as expected.
Note that the default value of allow_raw_access
is still true
.
fix: removed version switching logic
Removed the logic for calling a different version of dfx based on DFX_VERSION or the dfx
field in
dfx.json. This is now performed by dfxvm.
feat: --always-assist flag for dfx canister call/install/sign and dfx deploy
When all the arguments are optional, dfx automatically provides a null
value when no arguments are provided.
--always-assist
flag enables the candid assist feature for optional arguments, instead of providing a default null
value.
fix(deps): the second pull forget to set wasm_hash_download in pulled.json
When the dependency has been in the cache, dfx deps pull
forgot to set correct wasm_hash_download
in pulled.json
.
It caused the following init/deploy
commands to fail.
Dependencies
Replica
Updated replica to elected commit 425a0012aeb40008e2e72d913318bc9dbdf3b4f4.
This incorporates the following executed proposals:
Bitcoin canister
Downgraded Bitcoin canister to release/2023-10-13
Motoko
Updated Motoko to 0.11.1