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
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.
standard- instance or whatever that class is called. /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:37 < no-defun-allowed> What is happening is that the classes are being linked as subclasses of
22:38 < no-defun-allowed> https:/
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