As those of you who follow cmucl-imp will know, there's been a
discussion about the interpretation of COMPILE-FILE-PATHNAME's specified
behaviour. The controversy, if controversy there be, revolves around
the "defaults for the output-file":
The defaults for the output-file are taken from the pathname that
results from merging the input-file with the value of
*default-pathname-defaults*, except that the type component should
default to the appropriate implementation-defined default type for
Currently, in a call of the form
(COMPILE-FILE-PATHNAME "foo.lisp" :OUTPUT-FILE <anything>)
SBCL returns <anything>, and outputs the fasl to the file named by it.
The argument for changing this behaviour lies in the plural of
"defaults" in the quoted paragraph above; the idea being that rather
than a default argument, there are default pathname components and the
supplied output-file argument is merged (as in MERGE-PATHNAMES) against
So I have a patch to implement the changed behaviour, but before
committing it I do want to solicit opinions, as it potentially breaks
things (for instance, it broke the logic in src/cold/shared.lisp
regarding compilation of the stems in build-order.lisp-expr).
would output, under the new interpretation, to
and potentially this might break peoples' defsystem-a-like utilities,
build scripts or whatever.
I've attached my current (work-in-progress) patch; I have yet to test
building with openmcl or to write tests for the new behaviour, but other
than that I think it's working. Any comments are welcome.
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)