- Nick Levine aqy-YuQg+Lki2tvVhJE1T4mvbN@choyvp.tznar.bet [2012-05-23 10:05:10 +0100]:
#+clisp (defun abi-version () (car (system::version)))
is incompatible with
(abi-version &optional object)
thanks.
(defun abi-version (&optional (object nil supplied-p)) (if supplied-p (handler-case (progn (system::version (list object)) t) (error (e) nil)) (car (system::version))))
It's not at all clear to me from reading CDR document 10 http://cdr.eurolisp.org/document/10/compiled-file-p.html what an ABI version is (as in "the argument identifies an ABI version which can be consumed by the implementation"). Further examples of abi-version (in particular, one which shows a possible input or output value rather than just piping the two together) would make this clearer.
in clisp 2.49: (abi-version) ==> 20080430 (abi-version 20080430) ==> T (abi-version "foo") ==> NIL
in a hypothetical lisp implementation MyCL v7 with a native compiler: (abi-version) ==> :x86_64-7 ; or, say, 64007. (abi-version :x86_64-7) ==> T (abi-version :x86_64-6) ==> T ; if files compiled by v6 are acceptable for v7 (abi-version :x86_64-8) ==> NIL ; since forward compatibility cannot be assumed (abi-version :sparc-7) ==> NIL ; since native compilation is usually architecture-dependent (abi-version "bar") ==> NIL (compile-file "foo.lisp" :output-file (make-pathname :directory (list (lisp-implementation-type) (princ-to-string (abi-version))))) ==> #P"CLISP/20080430/foo.fas" ; or ==> #P"MyCL/x86_64-7/foo.fas" ; or