1.0.21.17: --script commandline argument
[sbcl.git] / doc / sbcl.1
index c368b58..5776d61 100644 (file)
@@ -62,9 +62,9 @@ Many people like to run SBCL, like other Lisp systems, as a subprocess
 under Emacs. The Emacs "Slime" and "ilisp" modes provide many
 convenient features, like command line editing, tab completion, and
 various kinds of coupling between Common Lisp source files and the
-interactive SBCL subprocess, but they can be somewhat fragile wrt.
-packages and readtables, in which case SBCL in the Emacs "shell" mode
-can a useful substitute.
+interactive SBCL subprocess, but they can be somewhat fragile with
+respect to packages and readtables, in which case SBCL in the Emacs
+"shell" mode can be a useful substitute.
 
 .SH OVERVIEW
 
@@ -79,7 +79,7 @@ the BUGS section below.
 SBCL also includes various non-ANSI extensions, described more fully
 in the User Manual.  Some of these are in the base system and others
 are "contrib" modules loaded on request using \f(CRREQUIRE\fR.  For
-example, to load the \f(CRSB\-BSD\-SOCKETS\fR module that providces
+example, to load the \f(CRSB\-BSD\-SOCKETS\fR module that provides
 TCP/IP connectivity,
 \f(CR
    * (require \(aqasdf)
@@ -107,9 +107,7 @@ Gray streams (a de-facto standard system of overloadable CLOS classes
 whose instances can be used wherever ordinary ANSI streams can be used)
 .TP 3
 \--
-weak pointers and finalization (which have unfortunately
-suffered from at least some code rot, so that \fIe.g.\fR weak hash
-tables don't work)
+weak pointers and finalization
 .PP
 
 Fundamental system interface extensions are also provided:
@@ -144,9 +142,10 @@ low-level Unix interface, the WIRE protocol, various user-level macros
 and functions (\fIe.g.\fR \f(CRLETF\fR, \f(CRITERATE\fR, \f(CRMEMQ\fR,
 \f(CRREQUIRED\-ARGUMENT\fR), and many others.
 
-SBCL inplements multithreading, but in a completely different fashion
-from CMU CL: see the User Manual for details.  As of 0.8.5 this is
-considered beta-quality and must be explicitly enabled at build time.
+SBCL implements multithreading, but in a completely different fashion
+from CMU CL: see the User Manual for details. As of 1.0.13 this is
+still considered beta-quality and must be explicitly enabled at build
+time.
 
 SBCL has retained some extensions from its parent CMU CL. Many of the
 retained extensions are in these categories:
@@ -208,15 +207,6 @@ but very useful principle that "declarations are assertions", \fIi.e.\fR
 type declarations should be checked at runtime unless the user
 explicitly tells the system that speed is more important than safety.
 
-The compiler reportedly produces pretty good code for modern CPU
-architectures which have lots of registers, but its code for the X86
-is marred by many extra loads and stores to stack-based temporary
-variables. Because of this, and because of the extra levels of
-indirection in Common Lisp relative to C, the performance of SBCL
-isn't going to impress people who are impressed by small constant
-factors. However, even on the X86 it tends to be faster than byte
-interpreted languages (and can be a lot faster).
-
 The compiled code uses garbage collection to automatically
 manage memory. The garbage collector implementation varies considerably
 from CPU to CPU. In particular, on some CPUs the GC is nearly exact,
@@ -269,12 +259,21 @@ standard toplevel options.
 Size of the dynamic space reserved on startup in megabytes. Default value
 is platform dependent.
 .TP 3
+.B \-\-control-stack-size <megabytes>
+Size of control stack reserved for each thread in megabytes. Default value
+is 2.
+.TP 3
 .B \-\-noinform
 Suppress the printing of any banner or other informational message at
 startup. (This makes it easier to write Lisp programs which work
 cleanly in Unix pipelines. See also the "\-\-noprint" and
 "\-\-disable\-debugger" options.)
 .TP 3
+.B \-\-script <filename>
+As a runtime option equivalent to \-\-noinform
+\-\-end\-toplevel\-options \-\-script <filename>. See the description
+of \-\-script as a toplevel option below.
+.TP 3
 .B \-\-help
 Print some basic information about SBCL, then exit.
 .TP 3
@@ -326,30 +325,40 @@ makes it easier to write Lisp "scripts" which work cleanly in Unix
 pipelines.
 .TP 3
 .B \-\-disable\-debugger
-This is equivalent to \-\-eval \(aq(sb\-ext:disable\-debugger)\(aq. By
-default, a Common Lisp system tries to ask the programmer for help
-when it gets in trouble (by printing a debug prompt, then listening,
-on \f(CR*DEBUG\-IO*\fR). However, this is not useful behavior for a system
-running with no programmer available, and this option tries to set up
-more appropriate behavior for that situation. This is implemented by
-redefining \f(CRINVOKE\-DEBUGGER\fR so that any call exits the process with a
-failure code after printing a backtrace. (Note that because it is
-implemented by modifying special variables and \f(CRFDEFINITION\fRs, its
-effects persist in .core files created by
-\f(CRSB\-EXT:SAVE\-LISP\-AND\-DIE\fR.  If you want to undo its
-effects, \fIe.g.\fR if you build a system unattended and then want to
-operate a derived system interactively, see the
-\f(CRSB\-EXT:ENABLE\-DEBUGGER\fR command.)
+By default when SBCL encounters an error, it enters the builtin
+debugger, allowing interactive diagnosis and possible intercession.
+This option disables the debugger, causing errors to print a backtrace
+and exit with status 1 instead -- which is a mode of operation better suited
+for batch processing. See the user manual on \f(CRSB\-EXT:DISABLE\-DEBUGGER\fR for details.
+.B \-\-script <filename>
+Implies \-\-no-sysinit \-\-no-userinit \-\-disable-debugger
+\-\-end\-toplevel\-options.
+
+Causes the system to load the specified file and exit immediately
+afterwards, instead of entering the readl-eval-print loop. If the file
+begins with a shebang line, it is ignored.
 .PP
 
-Regardless of the order in which \-\-sysinit, \-\-userinit, and
-\-\-eval options appear on the command line, the sysinit file, if it
-exists, is loaded first; then the userinit file, if it exists, is
-loaded; then any \-\-eval commands are read and executed in sequence;
-then the read-eval-print loop is started on standard input. At any
-step, error conditions or commands such as \f(CRSB\-EXT:QUIT\fR can
-cause execution to be terminated before proceeding to subsequent
-steps.
+Regardless of the order in which toplevel options appear on the command
+line, the order of actions is:
+
+.nr step 1 1
+.IP \n[step]. 3
+Debugger is disabled, if requested.
+.IP \n+[step].
+Any system initialization file is loaded, unless prohibited.
+.IP \n+[step].
+Any user initialization file is loaded, unless prohibited.
+.IP \n+[step].
+\-\-eval and \-\-load options are processed in the order given.
+.PP
+
+Finally, either the read-eval-print loop is entered or the file
+specified with \-\-script option is loaded.
+
+When running in the read-eval-print loop the system exits on end of
+file. Similarly, the system exits immediately after processing the
+file specified with \-\-script.
 
 Note that when running SBCL with the \-\-core option, using a core
 file created by a user call to the
@@ -431,11 +440,12 @@ point result as a function value) is a fundamentally slow operation.
 
 To report a bug, please send mail to the mailing lists sbcl-help or
 sbcl-devel. You can find the complete mailing list addresses on the
-web pages at <\f(CRhttp://sbcl.sourceforge.net/\fR>.  (You may also
-find fancy SourceForge bug-tracking machinery there, but don't be
-fooled. As of 2002-07-25 anyway, we don't actively monitor that
-machinery, and it exists only because we haven't been able to figure
-out how to turn it off.)
+web pages at <\f(CRhttp://sbcl.sourceforge.net/\fR>; note that as a
+spam reduction measure you must subscribe to the lists before you can
+post. (You may also find fancy SourceForge bug-tracking machinery
+there, but don't be fooled. As of 2002-07-25 anyway, we don't actively
+monitor that machinery, and it exists only because we haven't been
+able to figure out how to turn it off.)
 
 As with any software bug report, it's most helpful if you can provide
 enough information to reproduce the symptoms reliably, and if you say