matrix

2023-01-30T21:53:55.263999Z

And to “unfreeze”, could you just do (rmap-setf [:optimize ~'_cell] nil). I suppose it might originally have been something else though. Maybe if one wanted to unfreeze and have logic for when that should happen, they’d just use an atom like the test in t-opti-late-sans-freeze ?

kennytilton 2023-01-30T23:23:06.138979Z

Ah, this would be different. We need a "pause" mechanism. More in a sec...

kennytilton 2023-01-30T23:34:12.709669Z

As implemented so far, and we can reconsider this, but so far 'freeze' works by kinda tossing cell internals, after "unlinking" all dependency relations. The latter is why we freeze: thousands of dependency relations crushed performance. Now it turns out "tossing cell internals" does not toss very far--we stash the state in meta-- so I suppose we could reconsitute a living cell from its remnants...well, hang on. We can recover dependencies just by re-running a rule, but we cannot recover the identities of what I call "caller" cells: those cells that use us. That would mean no further propagation of the reconstituted cells to others. Do you have a use case for temporary freeze, aka...hiatus? pause? I always prefer concrete examples when designing just to help me think. eg, In this case, is it OK if we cannot recover a "caller"? ie, they poll us anyway, so we will re-link then. Sth like that?

kennytilton 2023-01-30T23:38:19.476429Z

Btw, the example would help decide if it would be ok for us to freeze without unlinking. ie, maybe in the example we do not have thousands of dependencies?