Re: Garbage collector - ccl:terminate (memory stuff)
Grégory Vanuxem <[email protected]> Wed, 1 May 2024 11:59:15 +0200
| Newsgroups | gmane.lisp.openmcl.devel |
|---|---|
| Message-ID | <CAHnU2dbKbjhd2FZMG+WUXoUc8Bim2G4xHtJdBwNqaVvYnoaHsg@mail.gmail.com> |
Le mer. 1 mai 2024 =C3=A0 11:58, Gr=C3=A9gory Vanuxem <[email protected]>= a =C3=A9crit : > > Hello Rainer, > > Le sam. 27 avr. 2024 =C3=A0 14:31, Rainer Joswig <[email protected]> a =C3= =A9crit : > > > > > > > > Am 27.04.2024 um 13:41 schrieb Gr=C3=A9gory Vanuxem <[email protected]= m>: > > > > > > As a last note, there is a strange "routine" in the FRICAS-LISP > > package (BOOT, the interpreter and algebra libraries use it) that I do > > not really understand, wouldn't it be related? I can eventually "play" > > with this piece of code (some code parts are cutted below): > > > > (make-package "FRICAS-LISP" > > :use (list (or (find-package "COMMON-LISP") > > "LISP"))) > > > > Here is the piece of code I do not totally understand and if it has > > effect on CCL symbols that prevents me to define the ccl:terminate or > > ccl::terminate method on jlref object: > > > > ;;; We use uninterned symbols because at this point we do not > > ;;; want to add symbols to FRICAS-LISP > > (let ((#1=3D#:ls nil)) > > (do-symbols (#2=3D#:el "FRICAS-LISP") (setf #1# (cons #2# #1#))) > > (mapcar (lambda (#3=3D#:x) (export (list #3#))) #1#) > > ) > > > > > > > > The form above could be replaced by: > > > > (mapcar #'export (apropos-list "" "FRICAS-LISP")) > > > > It simply exports all symbols in the package "FRICAS-LISP" from the cur= rent package at that point, avoiding interning new symbols by the code itse= lf. > > > > > > If one want to control from where to export, then we can use this: > > > > (mapcar #'(lambda (#1=3D#:fricas-lisp-symbol) (export #1# "FRICAS-LISP"= )) > > (apropos-list "" "FRICAS-LISP")) > > > > > > Excellent and more readable to me. I will do some tests, I like this > simplification. > > - Greg