<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <div class="moz-cite-prefix">On 12/3/12 11:01 AM, Blake McBride
      wrote:<br>
    </div>
    <blockquote
cite="mid:CABwHSOtMJxVjXx3Y=Uuf9-UFH3R9VnbCSdYc4rv_qgQSEg5a_Q@mail.gmail.com"
      type="cite">The interaction would be slower, and the installation
      / integration would be more complex.&nbsp; <br>
    </blockquote>
    I'd like to understand better what sort of calls you wanted to make
    from C to Squeak. I was thinking the reason you wanted Squeak
    included was for some non-trivial processing, so the socket time
    might not matter much. If you are calling Squeak to convert a
    character from upper to lowercase, then interaction would be
    noticeably slower. Could you give an example or two?<br>
    <blockquote
cite="mid:CABwHSOtMJxVjXx3Y=Uuf9-UFH3R9VnbCSdYc4rv_qgQSEg5a_Q@mail.gmail.com"
      type="cite">Back then, all we did was install the exe on the
      server. &nbsp;Client computer connection merely loaded the latest exe.
      &nbsp;No need to startup another app and share a socket, etc.. &nbsp;This
      would never work in instances where you have 100 users all on
      different machines. &nbsp;You'd have one conflict after another.</blockquote>
    So, in your ideal world, where did Squeak get installed? Bundled in
    the C app on each client? As a separate app on each client? Once on
    a server somewhere?<br>
    <blockquote
cite="mid:CABwHSOtMJxVjXx3Y=Uuf9-UFH3R9VnbCSdYc4rv_qgQSEg5a_Q@mail.gmail.com"
      type="cite">
      <div>
        <br>
      </div>
      <div>Also, doing it in a client/server motif as you describe means
        that any global state information made by one call would affect
        other calls. </div>
    </blockquote>
    Why would there be any global information? If client #27 sent a
    request to the squeak app, the squeak app could limit its response
    to data that client would need to know.<br>
    <blockquote
cite="mid:CABwHSOtMJxVjXx3Y=Uuf9-UFH3R9VnbCSdYc4rv_qgQSEg5a_Q@mail.gmail.com"
      type="cite">
      <div>&nbsp;In true reentrancy each recursive call would essentially get
        their own VM.</div>
    </blockquote>
    They could, but what's in the VM that they really need a separate
    copy of?<br>
    <br>
    Cheers,<br>
    Bob<br>
    <blockquote
cite="mid:CABwHSOtMJxVjXx3Y=Uuf9-UFH3R9VnbCSdYc4rv_qgQSEg5a_Q@mail.gmail.com"
      type="cite">
      <div><br>
      </div>
      <div>Thanks.</div>
      <div><br>
      </div>
      <div>Blake</div>
      <div><br>
      </div>
      <div><br>
        <br>
        <div class="gmail_quote">On Mon, Dec 3, 2012 at 9:39 AM, Bob
          Arning <span dir="ltr">&lt;<a moz-do-not-send="true"
              href="mailto:arning315@comcast.net" target="_blank">arning315@comcast.net</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"> <font face="Georgia">Seems
                like you could do that fairly easily without </font>making
              the VM re-entrant (whatever that might mean/entail). If
              you thought of your Squeak app and your C app as two
              computers on a network, they could send each other
              requests and responses all day long. No magic required.<br>
              <br>
              Cheers,<br>
              Bob
              <div>
                <div class="h5"><br>
                  <br>
                  <div>On 12/3/12 10:10 AM, Blake McBride wrote:<br>
                  </div>
                  <blockquote type="cite"><span
style="border-collapse:collapse;color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px">Greetings,

                      <div><br>
                      </div>
                      <div>I tried to integrate Squeak to a C based
                        application more than six years ago. &nbsp;The
                        project failed because we were not able to have
                        our application call Squeak, then have Squeak
                        call the application, and then the application
                        call Squeak again recursively. &nbsp;An analysis of
                        the Squeak VM revealed a kernel design
                        consisting of a lot of global variables - quite
                        unnecessarily. &nbsp;The unnecessary use of global
                        variables over a localized structure for example
                        unnecessarily prevented the use of Squeak as an
                        extension language (unless you had no
                        recursion). &nbsp;I spent several days trying to
                        re-structure the Squeak kernel but I kept
                        running into problems and just ran out of time.&nbsp;</div>
                      <div><br>
                      </div>
                      <div>As a side note, that company I was with ended
                        up making a lot of investment in Scheme because
                        we were easily able to integrate that language
                        with our application. &nbsp;Now, not only is Scheme
                        used heavily within that company but many of
                        their clients use it too to customize their
                        application.</div>
                      <div><br>
                      </div>
                      <div>This brings me to my question, is COG
                        reentrant? &nbsp;If not, as the author of COG, I
                        would think it relatively easy to restructure it
                        to be so. &nbsp;Such a design capability can make a
                        huge difference to COG's acceptance to many. &nbsp;It
                        may even be the reason to switch to COG.</div>
                      <div><br>
                      </div>
                      <div>Just sharing some thoughts. &nbsp;Thanks.</div>
                      <div><br>
                      </div>
                      <div>Blake McBride</div>
                    </span><br>
                    <div class="gmail_quote">On Sun, Dec 2, 2012 at 7:55
                      PM, Eliot Miranda <span dir="ltr">&lt;<a
                          moz-do-not-send="true"
                          href="mailto:eliot.miranda@gmail.com"
                          target="_blank">eliot.miranda@gmail.com</a>&gt;</span>
                      wrote:<br>
                      <blockquote class="gmail_quote" style="margin:0 0
                        0 .8ex;border-left:1px #ccc
                        solid;padding-left:1ex">...in&nbsp;<span
                          style="font-size:14px;font-family:arial,sans-serif"><a
                            moz-do-not-send="true"
                            href="http://www.mirandabanda.org/files/Cog/VM/VM.r2628"
                            target="_blank"><font color="#1155cc">http://www.mirandabanda.</font>org/files/Cog/VM/VM.r2628</a>.</span>
                        <div> <font color="#000000" face="arial,
                            sans-serif"><br>
                          </font></div>
                        <div><font color="#000000" face="arial,
                            sans-serif">These fix a bug with pc mapping
                            that could cause the Vm to crash on simple
                            loops containing arithmetic on constants
                            (e.g. 1 to: 20 do: [:i| 1=1]). &nbsp;They also
                            cause the instantiation primitives to pop
                            all their arguments rather than assume their
                            argument count is 0 or 1. &nbsp;More change info
                            available in the directory.<span><font
                                color="#888888"><br>
                              </font></span></font><span><font
                              color="#888888">-- <br>
                              best,
                              <div>Eliot</div>
                              <br>
                            </font></span></div>
                        <br>
                        <br>
                        <br>
                      </blockquote>
                    </div>
                    <br>
                    <br>
                    <fieldset></fieldset>
                    <br>
                  </blockquote>
                  <br>
                </div>
              </div>
            </div>
            <br>
            <br>
            <br>
          </blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">
</pre>
    </blockquote>
    <br>
  </body>
</html>