<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, May 2, 2022 at 6:26 AM Marcel Taeumel <<a href="mailto:notifications@github.com">notifications@github.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"> <p></p>
<blockquote>
<p dir="auto">Well, this would be trivial to make backwards compatible were the necessary old image fix only<br>
PasteUpMorph disableDeferredUpdates: true.</p>
</blockquote>
<p dir="auto">I think it might already be since the morphic canvas is set to <code class="gmail-notranslate">nil</code> when shutting down the image.</p>
<blockquote>
<p dir="auto">introduce a new flag bit in the image flags</p>
</blockquote>
<p dir="auto">Wouldn't this decrease compatibility of newer images with older VMs?</p></blockquote><div class="gmail_default" style="font-size:small">But that's not a relevant concern.  A new image can always be run on an updated VM.  The issue is to *not break older images*.  A VM on its own is not an application; it is analogous to a real piece of hardware.  An image, on the other hand, *is* an application.  New VMs should *never* change the semantics of older images with which they're compatible.  That's akin to a newer processor running older binaries incorrectly; entirely unacceptable.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Here's what the Go designers have to say about the issue in the latest CACM:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">"A final kind of consistency is that of the language and libraries over time. For the first few years of Go's existence, we tinkered with and adjusted it in each weekly release. Users often had to change their programs when updating to a new Go version. Automated tools reduced the burden, but manual adjustments were also necessary. Starting with Go version 1, released in 2012, <b>we publicly committed to making only backwards-compatible changes to the language and standard library</b>, so that programs would continue running unchanged when compiled with newer Go versions. That commitment attracted industry and has encouraged not just long-lived engineering projects but also other efforts, such as books, training courses, and a thriving ecosystem of third-party packages." (my emphasis added)</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">This is a rational approach to backwards compatibility, and is one most Smalltalk VMs, and certainly all the ones I've been associated with, have maintained.  It is OK to change the VM to no longer support older images; it is *not* ok to break older images in a VM upon which those images still run.</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">

<p style="font-size:small;color:rgb(102,102,102)">—<br>Reply to this email directly, <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/627#issuecomment-1114878968" target="_blank">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AIJPEWYWNAVJSGIQGQEKFWTVH7JXTANCNFSM5URRNFFQ" target="_blank">unsubscribe</a>.<br>You are receiving this because you are subscribed to this thread.<img src="https://github.com/notifications/beacon/AIJPEWZTVEQ42FJR6CNYNV3VH7JXTA5CNFSM5URRNFF2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOIJZ3H6A.gif" height="1" width="1" alt=""><span style="color:transparent;font-size:0px;display:none;overflow:hidden;opacity:0;width:0px;height:0px;max-width:0px;max-height:0px">Message ID: <span><OpenSmalltalk/opensmalltalk-vm/issues/627/1114878968</span><span>@</span><span>github</span><span>.</span><span>com></span></span></p>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div></div>