Comment 4 for bug 1903413

Revision history for this message
MichaƂ "phoe" Herda (phoe-krk) wrote :

Yes, I see now; I remember that this issue was discussed previously, and the MOP does not specify whether unreferenced subclasses are allowed to be removed or whether references are strong.

I know that e.g. CCL does not suffer from this kind of memory leak, while ECL seems to copy SBCL's behavior. But this in turn might be a CCL bug because (make-instance 'standard-class) there does *NOT* seem to push the newly created class into (class-direct-subclasses (find-class 'standard-object)); is this legal?

Regarding the "generally speaking" points - thanks for the explanation, I got slightly confused and a comment from no-defun-allowed on #sbcl helped me:

22:37 < no-defun-allowed> Oh, I remember this.
22:37 < no-defun-allowed> What is happening is that the classes are being linked as subclasses of
                          standard-instance or whatever that class is called.
22:38 < no-defun-allowed> https://gitlab.com/cal-coop/netfarm/netfarm/-/blob/master/Code/Objects/MOP/netfarm-class.lisp#L180 adds methods to not do that for Netfarm classes.
22:39 < phoe> hmmmmmmm
22:40 < no-defun-allowed> So they are live unless you make sure those references aren't made.
22:40 < phoe> yes, I see
22:41 < phoe> standard-object, yes