<div dir="ltr">Thanks Ben actually your first link was the first thing I read when I googled become. I dont think VM lookup benefits me in my case as this is already handled by the Python VM. <div><br></div><div>You other tlinks are JIT VM related, Python is not friendly to JIT because its creator believe that performance enhancement should come from wrapping C libraries and wants to avoid the cost of more complex VM . In the case of Python this is easy to follow because Python has a ton of high performance libraries which by the way almost never are used when comparing Python with other languages speed wise (kinda fare if you just compare language implementations). Pharo does benefit a lot more from JIT VM as it does not have as many libraries targeting high performance. </div><div><br></div><div>On the last link, I do not know if I understand this correctly at sista side but at python side yes you can take any string and compile to bytecode real time and inject that code back to your live execution. If that is what you mean. Live bytecode compilation can happen at module level too of course , and a string can be anything from one line of code to a collection of modules. The cool thing is that you can sandbox the compiling too so you do not cause any security issues, giving the code access only to a fraction of your state and code. So yes it gives you a lot of room to move around in this department but again there is no JIT VM , at least for CPython.</div><div><br></div><div>PyPy is a JIT VM for python with Slang like language called rpython that can be used to port any language and I spoken with some of it authoer and seem to follow Cog VM vclosely and of coruse expressed admiration of Eliot's work. Unfortunately PyPy had a long track of issues with python libraries that wrapped C code so it never get a lot of traction, but its non the less used by some python coders </div><div><br></div><div>If anyone does mind I would like some pointers on the subject of </div><div>class enumaration </div><div>and reified stack frames </div><div>that were mentioned earlier on, I googled them but did not find enough to clarify what they are in case of Cog VM. </div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Oct 12, 2017 at 12:42 AM Ben Coman <<a href="mailto:btc@openinworld.com">btc@openinworld.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Oct 12, 2017 at 12:38 AM, Dimitris Chloupis <span dir="ltr"><<a href="mailto:kilon.alios@gmail.com" target="_blank">kilon.alios@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br><div dir="ltr">does "become" only exchange references ? Or is it more to it than that ?</div></blockquote><div><br></div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><a href="https://gbracha.blogspot.com.au/2009/07/miracle-of-become.html" target="_blank">https://gbracha.blogspot.com.au/2009/07/miracle-of-become.html</a></div><div><div><br></div><div>Also interesting reading...</div><div><a href="https://clementbera.wordpress.com/2013/08/09/the-cog-vm-lookup/" target="_blank">https://clementbera.wordpress.com/2013/08/09/the-cog-vm-lookup/</a><br></div></div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div>where I can find information about what insance enumeration and reified stack frames are ? </div></div></blockquote><div><br></div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>Lhe last entry here...</div><div><a href="http://www.mirandabanda.org/cogblog/on-line-papers-and-presentations/" target="_blank">http://www.mirandabanda.org/cogblog/on-line-papers-and-presentations/</a></div><div><br></div><div>Also, does Python do Polymorphic Inline Caching?...</div><div><a href="https://en.wikipedia.org/wiki/Inline_caching" target="_blank">https://en.wikipedia.org/wiki/Inline_caching</a></div><div><br></div><div>or bytecode level hotspot recompilation...</div><div><a href="https://clementbera.wordpress.com/2014/01/09/the-sista-chronicles-i-an-introduction-to-adaptive-recompilation/comment-page-1/" target="_blank">https://clementbera.wordpress.com/2014/01/09/the-sista-chronicles-i-an-introduction-to-adaptive-recompilation/comment-page-1/</a><br></div><div><br></div><div>cheers -ben</div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div>Python has methods in gc module (module for its garbage collector) to find objects that point to an object or objects that an object point to . But it has no convenient method to exchange those references . I assume you could do it via an iteration but I never tried it in practice. </div><div><br></div><div>Indeed such feature is essential for live coding.  I will have to add it to my implementation thanks.</div><div><br></div><div>Is this book still relevant for my implementation ?</div><div><a href="http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf" target="_blank">http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf</a><br></div><div><br></div><div><br><div class="gmail_quote"><div dir="ltr">On Wed, Oct 11, 2017 at 6:07 PM Bert Freudenberg <<a href="mailto:bert@freudenbergs.de" target="_blank">bert@freudenbergs.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div class="gmail_quote"><div dir="auto">On Wed 11. Oct 2017 at 16:27, Dimitris Chloupis <<a href="mailto:kilon.alios@gmail.com" target="_blank">kilon.alios@gmail.com</a>> wrote:</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><div><div><div><br></div><div>I am talking about beyond those obvious features that Python has them covered is there anything special the Cog VM is doing live coding wise that I am not aware of ? </div></div></div></div></div></blockquote><div dir="auto"><br></div></div></div><div><div class="gmail_quote"><div dir="auto">Instance enumeration, the become operation, and reified stack frames are features that set Smalltalk apart and enable many of its live coding capabilities. Cog supports these features. Cog was specifically designed to allow fast stack operations in the normal case while still allowing frame manipulation. Spur was designed to make "become" fast, it used to be very expensive.</div></div></div><div><div class="gmail_quote"><div dir="auto"><br></div><div dir="auto">- Bert -</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><div><div><div></div></div></div></div></div></blockquote></div></div></blockquote></div></div></div>
<br></blockquote></div></div></div></blockquote></div>