I wrote:
Looking at the spec, my opinion is that COMPILE-FILE is doing the right thing, and COMPILE-FILE-PATHNAME should be changed to match it.
After spending some more time reading the spec, I now believe that I was wrong above, and that COMPILE-FILE behaved incorrectly in my test.
I now believe that the pathname that COMPILE-FILE should write into is the one that the code below returns.
(defun compile-file-pathname (input-file &key output-file &allow-other-keys) (let ((defaults (make-pathname :type "abcl" :defaults (merge-pathnames input-file)))) (cond ((null output-file) defaults) (t (merge-pathnames output-file defaults)))))
The function above may be helpful in fixing "Wrong file type returned by COMPILE-FILE-PATHNAME" (ticket #476) and "COMPILE-FILE, COMPILE-FILE-PATHNAME disagree on output dir" (not yet ticketed). It is my own original work, and I release it into the public domain, no rights reserved.