This is a bug report. I'm using puri as an example, but it's not a puri
bug.
With the latest version of asdf (3.3.0) puri no longer compiles. The
following compiler error is thrown:
SET-DISPATCH-MACRO-CHARACTER would modify the standard readtable.
[Condition of type ASDF/FIND-SYSTEM:LOAD-SYSTEM-DEFINITION-ERROR]
In:
0: (SET-DISPATCH-MACRO-CHARACTER #\# #\u #<FUNCTION PURI::SHARP-U> #<READTABLE {100002D6C3}>)
The code:
(defun sharp-u (stream chr arg)
(declare (ignore chr arg))
(let ((arg (read stream nil nil t)))
(if *read-suppress*
nil
(if* (stringp arg)
then (parse-uri arg)
else
(internal-reader-error
stream
"#u takes a string or list argument: ~s" arg)))))
(set-dispatch-macro-character #\# #\u #'puri::sharp-u)
What puri is doing re: SET-DISPATCH-MACRO-CHARACTER is totally by the
book. Why is this suddenly an error? Is there a workaround?
Backing up to the next most recent release of asdf makes the problem go
away:
dev-lisp/asdf-3.2.1-r1:0/3.2.1-r1
dev-lisp/uiop-3.2.1:0
I tried to find the asdf changelog to see if this is a documented
change. But the link is broken.
uiop seems to be closely tied to asdf. Not sure which package is
actually at fault.
--
Carlos Konstanski