I asked about this in another question, but I’m wondering how this will work practically.
For example, what if I want to use a data structure (like HashMap
), but because it’s not a stable type I store the data instead in a stable variable (like Trie
). And in the pre-upgrade I convert from Trie
to HashMap
and in the post-upgrade I convert from HashMap
back to Trie
for persistent storage.
If stable memory goes up to 300 GB but non-stable memory stays capped at 4 GB, this wouldn’t really work.
As an aside, how is stable memory currently implemented? How can every canister have 300 GB available on a subnet? Where does this extra RAM come from? Do the subnet nodes have enough to begin with?