[fset-devel] Fix for SBCL 1.0.53

Nikodemus Siivola nikodemus at random-state.net
Thu Nov 10 13:55:33 UTC 2011


As of recently SBCL's fixnums are 63 bits long on 64-bit platforms --
which breaks FSET. Sticking the following definitions into port.lisp
in place of the current ones should make things better.

...but I didn't actually verify that the rest of FSET works sanely
with these values. (I'm not on fset-devel, so CCing Scott directly and
Xach for Quicklisp's convenience.)

(defconstant Tuple-Key-Number-Size
  (ecase (integer-length most-positive-fixnum)
    (62 41)     ; SBCL, 64-bit
    (61 40)	; ECL, 64-bit
    (60 40)	; SBCL, OpenMCL, Scieneer CL, 64-bit
    (48 32)	; CLISP, 64-bit
    (31 18)	; Symbolics L-machine, I-machine
    (29 17)	; Allegro, CMUCL, SBCL, LispWorks (most), ECL, 32-bit
    (24 15)	; CLISP, 32-bit
    (23 14))	; LispWorks 4 on Linux
  "This limits the number of tuple-keys that can exist in a session.")

(defconstant Tuple-Value-Index-Size
  (ecase (integer-length most-positive-fixnum)
    (62 21)
    (61 21)
    (60 20)
    (48 16)
    (31 13)
    (29 12)
    (24 9)
    (23 9))
  "This limits the number of key/value pairs in any tuple.")

Cheers,

 -- Nikodemus




More information about the fset-devel mailing list