The following is my experience on 64-bit RedHat Enterprise Linux and emacs 23.1. I am slowly learning the meaning of `bleeding edge' hardware & software.
*64-bit*
I cannot link to 64-bit libraries. I had to use the 32-bit versions of gsl and ffi libraries. I don't think I had this problem with sbcl1.0.34. I am not sure what is the root cause of this. I suspect something with cffi and latest sbcl1.037. But I don't know how to test this.
(btw, to compile gsl for 32 bit, I used the configure switch `./configure -CFLAGS=-m4')
*gsll/mathematical/complex.lisp*
The file fails to compile. The error is:
warning: Asserted type SB-SYS:SYSTEM-AREA-POINTER conflicts with derived type (VALUES (COMPLEX DOUBLE-FLOAT) &OPTIONAL).
I guess SBCL is picky about something, but I really wish I understood what was going under GSLL's hood (those macros are huge).
But that is only part of the story. I can evaluate a `defmfun' form (such as (defmfun cx-add ...)), but I cannot execute it. For example, (gsl::cx-add #C(1d0 2d0) #C(3d0 4d0)) will throw an error:
The value #C(1.0d0 2.0d0) is not of type SB-SYS:SYSTEM-AREA-POINTER. [Condition of type TYPE-ERROR]
I looked at fsbv/examples.lisp (see complex-add), and don't understand why one works and the other does not.
*testing*
Testing produces more failures with the 32-bit version than with the 64-bit one. The testing results can be improved somewhat by doing: (let ((lisp-unit:*epsilon* 1d-6)) (lisp-unit:run-tests))
resulting in TOTAL: 1432 assertions passed, 29 failed, 9 execution errors.
Admittedly, this is a dubious way of improving the testing score :-) So caveat emptor :-)
*fsbv init.lisp*
Here is a little patch to load libraries. Notice the missing 64-bit locations. These are banished for now.
(cffi:define-foreign-library libffi (:darwin (:or "/opt/local/lib/libffi.dylib" "/sw/lib/libffi.dylib" "/usr/local/lib/libffi.dylib")) (:unix (:or "/usr/local/lib/libffi.so.0" "/usr/local/lib/libffi.so" "/usr/lib/libffi.so.0" "/usr/lib/libffi.so")) (t (:default "libffi")))
(cffi:use-foreign-library libffi)
(I cannot push patches to git as I am behind the firewall, and even the http protocol does not work)
Cheers,
Mirko