<div dir="ltr"><div>Hello Faré,</div><div><br></div><div>I had you and ASDF somewhat in mind when I wrote the original post.<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Dec 8, 2020 at 3:23 PM Faré <<a href="mailto:fahree@gmail.com">fahree@gmail.com</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">I once used update-instance-for-redefined-class in ASDF, when I was<br>
trying to make a smooth upgrade from ASDF 1 to ASDF 2. The problem I<br>
found is that proper support for class redefinition requires the<br>
cooperation not only of the underlying object system, but also of all<br>
the parts of the implementation. It also requires more deterministic<br>
guarantees on what code gets inlined and what code doesn't get<br>
inlined.<br></blockquote><div><br></div><div>Inlining, what a can or worms!<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
In ASDF 3, I threw the towel, and decided I could never get the OTHER<br>
parts of the system to cooperate (aka ASDF extensions for me, but also<br>
all the extensions to all existing programs being redefined), so I<br>
stopped using update-instance-for-redefined-class and instead went for<br>
deleting/overwriting/resetting functions, generic functions, and, in<br>
extreme cases, packages.<br></blockquote><div><br></div><div>I followed from somewhat afar your "acharnement" in that area, with some bewilderment I'd say.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
I would love to see languages with better support for redefinition.<br>
Like unison, or darklang. Unhappily,<br>
update-instance-for-redefined-class, while very cool, is *not enough*.<br></blockquote><div><br></div><div>My point is that it is already too much.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
But in relatively small systems that are long-running, with everyone<br>
cooperating, like they had in the 1980s, it was probably sufficient.<br>
And it is a marvelous tool. If you control the entire application and<br>
want images to survive code evolution.<br></blockquote><div><br></div><div>In the late 1980s, all the Lisp Machines I touched were running ZetaLisp with Flavors as OO extension.</div><div>And we were dropping CLTL1 version of Common Lisp on top of them before our application code.</div><div>So, no CLOS.  That came later...<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• <a href="http://fare.tunes.org" rel="noreferrer" target="_blank">http://fare.tunes.org</a><br>
Taxonomy is the death of science — A. N. Whitehead<br>
<br></blockquote><div><br></div><div>BTW, I just received the latest book by Denis Robert titled "LARRY ET MOI, comment BLACKROCK nous aime, nous surveille et nous détruit" and I dropped it on my pile of books to read soon. Thought you'd be amused to know, somehow.<br></div><div><br></div></div></div>