Webwarrior I can tell you that you made my day :) Thanks for this great testimony.
Today we discuss about Pablo because he has a working system being able to upload hot code and migrate instance but also the code on the stack. We will see if we integrate it in Pharo but I want the best hot code loader ever and be able to update the updater while running the updater. Then we want to have a context aware version of this one where you can apply a change that break the UI and revert it. Stef On Mon, Oct 9, 2017 at 7:05 PM, webwarrior <r...@webwarrior.ws> wrote: > kilon.alios wrote >> Care to explain what difficulty you experienced in live coding with >> Python. >> Or what Pharo can do that Python can’t live code wise ? Maybe I will learn >> something. > > It's funny that one of main reasons why I discovered and started using Pharo > was failure to get live coding working for Python (Jython in particular). > > And now time after time kilon.alios states that live coding in Python is > "easy" and no big deal. > > I will tell you, Pharoers, about code reloading in Python, and let you > decide for yourselves how it compares to Pharo. > > > Out of the box in Python you can execute some Python code and reload modules > with reload() function. > > What reload() does is it reads code from file (in Python each source file > corresponds to module), executes it, and replaces reference to [that module] > in current module. > From that moment, any code in current module, when referencing reloaded > module, will point to new version of it. > > All implicitly imported names will (like from foo import bar, from foo > import *, etc.) will point to old version. Also all other modules except > current will not be affected. > > There are, however, third-party libraries, that take care of it. > > But that's not all. All instances and subclasses of old classes will point > to old versions of classes. > To counter that, instead of replacing old module you could replace its > contents by newer variables/functions and patch classes by replacing their > contents. > Some third-party libraries do that. > > That's still not all. If you store references to functions/methods/classes, > that references will point to old versions. > reimport library takes care of that, but it uses implementation-specific > feature of CPython's GC, which lets you get all references to some object. > Unfortunately, it doesn't work in Jython, and probably in other alternative > Python implementations. > > But wait, what if you rename a class or function, or change its base > class(-es)? > You're out of luck. Theoretically you could handle such change if recent > code change consists of a single rename, but that's it. > > I may have missed some other edge cases and haven't talked about tools > support, but I hope you get the idea. > > > > -- > Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html >