<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body>
<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">On 1 Mar 2018, at 21:45, Faré wrote:</p>

</div>
<div style="white-space:normal"><blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px"><p dir="auto">You might be interested to know that ACL binds *readtable* on startup to an unmodifieble readtable</p>
<blockquote style="border-left:2px solid #777; color:#999; margin:0 0 5px; padding-left:5px; border-left-color:#999"><p dir="auto">(which is a violation of CLHS <a href="http://clhs.lisp.se/Body/02_aac.htm" style="color:#999">http://clhs.lisp.se/Body/02_aac.htm</a> :<br>
"The initial readtable is distinct from the standard readtable. It is permissible for a conforming program to modify the initial readtable.")</p>
</blockquote></blockquote></div>
<div style="white-space:normal">

<p dir="auto">I don't see this behavior in ACL 10.1 (64 bit) on the Mac:</p>

<pre style="background-color:#F7F7F7; border-radius:5px 5px 5px 5px; margin-left:15px; margin-right:15px; max-width:90vw; overflow-x:auto; padding:5px" bgcolor="#F7F7F7"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0" bgcolor="#F7F7F7">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> 
</code></pre>

</div>
<div style="white-space:normal"><blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px"><blockquote style="border-left:2px solid #777; color:#999; margin:0 0 5px; padding-left:5px; border-left-color:#999"><p dir="auto">The most visible result of this is puri and more than 150 other systems in Quicklisp depending on it, failing to load.<br>
</p>
</blockquote><p dir="auto">Well, that's a good argument for fixing puri & al, regardless of what<br>
option ASDF picks in the future.<br>
And maybe a good argument for making ASDF strict all the time on all<br>
implementations that allow it.</p>
</blockquote></div>
<div style="white-space:normal">

<p dir="auto">So as I see it we have <em>three</em> options for the <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">*shared-readtable*</code></p>

<ol>
<li value="1">Your original option -- the "initial-ish" readtable (since we can't control when ASDF is loaded)</li>
<li value="2">My proposal: a copy of the standard readtable.  We should consider what might happen in this case if ASDF is reloaded or upgraded.  I don't know if option #1 has this same issue.</li>
<li value="3"> An unmodifiable standard readtable.  I don't believe that this is portably possible, is it?  There's no ANSI method (unless I've overlooked something) to make a readtable unmodifiable, and there's no way to access the standard readtable portably (since it isn't required to be unique).</li>
</ol>

<p dir="auto">I believe my proposal, #2, is the most portable of all of the solutions, but I am still open to correction.</p>

<p dir="auto">Best,<br>
r</p>
</div>
</div>
</body>
</html>