What?
The IC is going to enforce that exported function names must not start with the canister_
prefix except for those explicitly allowed by the Interface Specification (Internet Computer Loading).
Canister developers need to make sure they don’t deploy new canister modules exporting functions with reserved names in the future.
Why?
Exported function names starting with the canister_
prefix and not explicitly allowed by the Interface Specification are reserved so that the IC might introduce such names for new IC features (as was the case for canister_composite_query
recently) without breaking existing canisters.
How?
The IC rejects canister modules exporting functions with reserved names during canister module validation. For new canister modules deployed onto the IC, the validation is performed as part of the install_code
management canister call.
The change is implemented by this MR: Merge branch 'mraszyk/reject-reserved-exports' into 'master' · dfinity/ic@e4ff4a5 · GitHub.
According to the production logs, existing canisters are not affected by this change. After rolling out the change on mainnet, the IC will reject new canister modules exporting functions with reserved names.