<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
    <title></title>
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Hi Phil,<br>
    <br>
    Today I tried to understand the problems you ran into. The
    attachments are the result of this. To try this, Start Cuis without
    the recent changes (i.e. #3866), then load OMeta2Tests.pck.st. Now
    load OMetaStuff*.cs.st and UnsavedChangesTo-OMeta2Extensions*.cs.st
    attached here. Your tests now pass, and performance seems as usual.
    I suggest updating your repo with this.<br>
    <br>
    My changes do two things. One is to avoid non local returns in
    handler blocks. The other one is about a few places where you did [
    :exception | exception signal ] as the signal handler. Exceptions
    can only be signaled once! I changed them to do [ :exception |
    exception pass ]. This was breaking the exception system if the
    recent changes were loaded.<br>
    <br>
    Finally, I suggest adding yet another change set to Cuis that could
    break existing but wrong code: 3924*.cs.st attached throws an error
    if an exception is signaled twice.<br>
    <br>
    Please review.<br>
    Thanks,<br>
    <pre class="moz-signature" cols="72">-- 
Juan Vuletich
<a class="moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org">www.cuis-smalltalk.org</a>
<a class="moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a class="moz-txt-link-freetext" href="https://github.com/jvuletich">https://github.com/jvuletich</a>
<a class="moz-txt-link-freetext" href="https://www.linkedin.com/in/juan-vuletich-75611b3">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
@JuanVuletich</pre>
    <br>
    <br>
    On 10/15/2019 9:19 PM, Phil B wrote:
    <blockquote
cite="mid:CAMJMOehrZy6tUpUEw45wK5fgn7CCxM9d9Kw-C9zkvzxMZWs-ug@mail.gmail.com"
      type="cite">
      <div dir="ltr">Juan,
        <div><br>
        </div>
        <div>It looks like 3923 still alters Exception behavior which
          may break some existing code.  (granted, in rare situations) 
          I was working on adding a #nonLocalReturn: method and nothing
          was working so I went back to a clean 3923 image and
          immediately saw why.  To reproduce:</div>
        <div><br>
        </div>
        <div>1) Download <a moz-do-not-send="true"
            href="https://github.com/pbella/OMeta-Cuis">https://github.com/pbella/OMeta-Cuis</a></div>
        <div>2) Open a fresh 3923 image</div>
        <div>3) Be sure to CLOSE the Transcript window for performance
          reasons.  There will be a <cough> few warning messages
          emitted.  (~36k of them[1])</div>
        <div>4) Open a file browser</div>
        <div>5) Navigate to the repo directory and install <a
            moz-do-not-send="true" href="http://OMeta2Tests.pck.st">OMeta2Tests.pck.st</a></div>
        <div>6) Open a Browser window</div>
        <div>7) Navigate to OMeta2>>char (browsing any OMeta
          method will probably do it since, in order to do syntax
          highlighting for the browser, it has to fire off an OMeta
          parser which in turn uses exception blocks with non-local
          returns extensively)</div>
        <div><br>
        </div>
        <div>At this point your image should hang while working its way
          to OOM.  I'd venture that one or more of OMeta's assumptions
          about exceptions are no longer valid.  OMeta is my problem to
          fix but I just wanted to make you aware that even the
          'quieter' code in 3923 can have both performance and
          functional impact.</div>
        <div><br>
        </div>
        <div>[1] A attempted full rebuild of my dev image resulted in
          >2M messages before I killed it and disabled the message.</div>
        <div><br>
        </div>
        <div>Thanks,</div>
        <div>Phil</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Mon, Oct 14, 2019 at 8:41
          AM Juan Vuletich via Cuis-dev <<a moz-do-not-send="true"
            href="mailto:cuis-dev@lists.cuis.st">cuis-dev@lists.cuis.st</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;">Hi Folks,<br>
          <br>
          As you have already seen in a separate thread, yesterday I
          pushed <br>
          changes to Exceptions. While the changes are valuable,
          especially in the <br>
          discussion they have triggered, and in showing an opportunity
          to improve <br>
          non-trivial parts of the system, I pushed them without
          required previous <br>
          discussion, and a better analysis of the immediate negative
          consequences <br>
          in code breakage. I made this mistake all by myself, in a rush
          to try to <br>
          get the code out even if I didn't have the time to do it in a
          better <br>
          way. I apologize for this.<br>
          <br>
          I also want to thank you all, especially Hernán, Phil, and
          Andrés, for <br>
          the constructive attitude in which you engaged in the relevant
          <br>
          discussion on how to better deal with the issue, instead of
          focusing on <br>
          the annoyance, I'm sure we'll be able to improve the system
          after this <br>
          discussion.<br>
          <br>
          To avoid code breakage while we work out what we collectively
          want to do <br>
          with the method-returns-in-exception-handlers issue, I just
          pushed <br>
          update #3923 that allows them again, and just logs a note to
          the <br>
          Transcript. I did this instead of taking back all the changes
          because <br>
          they are not trivial, and they will be useful for trying
          different <br>
          approaches.<br>
          <br>
          Thanks,<br>
          <br>
          -- <br>
          Juan Vuletich<br>
          <a moz-do-not-send="true" href="http://www.cuis-smalltalk.org"
            rel="noreferrer" target="_blank">www.cuis-smalltalk.org</a><br>
          <a moz-do-not-send="true"
            href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev"
            rel="noreferrer" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a><br>
          <a moz-do-not-send="true" href="https://github.com/jvuletich"
            rel="noreferrer" target="_blank">https://github.com/jvuletich</a><br>
          <a moz-do-not-send="true"
            href="https://www.linkedin.com/in/juan-vuletich-75611b3"
            rel="noreferrer" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a><br>
          @JuanVuletich<br>
          <br>
          -- <br>
          Cuis-dev mailing list<br>
          <a moz-do-not-send="true" href="mailto:Cuis-dev@lists.cuis.st"
            target="_blank">Cuis-dev@lists.cuis.st</a><br>
          <a moz-do-not-send="true"
            href="https://lists.cuis.st/mailman/listinfo/cuis-dev"
            rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
        </blockquote>
      </div>
    </blockquote>
    <br>
  </body>
</html>