Prioritize safe instantaneous canister upgrades

Can you explain why named entry points for response callbacks will solve the problem of upgrading canisters with outstanding call contexts?

My understanding is that right now inter-canister updates execute reply and reject callback functions that are stored in a WebAssembly Table, which itself is stored inside the callee canister’s wasm module. These callback functions are looked up using known table entry indexes (I think).

How does using entry points (i.e. ic0.reply_callback and ic0.reject_callback) actually help?

The core problem of:

Some canisters may not be able to make sense of callbacks after upgrades

still isn’t addressed.

Or are you saying that the upcoming work in safe canister upgrades will fix this because now the callback function is part of the callee canister’s Candid interface and can thus be statically analyzed for breaking changes?

1 Like