<br><br><div class="gmail_quote">On Wed, Sep 29, 2010 at 10:22 AM, Andreas Raab <span dir="ltr">&lt;<a href="mailto:andreas.raab@gmx.de">andreas.raab@gmx.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br>
On 9/29/2010 9:36 AM, Eliot Miranda wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
    See the recordMouseEvent() and its friends (sqNextEventPut,<br>
    eventBuffer[1024] ...) in sqWin32Window, for better understanding my<br>
    point :)<br>
<br>
<br>
Which makes my point well.  These are simply maintaining a queue.  If<br>
one has callbacks then the bulk of the Windows event handling system can<br>
be lifted up into the image.  This is what Vassili Bykov did in Newspeak<br>
above my Alien callbacks.  In Newspeak the Windows MainWndProc is a<br>
callback:<br>
</blockquote>
<br></div>
Thus losing any level of platform abstraction. A bad trade-off, IMO.<br></blockquote><div><br></div><div>The platform abstraction merely moves from the VM to classes in the image.  But it does mean that one can properly implement Windows event semantics (things like query quit events) that the queue prevents.  And it means that the VM gets simpler and complexity is handled by better facilities (in Smalltalk with its many advantages for creating and maintaining abstractions with concrete variant implementations).</div>
<div><br></div><div>But you and I have had this discussion a number of times and I take your point about the VM maintaining a black-box abstraction boundary whereas the in-image implementation is in theory porous.  As I&#39;ve said before this doesn&#39;t strike me as that important when Smalltalk has had boundary violators such as instVarAt:[put:] for ever and they are rarely abused.  If one were to implement a native GUI event interface in Smalltalk using callbacks one would have to police the abstraction boundary.  But that&#39;s easily done, and there are other benefits</div>
<div>- the VM, being simpler, gets more longevity since changing the event interface doesn&#39;t imply a VM change</div><div>- the system, having native interfaces, can support each platform&#39;s facilities in full instead of providing the lowest common denominator</div>
<div><br></div><div>So IMO it is a good trade-off.</div><div><br></div><div>best</div><div>Eliot</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Cheers,<br><font color="#888888">
  - Andreas<br>
</font></blockquote></div><br>