▲ | breuleux 5 days ago | ||||||||||||||||
Thanks for the tips, I'll try to look into these when I get some time! Didn't know you could modify the closure pointer. I'm not sure what you mean by "maintaining a set of old versions". It's possible I missed something obvious, but the issue here is that I have the code objects (I can snag them from module evaluation using an import hook)... but I do not have the function objects. I never had them in the first place. Take this very silly and very horrible example:
The adders dictionary is dynamically updated with new closures. Each is a distinct function object with a __code__ field. When I update the inner function, I want all of these closures to be updated. Jurigged is able to do it -- it can root them out using get_referrers. I don't see how else to do it. I quickly tested in a Jupyter notebook, and it didn't work: new closures have the new code, but the old ones are not updated. | |||||||||||||||||
▲ | sczi 5 days ago | parent [-] | ||||||||||||||||
Oooh now that is interesting. What I by mean stuff I don't even know that I don't know :) Yes mine doesn't handle that, it is the same as jupyter there. Smalltalk is supposed to be best at interactive development, I wonder if it will update the old closures. I don't know it to try, but I do know Common Lisp which is also supposed to be quite good, and fwiw it behaves the same, new closures have the new code, but the old ones are not updated:
| |||||||||||||||||
|