<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, May 23, 2014 at 12:47 PM, stepharo <span dir="ltr">&lt;<a href="mailto:stepharo@free.fr" target="_blank">stepharo@free.fr</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <br>
    <div>On 20/5/14 04:41, Rick Kitts wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">Hello. I was
        wondering if anyone could point me to or otherwise suggest some
        best practices for working on Kernel code. I’m futzing about
        with the Duration class (in the interest of fixing 13215) </div>
    </blockquote>
    Thanks!<br>
    <br>
    <blockquote type="cite">
      <div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">and have
        discovered that it’s really easy to crash Pharo if I break that
        class. I assume there are other classes that would exhibit the
        same behavior.</div>
    </blockquote>
    Yes like Array or OrderedCollection.<br>
    <br>
    We are working on a bootstrap of pharo and it could help for brain
    surgery (but in that case the system may simply not build at all).<br>
    So the suggestion of Ron to use ChangeSet is a good one. <br></div></blockquote><div><br></div><div>But it is also possible to do it with Monticello, using &quot;updates&quot;, which are really baseline versions of a package.   The idea is to make the necessary changes that support your next, potentially suicidal step, commit a baseline for that support, and then commit the change that depends on the support.  The Monticello update scheme ensures that the baseline is loaded before your second commit.  This process can be repeated as many times as necessary to make a sequence of interdependent changes happen in order.</div>
<div><br></div><div>For example, I&#39;ve just added multiple bytecode support to Squeak trunk.  That needed some code on Squeak&#39;s BytecodeEncoder and subclasses, which are in the Compiler package, *before* loading the Kernel code that depended on that BytecodeEncoder support.  If things don&#39;t happen in the right order the compiler, debugger, and tool facilities such as references &amp; assignments would break.</div>
<div><br></div><div>By all means use the change list for crash recovery, or even change sets.  But unlike change sets, Monticello&#39;s updates provide support for any number of steps.  Typically with a change set you have to manually reorder things.  I&#39;ve used change sets a lot in the past to pull off a number of &quot;adventurous&quot; system changes.  But now I&#39;m familiar with Monticello it feels like its by far the best way.</div>
<div>  </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
    <br>
    Now once I got change that crash (just a tight endless loop) as soon
    as you change anything and there you have to rollback and turn
    around the self referencing aspect. <br>
    <br>
    <blockquote type="cite">
      <div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br>
      </div>
      <div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">I suppose I
        could just be really cautious and save my image after every
        change but that seems so error prone that I’m hoping that there
        are idiomatic ways of working on kernel code (beyond just save
        ones image early and often) so I don’t lose work. I’m asking
        because the naive solution (copy the original class, modify it
        to suit, delete the original and rename the new class to the
        original) of course doesn’t work.</div>
      <div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br>
      </div>
      <div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">TIA for any
        suggestions or assistance and apologies in advance if this is
        RTFM, I didn’t see anything (didn’t look very hard either
        though).</div>
      <div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br>
      </div>
      <div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">—Rick</div>
      <div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br>
      </div>
    </blockquote>
    <br>
  </div>

</blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div></div>