From ef7f7570b31e45678aee23055218517f3c10b049 Mon Sep 17 00:00:00 2001 From: gregorydemay <112856886+gregorydemay@users.noreply.github.com> Date: Tue, 8 Oct 2024 21:05:37 +0200 Subject: [PATCH] chore: update `ic-cdk` to 0.16.0 (#1868) Relevant breaking changes from [`ic-cdk`](https://github.com/dfinity/cdk-rs/blob/main/src/ic-cdk/CHANGELOG.md): 1. [[0.15.0]]([0.15.0]): 1. BREAKING: Stable Memory always use 64-bit addresses and stable64_* system API. (dfinity/cdk-rs#498) 2. BREAKING: Add log_visibility to the management canister API types: (dfinity/cdk-rs#497) - CanisterSettings - DefiniteCanisterSettings. 3. [[0.13.3]](https://github.com/dfinity/cdk-rs/blob/main/src/ic-cdk/CHANGELOG.md#0133---2024-05-10-yanked) BREAKING: Add wasm_memory_limit to the management canister API types: (dfinity/cdk-rs#483) - CanisterSettings - DefiniteCanisterSettings. --------- Co-authored-by: IDX GitHub Automation --- Cargo.Bazel.Fuzzing.json.lock | 141 ++++++++++++++++- Cargo.Bazel.Fuzzing.toml.lock | 29 +++- Cargo.Bazel.json.lock | 141 ++++++++++++++++- Cargo.Bazel.toml.lock | 29 +++- Cargo.lock | 129 +++++++++------- Cargo.toml | 2 +- bazel/external_crates.bzl | 2 +- packages/pocket-ic/Cargo.toml | 2 +- packages/pocket-ic/src/nonblocking.rs | 5 +- rs/bitcoin/ckbtc/kyt/src/main.rs | 2 +- rs/bitcoin/ckbtc/minter/ckbtc_minter.did | 9 +- rs/bitcoin/ckbtc/minter/src/metrics.rs | 2 +- rs/ethereum/cketh/minter/cketh_minter.did | 7 + rs/ethereum/cketh/minter/src/main.rs | 2 +- .../ledger_suite_orchestrator.did | 7 + .../ledger-suite-orchestrator/src/main.rs | 2 +- .../test_canister/src/main.rs | 10 +- rs/execution_environment/tests/backtraces.rs | 2 +- rs/ledger_suite/icp/index/src/main.rs | 4 +- rs/ledger_suite/icrc1/archive/src/main.rs | 4 +- .../icrc1/benchmark/generator/src/lib.rs | 2 +- rs/ledger_suite/icrc1/index-ng/src/main.rs | 4 +- rs/ledger_suite/icrc1/index/src/lib.rs | 4 +- rs/ledger_suite/icrc1/ledger/src/main.rs | 4 +- rs/nns/sns-wasm/src/canister_stable_memory.rs | 67 ++------- rs/nns/sns-wasm/src/stable_memory.rs | 28 ++-- rs/rosetta-api/tvl/src/metrics.rs | 4 +- .../stable_memory_integrity/bin/main.rs | 6 +- .../stable_memory_integrity/src/lib.rs | 33 +--- .../tests/stable_memory_integrity.rs | 142 +++--------------- .../canisters/src/cloner_canister.rs | 5 +- rs/tests/src/execution/canister_lifecycle.rs | 4 +- 32 files changed, 516 insertions(+), 318 deletions(-) diff --git a/Cargo.Bazel.Fuzzing.json.lock b/Cargo.Bazel.Fuzzing.json.lock index 3e42189b3ef7..d866db70edf3 100644 --- a/Cargo.Bazel.Fuzzing.json.lock +++ b/Cargo.Bazel.Fuzzing.json.lock @@ -1,5 +1,5 @@ { - "checksum": "f625f9be8687fe74a5490e321e5f113cb53201d5f45a455999b7c7e5fc773ddb", + "checksum": "22fe4918cb241a7ef7ed17fe15f3422652dba98910a13f9ef4f8f3ec04a4d639", "crates": { "abnf 0.12.0": { "name": "abnf", @@ -18016,7 +18016,7 @@ "target": "ic_cbor" }, { - "id": "ic-cdk 0.13.5", + "id": "ic-cdk 0.16.0", "target": "ic_cdk" }, { @@ -29211,6 +29211,74 @@ ], "license_file": "LICENSE" }, + "ic-cdk 0.16.0": { + "name": "ic-cdk", + "version": "0.16.0", + "package_url": "https://github.com/dfinity/cdk-rs", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/ic-cdk/0.16.0/download", + "sha256": "dd8ecacd682fa05a985253592963306cb9799622d7b1cce4b1edb89c6ec85be1" + } + }, + "targets": [ + { + "Library": { + "crate_name": "ic_cdk", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": false, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "ic_cdk", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "candid 0.10.6", + "target": "candid" + }, + { + "id": "ic0 0.23.0", + "target": "ic0" + }, + { + "id": "serde 1.0.203", + "target": "serde" + }, + { + "id": "serde_bytes 0.11.15", + "target": "serde_bytes" + } + ], + "selects": {} + }, + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "ic-cdk-macros 0.16.0", + "target": "ic_cdk_macros" + } + ], + "selects": {} + }, + "version": "0.16.0" + }, + "license": "Apache-2.0", + "license_ids": [ + "Apache-2.0" + ], + "license_file": "LICENSE" + }, "ic-cdk-macros 0.8.4": { "name": "ic-cdk-macros", "version": "0.8.4", @@ -29479,6 +29547,73 @@ ], "license_file": "LICENSE" }, + "ic-cdk-macros 0.16.0": { + "name": "ic-cdk-macros", + "version": "0.16.0", + "package_url": "https://github.com/dfinity/cdk-rs", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/ic-cdk-macros/0.16.0/download", + "sha256": "0d4d857135deef20cc7ea8f3869a30cd9cfeb1392b3a81043790b2cd82adc3e0" + } + }, + "targets": [ + { + "ProcMacro": { + "crate_name": "ic_cdk_macros", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": false, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "ic_cdk_macros", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "candid 0.10.6", + "target": "candid" + }, + { + "id": "proc-macro2 1.0.85", + "target": "proc_macro2" + }, + { + "id": "quote 1.0.35", + "target": "quote" + }, + { + "id": "serde 1.0.203", + "target": "serde" + }, + { + "id": "serde_tokenstream 0.2.1", + "target": "serde_tokenstream" + }, + { + "id": "syn 2.0.66", + "target": "syn" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.16.0" + }, + "license": "Apache-2.0", + "license_ids": [ + "Apache-2.0" + ], + "license_file": "LICENSE" + }, "ic-cdk-timers 0.7.0": { "name": "ic-cdk-timers", "version": "0.7.0", @@ -79190,7 +79325,7 @@ "ic-canister-log 0.2.0", "ic-canister-sig-creation 1.0.1", "ic-cbor 2.6.0", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-cdk-timers 0.7.0", "ic-certificate-verification 2.6.0", diff --git a/Cargo.Bazel.Fuzzing.toml.lock b/Cargo.Bazel.Fuzzing.toml.lock index 4b3851ba91e4..244261d4786a 100644 --- a/Cargo.Bazel.Fuzzing.toml.lock +++ b/Cargo.Bazel.Fuzzing.toml.lock @@ -3119,7 +3119,7 @@ dependencies = [ "ic-canister-log", "ic-canister-sig-creation", "ic-cbor", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-cdk-timers", "ic-certificate-verification", @@ -5112,6 +5112,19 @@ dependencies = [ "serde_bytes", ] +[[package]] +name = "ic-cdk" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8ecacd682fa05a985253592963306cb9799622d7b1cce4b1edb89c6ec85be1" +dependencies = [ + "candid", + "ic-cdk-macros 0.16.0", + "ic0 0.23.0", + "serde", + "serde_bytes", +] + [[package]] name = "ic-cdk-macros" version = "0.8.4" @@ -5168,6 +5181,20 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "ic-cdk-macros" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d4d857135deef20cc7ea8f3869a30cd9cfeb1392b3a81043790b2cd82adc3e0" +dependencies = [ + "candid", + "proc-macro2", + "quote", + "serde", + "serde_tokenstream 0.2.1", + "syn 2.0.66", +] + [[package]] name = "ic-cdk-timers" version = "0.7.0" diff --git a/Cargo.Bazel.json.lock b/Cargo.Bazel.json.lock index 9f4b268ca4c2..31cd13995a50 100644 --- a/Cargo.Bazel.json.lock +++ b/Cargo.Bazel.json.lock @@ -1,5 +1,5 @@ { - "checksum": "0b3ea17c968956a9bf172b31f0d4f15bc9347326fecb83b91781451bc74f5308", + "checksum": "bfd99bc1fb1610640d53b82762827388cd6a7b8960dd19d804e6fb0e1aaf034d", "crates": { "abnf 0.12.0": { "name": "abnf", @@ -17817,7 +17817,7 @@ "target": "ic_cbor" }, { - "id": "ic-cdk 0.13.5", + "id": "ic-cdk 0.16.0", "target": "ic_cdk" }, { @@ -29036,6 +29036,74 @@ ], "license_file": "LICENSE" }, + "ic-cdk 0.16.0": { + "name": "ic-cdk", + "version": "0.16.0", + "package_url": "https://github.com/dfinity/cdk-rs", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/ic-cdk/0.16.0/download", + "sha256": "dd8ecacd682fa05a985253592963306cb9799622d7b1cce4b1edb89c6ec85be1" + } + }, + "targets": [ + { + "Library": { + "crate_name": "ic_cdk", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": false, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "ic_cdk", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "candid 0.10.6", + "target": "candid" + }, + { + "id": "ic0 0.23.0", + "target": "ic0" + }, + { + "id": "serde 1.0.203", + "target": "serde" + }, + { + "id": "serde_bytes 0.11.15", + "target": "serde_bytes" + } + ], + "selects": {} + }, + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "ic-cdk-macros 0.16.0", + "target": "ic_cdk_macros" + } + ], + "selects": {} + }, + "version": "0.16.0" + }, + "license": "Apache-2.0", + "license_ids": [ + "Apache-2.0" + ], + "license_file": "LICENSE" + }, "ic-cdk-macros 0.8.4": { "name": "ic-cdk-macros", "version": "0.8.4", @@ -29304,6 +29372,73 @@ ], "license_file": "LICENSE" }, + "ic-cdk-macros 0.16.0": { + "name": "ic-cdk-macros", + "version": "0.16.0", + "package_url": "https://github.com/dfinity/cdk-rs", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/ic-cdk-macros/0.16.0/download", + "sha256": "0d4d857135deef20cc7ea8f3869a30cd9cfeb1392b3a81043790b2cd82adc3e0" + } + }, + "targets": [ + { + "ProcMacro": { + "crate_name": "ic_cdk_macros", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": false, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "ic_cdk_macros", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "candid 0.10.6", + "target": "candid" + }, + { + "id": "proc-macro2 1.0.85", + "target": "proc_macro2" + }, + { + "id": "quote 1.0.35", + "target": "quote" + }, + { + "id": "serde 1.0.203", + "target": "serde" + }, + { + "id": "serde_tokenstream 0.2.1", + "target": "serde_tokenstream" + }, + { + "id": "syn 2.0.66", + "target": "syn" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.16.0" + }, + "license": "Apache-2.0", + "license_ids": [ + "Apache-2.0" + ], + "license_file": "LICENSE" + }, "ic-cdk-timers 0.7.0": { "name": "ic-cdk-timers", "version": "0.7.0", @@ -79366,7 +79501,7 @@ "ic-canister-log 0.2.0", "ic-canister-sig-creation 1.0.1", "ic-cbor 2.6.0", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-cdk-timers 0.7.0", "ic-certificate-verification 2.6.0", diff --git a/Cargo.Bazel.toml.lock b/Cargo.Bazel.toml.lock index 7821d17cd26a..1a227105e8e9 100644 --- a/Cargo.Bazel.toml.lock +++ b/Cargo.Bazel.toml.lock @@ -3108,7 +3108,7 @@ dependencies = [ "ic-canister-log", "ic-canister-sig-creation", "ic-cbor", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-cdk-timers", "ic-certificate-verification", @@ -5102,6 +5102,19 @@ dependencies = [ "serde_bytes", ] +[[package]] +name = "ic-cdk" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8ecacd682fa05a985253592963306cb9799622d7b1cce4b1edb89c6ec85be1" +dependencies = [ + "candid", + "ic-cdk-macros 0.16.0", + "ic0 0.23.0", + "serde", + "serde_bytes", +] + [[package]] name = "ic-cdk-macros" version = "0.8.4" @@ -5158,6 +5171,20 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "ic-cdk-macros" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d4d857135deef20cc7ea8f3869a30cd9cfeb1392b3a81043790b2cd82adc3e0" +dependencies = [ + "candid", + "proc-macro2", + "quote", + "serde", + "serde_tokenstream 0.2.1", + "syn 2.0.66", +] + [[package]] name = "ic-cdk-timers" version = "0.7.0" diff --git a/Cargo.lock b/Cargo.lock index fcf78ab303e5..2805f90ee302 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1697,7 +1697,7 @@ version = "0.9.0" dependencies = [ "candid", "futures", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "serde", "serde_json", @@ -1991,7 +1991,7 @@ dependencies = [ "certificate_orchestrator_interface", "cfg-if 1.0.0", "hex", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-cdk-timers", "ic-certified-map", @@ -2229,7 +2229,7 @@ version = "0.1.0" dependencies = [ "candid", "futures", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "serde", ] @@ -3526,7 +3526,7 @@ version = "0.1.0" dependencies = [ "candid", "ic-base-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "serde", ] @@ -3581,7 +3581,7 @@ name = "ecdsa-canister" version = "0.1.0" dependencies = [ "candid", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-management-canister-types", "serde", @@ -3959,7 +3959,7 @@ dependencies = [ "async-trait", "candid", "ic-canister-log 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "mockall 0.13.0", "serde", "thiserror", @@ -4892,7 +4892,7 @@ name = "http_counter" version = "0.9.0" dependencies = [ "candid", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-certified-map", "serde", @@ -5512,7 +5512,7 @@ dependencies = [ "hex", "ic-base-types", "ic-btc-interface", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-ckbtc-minter", "ic-config", @@ -5799,7 +5799,7 @@ dependencies = [ "ic-base-types", "ic-btc-interface", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-stable-structures", "ic-test-utilities-load-wasm", "ic-types", @@ -5978,7 +5978,7 @@ version = "0.9.0" dependencies = [ "by_address", "ic-canister-log 0.2.0", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-metrics-encoder", "maplit", "priority-queue", @@ -6134,6 +6134,19 @@ dependencies = [ "serde_bytes", ] +[[package]] +name = "ic-cdk" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8ecacd682fa05a985253592963306cb9799622d7b1cce4b1edb89c6ec85be1" +dependencies = [ + "candid", + "ic-cdk-macros 0.16.0", + "ic0 0.23.0", + "serde", + "serde_bytes", +] + [[package]] name = "ic-cdk-macros" version = "0.8.4" @@ -6190,6 +6203,20 @@ dependencies = [ "syn 2.0.79", ] +[[package]] +name = "ic-cdk-macros" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d4d857135deef20cc7ea8f3869a30cd9cfeb1392b3a81043790b2cd82adc3e0" +dependencies = [ + "candid", + "proc-macro2", + "quote", + "serde", + "serde_tokenstream 0.2.2", + "syn 2.0.79", +] + [[package]] name = "ic-cdk-timers" version = "0.7.0" @@ -6316,7 +6343,7 @@ dependencies = [ "ciborium", "hex", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-metrics-encoder", "ic-stable-structures", @@ -6347,7 +6374,7 @@ dependencies = [ "ic-btc-interface", "ic-canister-log 0.2.0", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-ckbtc-kyt", "ic-config", @@ -6398,7 +6425,7 @@ dependencies = [ "ic-base-types", "ic-canister-log 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-cdk-timers", "ic-cketh-test-utils", @@ -6448,7 +6475,7 @@ dependencies = [ "hex", "ic-base-types", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cketh-minter", "ic-ethereum-types", "ic-icrc1-ledger", @@ -8452,7 +8479,7 @@ dependencies = [ "ic-base-types", "ic-canister-log 0.2.0", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-cdk-timers", "ic-icrc1-index-ng", @@ -8664,7 +8691,7 @@ dependencies = [ "ciborium", "ic-base-types", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-icrc1", "ic-icrc1-tokens-u256", @@ -8692,7 +8719,7 @@ dependencies = [ "getrandom", "hex", "ic-base-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-crypto-tree-hash", "ic-icrc1", @@ -8724,7 +8751,7 @@ dependencies = [ "getrandom", "hex", "ic-base-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-crypto-tree-hash", "ic-icrc1", @@ -8754,7 +8781,7 @@ dependencies = [ "ic-base-types", "ic-canister-profiler", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-cdk-timers", "ic-icrc1", @@ -8788,7 +8815,7 @@ dependencies = [ "ic-canister-log 0.2.0", "ic-canister-profiler", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-cdk-timers", "ic-crypto-sha2", @@ -8832,7 +8859,7 @@ dependencies = [ "ic-base-types", "ic-canister-log 0.2.0", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-crypto-tree-hash", "ic-icrc1", @@ -9134,7 +9161,7 @@ name = "ic-ledger-canister-blocks-synchronizer-test-utils" version = "0.9.0" dependencies = [ "ic-canister-client-sender", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-ledger-canister-blocks-synchronizer", "ic-ledger-core", "ic-types", @@ -9199,7 +9226,7 @@ dependencies = [ "ic-base-types", "ic-canister-log 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-crypto-sha2", "ic-crypto-test-utils-reproducible-rng", @@ -9235,7 +9262,7 @@ dependencies = [ "candid", "ic-base-types", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-ledger-suite-orchestrator", "ic-management-canister-types", "ic-state-machine-tests", @@ -9380,7 +9407,7 @@ dependencies = [ "candid", "dfn_candid", "dfn_core", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "serde", ] @@ -9784,7 +9811,7 @@ version = "0.9.0" dependencies = [ "candid", "dfn_core", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-crypto-sha2", "ic-management-canister-types", "ic-nervous-system-clients", @@ -9802,7 +9829,7 @@ dependencies = [ "dfn_candid", "dfn_core", "ic-base-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", ] [[package]] @@ -9913,7 +9940,7 @@ dependencies = [ "futures", "ic-base-types", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-cdk-timers", "ic-config", @@ -10222,7 +10249,7 @@ dependencies = [ "ic-canister-client-sender", "ic-canisters-http-types", "ic-cbor", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-cdk-timers", "ic-certificate-verification", @@ -11385,7 +11412,7 @@ dependencies = [ "candid", "candid_parser", "futures", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "serde", ] @@ -11603,7 +11630,7 @@ dependencies = [ "cycles-minting-canister", "futures", "ic-base-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-nervous-system-common", "ic-nervous-system-initial-supply", "ic-nervous-system-runtime", @@ -11734,7 +11761,7 @@ dependencies = [ "ic-base-types", "ic-canister-log 0.2.0", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-cdk-timers", "ic-management-canister-types", @@ -11895,7 +11922,7 @@ dependencies = [ "futures", "hex", "ic-base-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-crypto-sha2", "ic-icrc1", "ic-icrc1-ledger", @@ -12322,7 +12349,7 @@ dependencies = [ "ic-btc-interface", "ic-canister-client", "ic-canister-client-sender", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-certification 0.9.0", "ic-config", "ic-crypto-sha2", @@ -12771,7 +12798,7 @@ dependencies = [ "futures", "ic-base-types", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-cdk-timers", "ic-metrics-encoder", @@ -12993,7 +13020,7 @@ dependencies = [ "base64 0.13.1", "hex", "ic-canister-client-sender", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-certification-test-utils", "ic-crypto-interfaces-sig-verification", "ic-crypto-standalone-sig-verifier", @@ -13019,7 +13046,7 @@ dependencies = [ "build-info-build", "candid", "canister-test", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-state-machine-tests", "ic-types", @@ -13458,7 +13485,7 @@ dependencies = [ "ic-base-types", "ic-canister-client-sender", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-crypto-sha2", "ic-icp-index", "ic-icrc1-ledger-sm-tests", @@ -13547,7 +13574,7 @@ version = "0.1.2" dependencies = [ "async-trait", "candid", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "icrc-ledger-client", ] @@ -14261,7 +14288,7 @@ dependencies = [ "base64 0.13.1", "candid", "flate2", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-certified-map", "serde", @@ -14359,7 +14386,7 @@ dependencies = [ "dfn_protobuf", "ic-base-types", "ic-canisters-http-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-ledger-canister-core", "ic-ledger-core", "ic-ledger-test-utils", @@ -14388,7 +14415,7 @@ dependencies = [ "ic-agent", "ic-base-types", "ic-canister-log 0.2.0", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-error-types", "ic-icrc1", "ic-icrc1-ledger-sm-tests", @@ -15253,7 +15280,7 @@ dependencies = [ "cloner-canister-types", "dfn_candid", "ic-base-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-limits", "ic-management-canister-types", "ic-prep", @@ -16439,7 +16466,7 @@ dependencies = [ "hex", "ic-agent", "ic-base-types", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-transport-types", "ic-universal-canister", "icp-ledger", @@ -16491,7 +16518,7 @@ dependencies = [ "ic-btc-adapter", "ic-btc-interface", "ic-canister-sandbox-backend-lib", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-config", "ic-crypto-ed25519", "ic-crypto-iccsa", @@ -17019,7 +17046,7 @@ name = "proxy_canister" version = "0.1.0" dependencies = [ "candid", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-management-canister-types", "serde", @@ -17534,7 +17561,7 @@ dependencies = [ "futures", "ic-base-types", "ic-canister-client-sender", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-certified-map", "ic-config", "ic-crypto-node-key-generation", @@ -17723,7 +17750,7 @@ name = "response-payload-test" version = "0.9.0" dependencies = [ "candid", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "serde", ] @@ -19218,7 +19245,7 @@ name = "stable_structures" version = "0.9.0" dependencies = [ "candid", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-stable-structures", "serde", @@ -19794,7 +19821,7 @@ dependencies = [ "ic-btc-interface", "ic-canister-client", "ic-canister-client-sender", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-certification 0.9.0", "ic-ckbtc-agent", "ic-ckbtc-kyt", @@ -21895,7 +21922,7 @@ name = "xrc-mock" version = "0.9.0" dependencies = [ "candid", - "ic-cdk 0.13.5", + "ic-cdk 0.16.0", "ic-cdk-macros 0.9.0", "ic-xrc-types", "serde", diff --git a/Cargo.toml b/Cargo.toml index c328f2ed74ae..e387ed2e9d0d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -535,7 +535,7 @@ ic-btc-interface = "0.2.2" ic-btc-test-utils = "0.1.0" ic-btc-validation = "0.1.0" ic-cbor = "2.6.0" -ic-cdk = "0.13.5" +ic-cdk = "0.16.0" ic-cdk-macros = "0.9.0" ic-cdk-timers = "0.7.0" ic-certificate-verification = "2.6.0" diff --git a/bazel/external_crates.bzl b/bazel/external_crates.bzl index 2fa1f067b2d0..32d53bc1c375 100644 --- a/bazel/external_crates.bzl +++ b/bazel/external_crates.bzl @@ -571,7 +571,7 @@ def external_crates_repository(name, cargo_lockfile, lockfile, sanitizers_enable version = "2.6.0", ), "ic-cdk": crate.spec( - version = "^0.13.5", + version = "^0.16.0", ), "ic-cdk-timers": crate.spec( version = "^0.7.0", diff --git a/packages/pocket-ic/Cargo.toml b/packages/pocket-ic/Cargo.toml index 5ac5317017b0..6452449fc754 100644 --- a/packages/pocket-ic/Cargo.toml +++ b/packages/pocket-ic/Cargo.toml @@ -24,7 +24,7 @@ base64 = "^0.13.1" candid = "^0.10.2" hex = { workspace = true } ic-agent = { workspace = true } -ic-cdk = "0.13.5" +ic-cdk = { workspace = true } ic-transport-types = { workspace = true } reqwest = { workspace = true } schemars = "0.8.16" diff --git a/packages/pocket-ic/src/nonblocking.rs b/packages/pocket-ic/src/nonblocking.rs index e50a36b93d25..99ee1f4b9942 100644 --- a/packages/pocket-ic/src/nonblocking.rs +++ b/packages/pocket-ic/src/nonblocking.rs @@ -889,10 +889,7 @@ impl PocketIc { ) -> Result<(), CallError> { let settings = CanisterSettings { controllers: Some(new_controllers), - compute_allocation: None, - memory_allocation: None, - freezing_threshold: None, - reserved_cycles_limit: None, + ..CanisterSettings::default() }; call_candid_as::<(UpdateSettingsArgument,), ()>( self, diff --git a/rs/bitcoin/ckbtc/kyt/src/main.rs b/rs/bitcoin/ckbtc/kyt/src/main.rs index 061c425ca725..c00adb9be7d9 100644 --- a/rs/bitcoin/ckbtc/kyt/src/main.rs +++ b/rs/bitcoin/ckbtc/kyt/src/main.rs @@ -613,7 +613,7 @@ fn http_request(req: http::HttpRequest) -> http::HttpResponse { writer .encode_gauge( "stable_memory_bytes", - ic_cdk::api::stable::stable64_size() as f64 * 65536.0, + ic_cdk::api::stable::stable_size() as f64 * 65536.0, "Size of the stable memory allocated by this canister.", ) .unwrap(); diff --git a/rs/bitcoin/ckbtc/minter/ckbtc_minter.did b/rs/bitcoin/ckbtc/minter/ckbtc_minter.did index 86d8eb0e6871..b2051e3a869c 100644 --- a/rs/bitcoin/ckbtc/minter/ckbtc_minter.did +++ b/rs/bitcoin/ckbtc/minter/ckbtc_minter.did @@ -27,6 +27,13 @@ type DefiniteCanisterSettings = record { memory_allocation : nat; compute_allocation : nat; reserved_cycles_limit : nat; + log_visibility: LogVisibility; + wasm_memory_limit : nat; +}; + +type LogVisibility = variant { + controllers; + public; }; type RetrieveBtcArgs = record { @@ -453,7 +460,7 @@ service : (minter_arg : MinterArg) -> { /// Returns the status of a withdrawal request request using the RetrieveBtcStatusV2 type. retrieve_btc_status_v2 : (record { block_index : nat64 }) -> (RetrieveBtcStatusV2) query; - + // Returns the withdrawal statues by account. // // # Note diff --git a/rs/bitcoin/ckbtc/minter/src/metrics.rs b/rs/bitcoin/ckbtc/minter/src/metrics.rs index a57768e35041..7b93299549ae 100644 --- a/rs/bitcoin/ckbtc/minter/src/metrics.rs +++ b/rs/bitcoin/ckbtc/minter/src/metrics.rs @@ -13,7 +13,7 @@ pub fn encode_metrics( metrics.encode_gauge( "ckbtc_minter_stable_memory_bytes", - ic_cdk::api::stable::stable64_size() as f64 * WASM_PAGE_SIZE_IN_BYTES, + ic_cdk::api::stable::stable_size() as f64 * WASM_PAGE_SIZE_IN_BYTES, "Size of the stable memory allocated by this canister.", )?; diff --git a/rs/ethereum/cketh/minter/cketh_minter.did b/rs/ethereum/cketh/minter/cketh_minter.did index 31ac1648998c..9c18cc671a32 100644 --- a/rs/ethereum/cketh/minter/cketh_minter.did +++ b/rs/ethereum/cketh/minter/cketh_minter.did @@ -24,6 +24,13 @@ type DefiniteCanisterSettings = record { memory_allocation : nat; compute_allocation : nat; reserved_cycles_limit : nat; + log_visibility: LogVisibility; + wasm_memory_limit : nat; +}; + +type LogVisibility = variant { + controllers; + public; }; type QueryStats = record { diff --git a/rs/ethereum/cketh/minter/src/main.rs b/rs/ethereum/cketh/minter/src/main.rs index 57ebd8343c8f..3376e202a5d5 100644 --- a/rs/ethereum/cketh/minter/src/main.rs +++ b/rs/ethereum/cketh/minter/src/main.rs @@ -837,7 +837,7 @@ fn http_request(req: HttpRequest) -> HttpResponse { read_state(|s| { w.encode_gauge( "cketh_minter_stable_memory_bytes", - ic_cdk::api::stable::stable64_size() as f64 * WASM_PAGE_SIZE_IN_BYTES, + ic_cdk::api::stable::stable_size() as f64 * WASM_PAGE_SIZE_IN_BYTES, "Size of the stable memory allocated by this canister.", )?; diff --git a/rs/ethereum/ledger-suite-orchestrator/ledger_suite_orchestrator.did b/rs/ethereum/ledger-suite-orchestrator/ledger_suite_orchestrator.did index b1fc6ba7750d..36df009afd02 100644 --- a/rs/ethereum/ledger-suite-orchestrator/ledger_suite_orchestrator.did +++ b/rs/ethereum/ledger-suite-orchestrator/ledger_suite_orchestrator.did @@ -225,6 +225,13 @@ type DefiniteCanisterSettings = record { memory_allocation : nat; compute_allocation : nat; reserved_cycles_limit : nat; + log_visibility: LogVisibility; + wasm_memory_limit : nat; +}; + +type LogVisibility = variant { + controllers; + public; }; type QueryStats = record { diff --git a/rs/ethereum/ledger-suite-orchestrator/src/main.rs b/rs/ethereum/ledger-suite-orchestrator/src/main.rs index 783a566390d9..b727571914b5 100644 --- a/rs/ethereum/ledger-suite-orchestrator/src/main.rs +++ b/rs/ethereum/ledger-suite-orchestrator/src/main.rs @@ -197,7 +197,7 @@ fn http_request( w.encode_gauge( "ledger_suite_orchestrator_stable_memory_bytes", - ic_cdk::api::stable::stable64_size() as f64 * WASM_PAGE_SIZE_IN_BYTES, + ic_cdk::api::stable::stable_size() as f64 * WASM_PAGE_SIZE_IN_BYTES, "Size of the stable memory allocated by this canister.", )?; diff --git a/rs/execution_environment/benches/management_canister/test_canister/src/main.rs b/rs/execution_environment/benches/management_canister/test_canister/src/main.rs index 57ff898f7960..8391126b926d 100644 --- a/rs/execution_environment/benches/management_canister/test_canister/src/main.rs +++ b/rs/execution_environment/benches/management_canister/test_canister/src/main.rs @@ -35,10 +35,7 @@ async fn create_canisters(args: CreateCanistersArgs) -> Vec { CreateCanisterArgument { settings: Some(CanisterSettings { controllers: Some(vec![ic_cdk::api::id()]), - compute_allocation: None, - memory_allocation: None, - freezing_threshold: None, - reserved_cycles_limit: None, + ..CanisterSettings::default() }), }, args.initial_cycles, @@ -112,10 +109,7 @@ async fn update_settings(args: UpdateSettingsArgs) { canister_id, settings: CanisterSettings { controllers: Some(controllers.clone()), - compute_allocation: None, - memory_allocation: None, - freezing_threshold: None, - reserved_cycles_limit: None, + ..CanisterSettings::default() }, }) }) diff --git a/rs/execution_environment/tests/backtraces.rs b/rs/execution_environment/tests/backtraces.rs index c4c99a68981f..273d2d3f921a 100644 --- a/rs/execution_environment/tests/backtraces.rs +++ b/rs/execution_environment/tests/backtraces.rs @@ -188,7 +188,7 @@ fn backtrace_test_stable_oob() { "Error from Canister rwlgt-iiaaa-aaaaa-aaaaa-cai: Canister trapped:", r#"stable memory out of bounds Canister Backtrace: -ic0::ic0::stable_write +ic0::ic0::stable64_write _wasm_backtrace_canister::stable_oob::inner_2 _wasm_backtrace_canister::stable_oob::inner _wasm_backtrace_canister::stable_oob::outer diff --git a/rs/ledger_suite/icp/index/src/main.rs b/rs/ledger_suite/icp/index/src/main.rs index 44565ba5c300..5d4bc2983d9d 100644 --- a/rs/ledger_suite/icp/index/src/main.rs +++ b/rs/ledger_suite/icp/index/src/main.rs @@ -532,12 +532,12 @@ fn get_oldest_tx_id(account_identifier: AccountIdentifier) -> Option pub fn encode_metrics(w: &mut ic_metrics_encoder::MetricsEncoder>) -> std::io::Result<()> { w.encode_gauge( "index_stable_memory_pages", - ic_cdk::api::stable::stable64_size() as f64, + ic_cdk::api::stable::stable_size() as f64, "Size of the stable memory allocated by this canister measured in 64K Wasm pages.", )?; w.encode_gauge( "index_stable_memory_bytes", - (ic_cdk::api::stable::stable64_size() * 64 * 1024) as f64, + (ic_cdk::api::stable::stable_size() * 64 * 1024) as f64, "Size of the stable memory allocated by this canister.", )?; w.encode_gauge( diff --git a/rs/ledger_suite/icrc1/archive/src/main.rs b/rs/ledger_suite/icrc1/archive/src/main.rs index 9d6c513099cb..df1007c1e69a 100644 --- a/rs/ledger_suite/icrc1/archive/src/main.rs +++ b/rs/ledger_suite/icrc1/archive/src/main.rs @@ -360,12 +360,12 @@ fn __get_candid_interface_tmp_hack() -> &'static str { fn encode_metrics(w: &mut ic_metrics_encoder::MetricsEncoder>) -> std::io::Result<()> { w.encode_gauge( "archive_stable_memory_pages", - ic_cdk::api::stable::stable64_size() as f64, + ic_cdk::api::stable::stable_size() as f64, "Size of the stable memory allocated by this canister measured in 64K Wasm pages.", )?; w.encode_gauge( "archive_stable_memory_bytes", - ic_cdk::api::stable::stable64_size() as f64 * 65536f64, + ic_cdk::api::stable::stable_size() as f64 * 65536f64, "Size of the stable memory allocated by this canister.", )?; w.encode_gauge( diff --git a/rs/ledger_suite/icrc1/benchmark/generator/src/lib.rs b/rs/ledger_suite/icrc1/benchmark/generator/src/lib.rs index de510ac06281..f65701aba799 100644 --- a/rs/ledger_suite/icrc1/benchmark/generator/src/lib.rs +++ b/rs/ledger_suite/icrc1/benchmark/generator/src/lib.rs @@ -131,7 +131,7 @@ pub fn encode_metrics( ) -> std::io::Result<()> { metrics.encode_gauge( "icrc1_benchmark_generator_stable_memory_bytes", - ic_cdk::api::stable::stable64_size() as f64, + ic_cdk::api::stable::stable_size() as f64, "Size of the stable memory allocated by this canister.", )?; Ok(()) diff --git a/rs/ledger_suite/icrc1/index-ng/src/main.rs b/rs/ledger_suite/icrc1/index-ng/src/main.rs index a64d05659f1f..4d430f9419b8 100644 --- a/rs/ledger_suite/icrc1/index-ng/src/main.rs +++ b/rs/ledger_suite/icrc1/index-ng/src/main.rs @@ -1107,12 +1107,12 @@ fn http_request(req: HttpRequest) -> HttpResponse { pub fn encode_metrics(w: &mut ic_metrics_encoder::MetricsEncoder>) -> std::io::Result<()> { w.encode_gauge( "index_stable_memory_pages", - ic_cdk::api::stable::stable64_size() as f64, + ic_cdk::api::stable::stable_size() as f64, "Size of the stable memory allocated by this canister measured in 64K Wasm pages.", )?; w.encode_gauge( "index_stable_memory_bytes", - (ic_cdk::api::stable::stable64_size() * 64 * 1024) as f64, + (ic_cdk::api::stable::stable_size() * 64 * 1024) as f64, "Size of the stable memory allocated by this canister.", )?; w.encode_gauge( diff --git a/rs/ledger_suite/icrc1/index/src/lib.rs b/rs/ledger_suite/icrc1/index/src/lib.rs index bd4bd0611780..37bd5de38323 100644 --- a/rs/ledger_suite/icrc1/index/src/lib.rs +++ b/rs/ledger_suite/icrc1/index/src/lib.rs @@ -447,12 +447,12 @@ fn get_oldest_txid(account: &Account) -> Option { pub fn encode_metrics(w: &mut ic_metrics_encoder::MetricsEncoder>) -> std::io::Result<()> { w.encode_gauge( "index_stable_memory_pages", - ic_cdk::api::stable::stable64_size() as f64, + ic_cdk::api::stable::stable_size() as f64, "Size of the stable memory allocated by this canister measured in 64K Wasm pages.", )?; w.encode_gauge( "index_stable_memory_bytes", - (ic_cdk::api::stable::stable64_size() * 64 * 1024) as f64, + (ic_cdk::api::stable::stable_size() * 64 * 1024) as f64, "Size of the stable memory allocated by this canister.", )?; w.encode_gauge( diff --git a/rs/ledger_suite/icrc1/ledger/src/main.rs b/rs/ledger_suite/icrc1/ledger/src/main.rs index 07df5fbb1c21..760f19ae556c 100644 --- a/rs/ledger_suite/icrc1/ledger/src/main.rs +++ b/rs/ledger_suite/icrc1/ledger/src/main.rs @@ -223,12 +223,12 @@ fn post_upgrade(args: Option) { fn encode_metrics(w: &mut ic_metrics_encoder::MetricsEncoder>) -> std::io::Result<()> { w.encode_gauge( "ledger_stable_memory_pages", - ic_cdk::api::stable::stable64_size() as f64, + ic_cdk::api::stable::stable_size() as f64, "Size of the stable memory allocated by this canister measured in 64K Wasm pages.", )?; w.encode_gauge( "ledger_stable_memory_bytes", - (ic_cdk::api::stable::stable64_size() * 64 * 1024) as f64, + (ic_cdk::api::stable::stable_size() * 64 * 1024) as f64, "Size of the stable memory allocated by this canister.", )?; w.encode_gauge( diff --git a/rs/nns/sns-wasm/src/canister_stable_memory.rs b/rs/nns/sns-wasm/src/canister_stable_memory.rs index 0323874a18f0..c3e9fe5965f1 100644 --- a/rs/nns/sns-wasm/src/canister_stable_memory.rs +++ b/rs/nns/sns-wasm/src/canister_stable_memory.rs @@ -1,6 +1,5 @@ use ic_cdk::api::stable::{ - stable64_grow, stable64_read, stable64_size, stable64_write, stable_grow, stable_read, - stable_size, stable_write, StableMemory, StableMemoryError, + stable_grow, stable_read, stable_size, stable_write, StableMemory, StableMemoryError, }; use std::sync::{Arc, Mutex}; @@ -9,37 +8,21 @@ use std::sync::{Arc, Mutex}; pub struct CanisterStableMemory {} impl StableMemory for CanisterStableMemory { - fn stable_size(&self) -> u32 { + fn stable_size(&self) -> u64 { stable_size() } - fn stable64_size(&self) -> u64 { - stable64_size() - } - - fn stable_grow(&self, new_pages: u32) -> Result { + fn stable_grow(&self, new_pages: u64) -> Result { stable_grow(new_pages) } - fn stable64_grow(&self, new_pages: u64) -> Result { - stable64_grow(new_pages) - } - - fn stable_write(&self, offset: u32, buf: &[u8]) { + fn stable_write(&self, offset: u64, buf: &[u8]) { stable_write(offset, buf) } - fn stable64_write(&self, offset: u64, buf: &[u8]) { - stable64_write(offset, buf) - } - - fn stable_read(&self, offset: u32, buf: &mut [u8]) { + fn stable_read(&self, offset: u64, buf: &mut [u8]) { stable_read(offset, buf) } - - fn stable64_read(&self, offset: u64, buf: &mut [u8]) { - stable64_read(offset, buf) - } } const WASM_PAGE_SIZE_IN_BYTES: usize = 64 * 1024; @@ -51,29 +34,13 @@ pub struct TestCanisterStableMemory { } impl StableMemory for TestCanisterStableMemory { - fn stable_size(&self) -> u32 { - let memory = self.memory.lock().unwrap(); - (memory.len() / WASM_PAGE_SIZE_IN_BYTES) as u32 - } - - fn stable64_size(&self) -> u64 { + fn stable_size(&self) -> u64 { let memory = self.memory.lock().unwrap(); (memory.len() / WASM_PAGE_SIZE_IN_BYTES) as u64 } - fn stable_grow(&self, new_pages: u32) -> Result { - let stable_size = self.stable_size(); - let mut memory = self.memory.lock().unwrap(); - let old_len = memory.len(); - memory.resize( - old_len + ((new_pages as usize) * WASM_PAGE_SIZE_IN_BYTES), - 0, - ); - Ok(stable_size) - } - - fn stable64_grow(&self, new_pages: u64) -> Result { - let size = self.stable64_size(); + fn stable_grow(&self, new_pages: u64) -> Result { + let size = self.stable_size(); let mut memory = self.memory.lock().unwrap(); let old_len = memory.len(); memory.resize( @@ -83,28 +50,14 @@ impl StableMemory for TestCanisterStableMemory { Ok(size) } - fn stable_write(&self, offset: u32, buf: &[u8]) { + fn stable_write(&self, offset: u64, buf: &[u8]) { let offset = offset as usize; let range_end = offset + buf.len(); let mut memory = self.memory.lock().unwrap(); (&mut memory)[offset..range_end].copy_from_slice(buf) } - fn stable64_write(&self, offset: u64, buf: &[u8]) { - let offset = offset as usize; - let range_end = offset + buf.len(); - let mut memory = self.memory.lock().unwrap(); - (&mut memory)[offset..range_end].copy_from_slice(buf) - } - - fn stable_read(&self, offset: u32, buf: &mut [u8]) { - let offset = offset as usize; - let range_end = offset + buf.len(); - let memory = self.memory.lock().unwrap(); - buf.copy_from_slice(&memory[offset..range_end]) - } - - fn stable64_read(&self, offset: u64, buf: &mut [u8]) { + fn stable_read(&self, offset: u64, buf: &mut [u8]) { let offset = offset as usize; let range_end = offset + buf.len(); let memory = self.memory.lock().unwrap(); diff --git a/rs/nns/sns-wasm/src/stable_memory.rs b/rs/nns/sns-wasm/src/stable_memory.rs index 1f064c83b014..0853cb5e9a30 100644 --- a/rs/nns/sns-wasm/src/stable_memory.rs +++ b/rs/nns/sns-wasm/src/stable_memory.rs @@ -28,14 +28,14 @@ use prost::Message; use std::mem::size_of; /// The initial chunk of stable memory that is reserved for future use -const RESERVED_INITIAL_STABLE_MEMORY_BYTES: usize = 1_000_000; // 1MB +const RESERVED_INITIAL_STABLE_MEMORY_BYTES: u64 = 1_000_000; // 1MB /// Provides convenient access to stable memory to read/write WASMs and canister state. See /// the module comment for more details. #[derive(Clone)] pub struct SnsWasmStableMemory { stable_memory: M, - reserved_bytes: usize, + reserved_bytes: u64, } impl Default for SnsWasmStableMemory { @@ -50,22 +50,22 @@ impl Default for SnsWasmStableMemory { impl SnsWasmStableMemory { /// Initialize stable memory pub fn init(&self) -> Result<(), StableMemoryError> { - let wasms_start_offset = self.get_canister_state_size_offset() + size_of::(); + let wasms_start_offset = self.get_canister_state_size_offset() + (size_of::() as u64); self.write_wasms_end_offset(wasms_start_offset as u32) } /// Return a `StableReader` constructed with the given offset - fn get_stable_reader(&self, offset: usize) -> StableReader { + fn get_stable_reader(&self, offset: u64) -> StableReader { StableReader::with_memory(self.stable_memory.clone(), offset) } /// Return a `StableWriter` constructed with the given offset - fn get_stable_writer(&self, offset: usize) -> StableWriter { + fn get_stable_writer(&self, offset: u64) -> StableWriter { StableWriter::with_memory(self.stable_memory.clone(), offset) } /// Read a `u32` at the given offset in stable memory - pub fn stable_read_u32(&self, offset: usize) -> Result { + pub fn stable_read_u32(&self, offset: u64) -> Result { let mut reader = self.get_stable_reader(offset); let mut u32_bytes = [0u8; 4]; reader.read(&mut u32_bytes)?; @@ -73,20 +73,20 @@ impl SnsWasmStableMemory { } /// Write `value` to the given offset in stable memory - pub fn stable_write_u32(&self, offset: usize, value: u32) -> Result<(), StableMemoryError> { + pub fn stable_write_u32(&self, offset: u64, value: u32) -> Result<(), StableMemoryError> { let mut writer = self.get_stable_writer(offset); writer.write(&value.to_be_bytes())?; Ok(()) } /// Return the offset in stable memory where the WASMs-end offset can be read - fn get_wasms_end_offset_offset(&self) -> usize { + fn get_wasms_end_offset_offset(&self) -> u64 { self.reserved_bytes } /// Return the offset in stable memory where the canister state size can be read - fn get_canister_state_size_offset(&self) -> usize { - self.get_wasms_end_offset_offset() + size_of::() + fn get_canister_state_size_offset(&self) -> u64 { + self.get_wasms_end_offset_offset() + (size_of::() as u64) } /// Retrieve the offset in stable memory where the last WASM ends @@ -119,7 +119,7 @@ impl SnsWasmStableMemory { state: StableCanisterState, ) -> Result<(), StableMemoryError> { let wasms_end_offset = self.read_wasms_end_offset()?; - let mut state_writer = self.get_stable_writer(wasms_end_offset as usize); + let mut state_writer = self.get_stable_writer(wasms_end_offset as u64); let bytes_written = state_writer.write(&state.encode_to_vec())?; self.write_canister_state_size(bytes_written as u32)?; @@ -132,7 +132,7 @@ impl SnsWasmStableMemory { let wasms_end_offset = self.read_wasms_end_offset()?; let canister_state_size = self.read_canister_state_size()?; - let mut reader = self.get_stable_reader(wasms_end_offset as usize); + let mut reader = self.get_stable_reader(wasms_end_offset as u64); let mut bytes = vec![0; canister_state_size as usize]; reader.read(&mut bytes)?; @@ -143,7 +143,7 @@ impl SnsWasmStableMemory { /// WASM was written to and the size written pub fn write_wasm(&self, wasm: SnsWasm) -> Result<(u32, u32), StableMemoryError> { let wasms_end_offset = self.read_wasms_end_offset()?; - let mut writer = self.get_stable_writer(wasms_end_offset as usize); + let mut writer = self.get_stable_writer(wasms_end_offset as u64); let bytes_written = writer.write(&wasm.encode_to_vec())?; self.write_wasms_end_offset(wasms_end_offset + bytes_written as u32)?; @@ -152,7 +152,7 @@ impl SnsWasmStableMemory { /// Read a WASM from stable memory at the given offset and with the given size pub fn read_wasm(&self, offset: u32, size: u32) -> Result { - let mut reader = self.get_stable_reader(offset as usize); + let mut reader = self.get_stable_reader(offset as u64); let mut bytes = vec![0; size as usize]; reader.read(&mut bytes)?; diff --git a/rs/rosetta-api/tvl/src/metrics.rs b/rs/rosetta-api/tvl/src/metrics.rs index 1f6c3bc4ed6a..02b14ee6a9e3 100644 --- a/rs/rosetta-api/tvl/src/metrics.rs +++ b/rs/rosetta-api/tvl/src/metrics.rs @@ -3,12 +3,12 @@ pub fn encode_metrics(w: &mut ic_metrics_encoder::MetricsEncoder>) -> st w.encode_gauge( "tvl_stable_memory_pages", - ic_cdk::api::stable::stable64_size() as f64, + ic_cdk::api::stable::stable_size() as f64, "Size of the stable memory allocated by this canister measured in 64K Wasm pages.", )?; w.encode_gauge( "tvl_stable_memory_bytes", - ic_cdk::api::stable::stable64_size() as f64 * WASM_PAGE_SIZE_IN_BYTES, + ic_cdk::api::stable::stable_size() as f64 * WASM_PAGE_SIZE_IN_BYTES, "Size of the stable memory allocated by this canister.", )?; w.encode_gauge( diff --git a/rs/rust_canisters/stable_memory_integrity/bin/main.rs b/rs/rust_canisters/stable_memory_integrity/bin/main.rs index 18f1bbb559b4..89ab76c58dcc 100644 --- a/rs/rust_canisters/stable_memory_integrity/bin/main.rs +++ b/rs/rust_canisters/stable_memory_integrity/bin/main.rs @@ -1,4 +1,4 @@ -use ic_cdk::api::stable::{stable64_read, stable64_size}; +use ic_cdk::api::stable::{stable_read, stable_size}; use ic_cdk_macros::{query, update}; use ic_stable_memory_integrity::StableOperationResult; @@ -12,13 +12,13 @@ fn perform_and_check_ops(ops: Vec) { #[query] fn final_size() -> u64 { - stable64_size() + stable_size() } #[query] fn read(start: u64, length: u64) -> Vec { let mut result = vec![0; length as usize]; - stable64_read(start, &mut result); + stable_read(start, &mut result); result } diff --git a/rs/rust_canisters/stable_memory_integrity/src/lib.rs b/rs/rust_canisters/stable_memory_integrity/src/lib.rs index d98ac57c5120..dc5a3de80edd 100644 --- a/rs/rust_canisters/stable_memory_integrity/src/lib.rs +++ b/rs/rust_canisters/stable_memory_integrity/src/lib.rs @@ -1,7 +1,5 @@ use candid::CandidType; -use ic_cdk::api::stable::{ - stable64_grow, stable64_read, stable64_size, stable64_write, stable_read, stable_write, -}; +use ic_cdk::api::stable::{stable_grow, stable_read, stable_size, stable_write}; use serde::{Deserialize, Serialize}; #[derive(Clone, PartialEq, Debug, CandidType, Deserialize, Serialize)] @@ -19,28 +17,20 @@ pub enum StableOperationResult { start: u64, contents: Vec, }, - Read32 { - start: u32, - result: Vec, - }, - Write32 { - start: u32, - contents: Vec, - }, } impl StableOperationResult { pub fn perform_and_check(self) { match self { StableOperationResult::Size(expected_size) => { - let result = stable64_size(); + let result = stable_size(); assert_eq!(expected_size, result); } StableOperationResult::Grow { new_pages, result } => { - let initial_size = stable64_size(); - let actual_result = stable64_grow(new_pages).map_err(|_| ()); + let initial_size = stable_size(); + let actual_result = stable_grow(new_pages).map_err(|_| ()); assert_eq!(result, actual_result); - let new_size = stable64_size(); + let new_size = stable_size(); if actual_result.is_ok() { assert_eq!(new_size, initial_size + new_pages); } else { @@ -48,22 +38,11 @@ impl StableOperationResult { } } StableOperationResult::Read { start, result } => { - let mut actual_result = vec![0; result.len()]; - stable64_read(start, &mut actual_result); - assert_eq!(result, actual_result); - } - StableOperationResult::Write { start, contents } => { - stable64_write(start, &contents); - let mut result = vec![0; contents.len()]; - stable64_read(start, &mut result); - assert_eq!(contents, result); - } - StableOperationResult::Read32 { start, result } => { let mut actual_result = vec![0; result.len()]; stable_read(start, &mut actual_result); assert_eq!(result, actual_result); } - StableOperationResult::Write32 { start, contents } => { + StableOperationResult::Write { start, contents } => { stable_write(start, &contents); let mut result = vec![0; contents.len()]; stable_read(start, &mut result); diff --git a/rs/rust_canisters/stable_memory_integrity/tests/stable_memory_integrity.rs b/rs/rust_canisters/stable_memory_integrity/tests/stable_memory_integrity.rs index 7950e2528ada..9d1fa03bbc0c 100644 --- a/rs/rust_canisters/stable_memory_integrity/tests/stable_memory_integrity.rs +++ b/rs/rust_canisters/stable_memory_integrity/tests/stable_memory_integrity.rs @@ -69,21 +69,6 @@ impl StableState { Err(()) } } - StableOperation::Read32 { start, length } => { - if self.is_valid_read_write(*start as u64, *length as u64, true) { - let result = if *length == 0 { - vec![] - } else { - self.contents[*start as usize..(start + length) as usize].to_vec() - }; - Ok(StableOperationResult::Read32 { - start: *start, - result, - }) - } else { - Err(()) - } - } StableOperation::Write { start, contents } => { if self.is_valid_read_write(*start, contents.len() as u64, false) { Ok(StableOperationResult::Write { @@ -94,24 +79,12 @@ impl StableState { Err(()) } } - StableOperation::Write32 { start, contents } => { - if self.is_valid_read_write(*start as u64, contents.len() as u64, true) { - Ok(StableOperationResult::Write32 { - start: *start, - contents: contents.clone(), - }) - } else { - Err(()) - } - } } } fn apply_operation(&mut self, op: &StableOperation) { match op { - StableOperation::Size - | StableOperation::Read { .. } - | StableOperation::Read32 { .. } => {} + StableOperation::Size | StableOperation::Read { .. } => {} StableOperation::Grow(new_pages) => { if new_pages .saturating_mul(WASM_PAGE_SIZE_IN_BYTES as u64) @@ -127,12 +100,6 @@ impl StableState { .copy_from_slice(contents) } } - StableOperation::Write32 { start, contents } => { - if !contents.is_empty() { - self.contents[*start as usize..*start as usize + contents.len()] - .copy_from_slice(contents) - } - } } } @@ -238,8 +205,6 @@ enum StableOperation { Grow(u64), Read { start: u64, length: u64 }, Write { start: u64, contents: Vec }, - Read32 { start: u32, length: u32 }, - Write32 { start: u32, contents: Vec }, } impl From for StableOperationResult { @@ -257,13 +222,6 @@ impl From for StableOperationResult { StableOperation::Write { start, contents } => { StableOperationResult::Write { start, contents } } - StableOperation::Read32 { start, length } => StableOperationResult::Read32 { - start, - result: vec![0; length as usize], - }, - StableOperation::Write32 { start, contents } => { - StableOperationResult::Write32 { start, contents } - } } } } @@ -284,14 +242,6 @@ impl From<&StableOperationResult> for StableOperation { start: *start, contents: contents.clone(), }, - StableOperationResult::Read32 { start, result } => StableOperation::Read32 { - start: *start, - length: result.len() as u32, - }, - StableOperationResult::Write32 { start, contents } => StableOperation::Write32 { - start: *start, - contents: contents.clone(), - }, } } } @@ -338,16 +288,9 @@ impl proptest::strategy::Strategy for OperationsStrategy { // Execute 20 messages. for _ in 0..20 { - let allow_32_bit = rng.gen_bool(0.5); let allow_invalid = rng.gen_bool(0.2); let concentrate_ops = rng.gen_bool(0.5); - let ops = generate_random_ops( - allow_32_bit, - allow_invalid, - concentrate_ops, - rng, - &mut state, - ); + let ops = generate_random_ops(allow_invalid, concentrate_ops, rng, &mut state); all_operations.push(ops); } Ok(OperationsTree { all_operations }) @@ -355,7 +298,6 @@ impl proptest::strategy::Strategy for OperationsStrategy { } fn generate_random_ops( - allow_32_bit: bool, allow_invalid: bool, concentrate_ops: bool, rng: &mut impl Rng, @@ -365,7 +307,7 @@ fn generate_random_ops( let mut result = Vec::with_capacity(count); let initial_state = state.clone(); for _ in 0..count { - let op = generate_operation(allow_32_bit, allow_invalid, concentrate_ops, rng, state); + let op = generate_operation(allow_invalid, concentrate_ops, rng, state); let op_result = state.get_operation_result(&op); match op_result { Ok(op_result) => { @@ -389,8 +331,6 @@ fn generate_random_ops( } fn generate_operation( - // Include 32-bit stable API operations. - allow_32_bit: bool, // Include out-of-bounds operations which will trap. allow_invalid: bool, // Don't grow and perform all operations within the last wasm page to get @@ -416,7 +356,7 @@ fn generate_operation( 0 }; if allow_invalid && rng.gen_bool(0.1) { - return generate_invalid_operation(rng, state, allow_32_bit, ty); + return generate_invalid_operation(rng, state, ty); } match ty { StableOperationType::Size => StableOperation::Size, @@ -430,18 +370,10 @@ fn generate_operation( } else { rng.gen_range(0..4 * KB) }; - if allow_32_bit && state.contents.len() <= u32::MAX as usize && rng.gen_bool(0.5) { - let length = length as u32; - let start = rng.gen_range( - range_start as u32..(state.contents.len() as u32).saturating_sub(length).max(1), - ); - StableOperation::Read32 { start, length } - } else { - let start = rng.gen_range( - range_start as u64..(state.contents.len() as u64).saturating_sub(length).max(1), - ); - StableOperation::Read { start, length } - } + let start = rng.gen_range( + range_start as u64..(state.contents.len() as u64).saturating_sub(length).max(1), + ); + StableOperation::Read { start, length } } StableOperationType::Write => { let write_size = if state.contents.is_empty() { @@ -451,23 +383,13 @@ fn generate_operation( }; let mut contents = vec![0; write_size as usize]; rng.fill(&mut contents[..]); - if allow_32_bit && state.contents.len() <= u32::MAX as usize && rng.gen_bool(0.5) { - let start = rng.gen_range( - range_start as u32 - ..(state.contents.len() as u32) - .saturating_sub(write_size as u32) - .max(1), - ); - StableOperation::Write32 { start, contents } - } else { - let start = rng.gen_range( - range_start as u64 - ..(state.contents.len() as u64) - .saturating_sub(write_size) - .max(1), - ); - StableOperation::Write { start, contents } - } + let start = rng.gen_range( + range_start as u64 + ..(state.contents.len() as u64) + .saturating_sub(write_size) + .max(1), + ); + StableOperation::Write { start, contents } } } } @@ -475,7 +397,6 @@ fn generate_operation( fn generate_invalid_operation( rng: &mut impl Rng, state: &StableState, - allow_32_bit: bool, ty: StableOperationType, ) -> StableOperation { match ty { @@ -487,33 +408,20 @@ fn generate_invalid_operation( } StableOperationType::Read => { let length = rng.gen_range(0..4 * KB); - if allow_32_bit && rng.gen_bool(0.5) { - let start = rng.gen::(); - StableOperation::Read32 { - start, - length: length as u32, - } - } else { - let start = rng.gen_range( - (state.contents.len() as u64).saturating_sub(length) - ..(state.contents.len()) as u64 + 10, - ); - StableOperation::Read { start, length } - } + let start = rng.gen_range( + (state.contents.len() as u64).saturating_sub(length) + ..(state.contents.len()) as u64 + 10, + ); + StableOperation::Read { start, length } } StableOperationType::Write => { let write_size = rng.gen_range(0..4 * KB); let contents = vec![0; write_size as usize]; - if allow_32_bit && rng.gen_bool(0.5) { - let start = rng.gen::(); - StableOperation::Write32 { start, contents } - } else { - let start = rng.gen_range( - (state.contents.len() as u64).saturating_sub(write_size) - ..(state.contents.len()) as u64 + 10, - ); - StableOperation::Write { start, contents } - } + let start = rng.gen_range( + (state.contents.len() as u64).saturating_sub(write_size) + ..(state.contents.len()) as u64 + 10, + ); + StableOperation::Write { start, contents } } } } diff --git a/rs/tests/networking/canisters/src/cloner_canister.rs b/rs/tests/networking/canisters/src/cloner_canister.rs index cf1e20db6eb8..bec695597b37 100644 --- a/rs/tests/networking/canisters/src/cloner_canister.rs +++ b/rs/tests/networking/canisters/src/cloner_canister.rs @@ -32,10 +32,7 @@ async fn spinup_canister(wasm_module: Vec) -> CallResult<()> { CreateCanisterArgument { settings: Some(CanisterSettings { controllers: Some(vec![ic_cdk::api::id()]), - compute_allocation: None, - memory_allocation: None, - freezing_threshold: None, - reserved_cycles_limit: None, + ..CanisterSettings::default() }), }, INITIAL_CYCLES_BALANCE, diff --git a/rs/tests/src/execution/canister_lifecycle.rs b/rs/tests/src/execution/canister_lifecycle.rs index 0e337ee29e88..af134129a8e6 100644 --- a/rs/tests/src/execution/canister_lifecycle.rs +++ b/rs/tests/src/execution/canister_lifecycle.rs @@ -139,10 +139,8 @@ pub fn update_settings_of_frozen_canister(env: TestEnv) { canister_id: canister.canister_id(), settings: CanisterSettings { controllers: Some(controllers), - compute_allocation: None, - memory_allocation: None, freezing_threshold: Some(low_freezing_threshold.into()), - reserved_cycles_limit: None, + ..CanisterSettings::default() }, }; let bytes = Encode!(&arg).unwrap();