On 1 Mar 2018, at 21:45, Faré wrote:
You might be interested to know that ACL binds *readtable* on startup to an unmodifieble readtable
(which is a violation of CLHS http://clhs.lisp.se/Body/02_aac.htm :
"The initial readtable is distinct from the standard readtable. It is permissible for a conforming program to modify the initial readtable.")
I don't see this behavior in ACL 10.1 (64 bit) on the Mac:
CL-USER> *readtable*
#<readtable @ #x100022d3a2>
CL-USER> (defun semicolon-reader (stream char)
(declare (ignore char))
;; First swallow the rest of the current input line.
;; End-of-file is acceptable for terminating the comment.
(do () ((char= (read-char stream nil #\Newline t) #\Newline)))
;; Return zero values.
(values))
SEMICOLON-READER
CL-USER> (set-macro-character #\; #'semicolon-reader)
T
CL-USER>
The most visible result of this is puri and more than 150 other systems in Quicklisp depending on it, failing to load.
Well, that's a good argument for fixing puri & al, regardless of what
option ASDF picks in the future.
And maybe a good argument for making ASDF strict all the time on all
implementations that allow it.
So as I see it we have three options for the *shared-readtable*
I believe my proposal, #2, is the most portable of all of the solutions, but I am still open to correction.
Best,
r