New canister method canister_on_low_wasm_memory invoked when the canister is low on main memory according to a new wasm_memory_threshold in canister settings.
New system APIs ic0.cost_call, ic0.cost_create_canister, ic0.cost_http_request, ic0.cost_sign_with_ecdsa, ic0.cost_sign_with_schnorr, and ic0.cost_vetkd_derive_encrypted_key for cycles cost calculation.
New field memory_metrics providing detailed metrics on the memory consumption of a canister in the response of the management canister's canister_status endpoint.
Canister cycle balance cannot decrease below the freezing limit after executing install_code on the management canister.
System API calls ic0.msg_caller_size and ic0.msg_caller_copy can be called in all contexts except for (start) function.
Added note on confidentiality of values in the certified state tree.
Update algorithm computing the request and response hash in the HTTP Gateway including clarification of when the HTTP Gateway can allow for arbitrary certification version in the canister's response.
Update conditions on requested paths in HTTP read state requests.
Added new query methods in the Bitcoin API.
Added node public keys to certified state and node signatures to query call responses.
Added a new mode for canister upgrades skipping pre-upgrade method's execution.
canister version can be specified in some management canister calls (canister creation, canister code changes, canister settings changes)
IC records canister history (canister creation, canister code changes, and canister controllers changes)
added a new canister_info management canister call returning current module hash, current controllers, and canister history
added a new system API call ic0.is_controller (checking if a principal is a controller of the canister)
stable memory System API calls can be invoked in the WebAssembly module (start) function
the system API call ic0.global_timer_set can be invoked in canister pre-upgrade
added modeling WASM start function in the concrete CanisterModule specification
WebAssembly module requirements have been revised (relaxed max number of declared functions and globals, added conditions on exported functions)
certified variables are cleared if a canister is reinstalled
a canister having an open call context marked as deleted cannot reach Stopped state
a desired canister ID of the canister created by provisional_create_canister_with_cycles (in testing environments) can be specified using specified_id
conditions on envelope delegations have been revised (relaxed max number of delegations, restricted max number of targets per delegation, forbidden cycles in the delegation chain)
added a new optional field senders in envelope delegations (restricting users to which a delegation applies)
all /request_status/<request_id> paths must refer to the same request_id in a read_state request
IC protocol execution error conditions (such as failing inspect_message method of a canister) are returned as 200 HTTP responses with a cbor body describing the error (instead of 4xx or 5xx HTTP responses)