Le 22/02/2024 à 05:14, Scott@sympoiesis.com a écrit :
Hi all! I just ran into something surprising. This is with ASDF 3.2.1, packaged with Quicklisp. I am using Named-Readtables. I had '*readtable*' set to a nonstandard readtable, then did quickload of a system unrelated to the one that defines and uses that readtable. The compilation failed; after I did '(in-readtable :common-lisp)' and tried again, it succeeded.
A quick glance at the ASDF source code shows that it binds '*readtable*' to a standard readtable in some cases, such as to read a '.asd' file, but not in 'uiop/lisp-build/compile-file*', nor in 'asdf/lisp-action:perform-lisp-compilation'. Wouldn't it make sense to do that?
-- Scott
IMO it would indeed make sense to do so.
And for other readtables than the default standard readtable, perhaps having a :readtable argument in defsystem or in the :file or :components clauses?
The thing is that some implementations have a non-standard default readtable, (eg. ccl has #/ #_ etc for FFI), and implementation-dependent sources may depend on those readtables without explicitely setting them in each file.
Just using (copy-readtable NIL) to get a standard readtable would break those files. (IMO rightly so, but let's be nice).