>>>>> "Rupert" == Rupert Swarbrick <rswarbrick at gmail.com> writes:
Rupert> Raymond Toy <toy.raymond at gmail.com> writes:
>> This declaim didn't make any sense to me either, but now I remember
>> that, unlike all others, gcl loads sys-proclaim.lisp that proclaims
>> lots of functions. Perhaps this is the problem, and sys-proclaim
>> needs to be regenerated. I don't have gcl available right now, but I
>> think you can do "make sys-proclaim" in the src directory to have gcl
>> update sys-proclaim.lisp.
Rupert> AHAH! Thank you very very very much! I've been so confused about this.
Rupert> You're right. What was going wrong was that the sys-proclaim.lisp that
Rupert> was checked into the repository proclaimed COMPSPLT to have ftype
Rupert> (function (t) t). Adding a bogus declaim at the top of compar.lisp
Rupert> cancelled out its effects (but obviously wasn't the right fix!)
Rupert> I've just pushed a patch that deletes references to COMPSPLT from
Rupert> sys-proclaim.lisp. I tried "make sys-proclaim" and there are some pretty
Rupert> major changes to the file. Unfortunately, when I did it again, I got
Rupert> some more major changes. After three of four goes with the file getting
Rupert> bigger each time and with no fixed point, I gave up and manually edited
Rupert> the original file. Is there an "official" way to do this?
I wrote that stuff long ago and I don't really remember anymore since
I rarely ever build with gcl anymore (lack of a recent working gcl on
any of my machines).
However, I do think you need to clean out all fasls and run make
sys-proclaim. This will cause maxima to be built completely from
scratch, which, I think, notifies the compiler of everything. Then
sys-proclaim should be correct. (I should have at least put better
comments somewhere.)
I also tried to change the output from the gcl default that lumps all
similar function types into one. Instead, it tries to output one entry
per function. This was supposed to reduce the amount of churn when
sys-proclaim.lisp is updated. Don't know if that still works or not.
sys-proclaim was also supposed to be built automatically, but perhaps
that doesn't work anymore or was too troublesome to do on every
build. (You have to at least build twice: Once to get sys-proclaim
and again to have it actually do something.)
Note also that the sys-proclaim helps maxima run quite a bit faster
than without. I don't remember how much speed up it was but it was
significant, probably more than 5% on the testsuite. So deleting
things from sys-proclaim can slow down maxima, depending on how hot
those functions are. There might be some messages on the list about
this from Camm (gcl maintainer) who may have given some stats.
Ray