I just thought I'd jot down some notes about cross-compilation from
non-cmucl-derived hosts... there are two problems I'm currently
experiencing, both (I think) sbcl problems (I've also reported about 5
ANSI-compliance bugs to the OpenMCL people, so don't despair :-)
The first is to do with (I think) constant folding and byte-specifiers.
The representation of (byte 4 5) is implementation-dependent; while
cmucl and sbcl represent this as (4 . 5), clisp uses a structure, and
OpenMCL a number (#b111100000, to be specific). Then, during the
cross-compilation phase, we try to take the CAR of these things, and
lose. At least, that's my initial diagnosis... I'm not sure yet what
needs to be done to get round this.
The second regards treatment of floats... the good news is that OpenMCL
has single-float == IEEE single and double-float == IEEE double. The bad
news is the following:
* (integer-decode-float 5.877472e-39) -> 8388608, -150, 1
> (integer-decode-float 5.877472e-39) -> 4194304, -149, 1
And the code in cross-float that tries to get the bits
(SINGLE-FLOAT-BITS) chokes on an assertion.
Sorry, did I say two problems? I meant three problems. Well, this one
hasn't bitten yet, but it probably will eventually. In make-host-2, I'm
getting undefined function warnings for CCL::%SET-SLOT-VALUES, which is
part of the *host's* make-load-form-saving-slots machinery. Should I
worry about this?
PS: If anyone else wants a go, I'll make my current patches against
openmcl and sbcl available...
Jesus College, Cambridge, CB5 8BL +44 1223 510 299
http://www-jcsu.jesus.cam.ac.uk/~csr21/ (defun pling-dollar
(str schar arg) (first (last +))) (make-dispatch-macro-character #\! t)
(set-dispatch-macro-character #\! #\$ #'pling-dollar)