Bug Description

A simple issue, discovered by accident. SBCL 1.0.38

Try entering (print 1 2) in REPL. The next error raises:

debugger invoked on a SIMPLE-ERROR in thread #<THREAD "initial thread" RUNNING {1002ABEEF1}>:
There is no applicable method for the generic function
#<STANDARD-GENERIC-FUNCTION STREAM-TERPRI (1)>
when called with arguments
(2).

It will be better to signal the error in PRINT and to claim that the second argument is not a valid output stream. Both CLISP and Lispworks go this way.

and similarly using %WRITE-CHAR instead of WRITE-CHAR in %OUTPUT-REASONABLE-INTEGER-IN-BASE makes the test-case run in 4.0 run-time and 4.3 real-time -- which is an acceptable cost, IMO.

So, all output functions underneath the user-callable layer need to be audited so that OUT-SYNONYM-OF is not called uselessly, instead of using WRITE-CHAR/STRING/WHATEVER using corresponding %WRITE-FOO functions which need to be written.

Um, and even if the performance loss under control (small, but not catastrophic), the #!high-security feature is perhaps better kept (or rather resurrected and renamed) so that people running systems where IO speed is critical don't have to pay the price.