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.
https://common-lisp.net/project/asdf/Changelog

uiop seems to be closely tied to asdf. Not sure which package is
actually at fault.
--
Carlos Konstanski