<div dir="ltr">I see it and use it a lot. Maybe that's not significant to you, but it's significant to me.<div><br></div><div>Zach</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Dec 8, 2020 at 2:51 PM Jean-Claude Beaudoin <<a href="mailto:jean.claude.beaudoin@gmail.com">jean.claude.beaudoin@gmail.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"><div dir="ltr"><div><br></div><div>Hello Pros of Common Lisp,</div><br>Here is my attempt at starting a significant (and hopefully useful) debate on a subject squarely about Common Lisp and its internals.<br><br>My main stance here is to state that I have yet to see, in a significant application, any use of functions #'cl:make-instance-obsolete and #'cl:update-instance-for-redefined-class and of the underlying machinery that support the <span id="gmail-m_-5603527621035110568:6uj.27">remorphing</span> of instances following a class redefinition (through a subsequent cl:<span id="gmail-m_-5603527621035110568:6uj.28">defclass</span> most likely). I can state the same thing about #'cl:update-instance-for-different-class and #'cl:change-class.<br><br>The machinery required of any CL implementation to properly support those functions (mentioned here above) is quite significant in its complexity and usually imposes a <span id="gmail-m_-5603527621035110568:6uj.29">sizeable</span> performance penalty on the speed of any instance slot access.<br><br>A different choice of class redefinition semantics can lead to an implementation of <span id="gmail-m_-5603527621035110568:6uj.30">CLOS</span> with much reduced instance slot access overhead.<br><br>The necessity of supporting instance <span id="gmail-m_-5603527621035110568:6uj.31">remorphing</span> should therefore be well motivated by very significant gains in application code performance (in speed and/or size and/or expressiveness power).<br><br>Can anyone of you point me to some evidence of such application level usefulness?<br>Is there any notorious <span id="gmail-m_-5603527621035110568:6uj.32">usecase</span> of this (instance <span id="gmail-m_-5603527621035110568:6uj.33">remorphing</span>) since its inclusion into ANSI CL?<br><br><br>By the way, at the bottom of the entry about #'cl:change-class in the text of the CL standard, one can find a "Notes:" section that starts with this sentence: "The generic function change-class has several semantic difficulties." And this was written in the context of a single-threaded implementation, as ANSI-CL limited itself. I bet that almost all currently significant CL implementations are now multi-threaded, therefore the "several semantic difficulties" are greatly and gravely compounded. In my opinion, this makes proper motivation of usefulness all the more imperious. What do you think?<br><br><br></div>
</blockquote></div>