X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=doc%2Fmanual%2Fstart-stop.texinfo;h=e6216a0d71ce8b7cb41e451be892afc00e53181b;hb=1de12891f900d156ed035a097561ecd7755a256a;hp=aca62d8eadb3c44d0fb84f6ee57c7c48561258ee;hpb=d3f80ab16fd7058fedefaf2a84e3f072559eaa3d;p=sbcl.git diff --git a/doc/manual/start-stop.texinfo b/doc/manual/start-stop.texinfo index aca62d8..e6216a0 100644 --- a/doc/manual/start-stop.texinfo +++ b/doc/manual/start-stop.texinfo @@ -78,8 +78,9 @@ an example.) @menu * Quit:: -* End of File:: -* Exit on Errors:: +* End of File:: +* Saving a Core Image:: +* Exit on Errors:: @end menu @node Quit @@ -101,6 +102,21 @@ By default SBCL also exits on end of input, caused either by user pressing @kbd{Control-D} on an attached terminal, or end of input when using SBCL as part of a shell pipeline. +@node Saving a Core Image +@comment node-name, next, previous, up +@subsection Saving a Core Image + +SBCL has the ability to save its state as a file for later +execution. This functionality is important for its bootstrapping +process, and is also provided as an extension to the user. + +@include fun-sb-ext-save-lisp-and-die.texinfo + +To facilitate distribution of SBCL applications using external +resources, the filesystem location of the SBCL core file being used is +available from Lisp. + +@include var-sb-ext-star-core-pathname-star.texinfo @node Exit on Errors @comment node-name, next, previous, up @@ -109,9 +125,7 @@ using SBCL as part of a shell pipeline. SBCL can also be configured to exit if an unhandled error occurs, which is mainly useful for acting as part of a shell pipeline; doing so under most other circumstances would mean giving up large parts of -the flexibility and robustness of Common Lisp. See @ref{Starting the -Debugger}. - +the flexibility and robustness of Common Lisp. See @ref{Debugger Entry}. @node Command Line Options @comment node-name, next, previous, up @@ -165,7 +179,11 @@ the Lisp core file is a user-created core file, it may run a nonstandard toplevel which does not recognize the standard toplevel options. -@item --noinform +@item --dynamic-space-size @var{megabytes} +Size of the dynamic space reserved on startup in megabytes. Default +value is platform dependent. + +@Item --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 @code{--noprint} and @@ -194,16 +212,19 @@ chance to see it. @item --sysinit @var{filename} Load filename instead of the default system initialization file -(@pxref{System Initialization File}.) There is no special option to -cause no system initialization file to be read, but on a Unix -system ``@code{"--sysinit /dev/null}'' can be used to achieve the same -effect. +(@pxref{System Initialization File}.) + +@item --no-sysinit +Don't load a system-wide initialization file. If this option is given, +the @code{--sysinit} option is ignored. @item --userinit @var{filename} Load filename instead of the default user initialization file -(@pxref{User Initialization File}.) There is no special option to -cause no user initialization file to be read, but ``@code{--userinit -/dev/null}'' can be used to achieve the same effect. +(@pxref{User Initialization File}.) + +@item --no-userinit +Don't load a user initialization file. If this option is given, +the @code{--userinit} option is ignored. @item --eval @var{command} After executing any initialization file, but before starting the @@ -226,7 +247,7 @@ cleanly in Unix pipelines. @item --disable-debugger This is equivalent to @code{--eval '(sb-ext:disable-debugger)'}. -@xref{Starting the Debugger}. +@xref{Debugger Entry}. @end table @@ -235,8 +256,8 @@ This is equivalent to @code{--eval '(sb-ext:disable-debugger)'}. @comment node-name, next, previous, up @section Initialization Files -This section covers initialization files loaded at startup, which can -be used to customize the lisp environment. +This section covers initialization files processed at startup, which +can be used to customize the lisp environment. @menu * System Initialization File:: @@ -268,12 +289,10 @@ No user initialization file is required. @comment node-name, next, previous, up @subsection Initialization File Semantics -SBCL uses @code{load} to process its initialization files, which -has the unfortunate effect of preventing users from changing the -default startup @code{*package*}, and setting a default optimization -policy. - -This is considered a bug and liable to change in the future. +SBCL processes initialization files with @code{read} and @code{eval}, +not @code{load}; hence initialization files can be used to set startup +@code{*package*} and @code{*readtable*}, and for proclaiming a global +optimization policy. @node Initialization Examples @comment node-name, next, previous, up @@ -299,7 +318,8 @@ initialization file does the trick: @lisp ;;; If the first user-processable command-line argument is a filename, ;;; disable the debugger, load the file handling shebang-line and quit. -(let ((script (and (second *posix-argv*) (probe-file (second *posix-argv*))))) +(let ((script (and (second *posix-argv*) + (probe-file (second *posix-argv*))))) (when script ;; Handle shebang-line (set-dispatch-macro-character #\# #\! @@ -307,12 +327,13 @@ initialization file does the trick: (declare (ignore char arg)) (read-line stream))) ;; Disable debugger - (setf *invoke-debugger-hook* (lambda (condition hook) - (declare (ignore hook)) - ;; Uncomment to get backtraces on errors - ;; (sb-debug:backtrace 20) - (format *error-output* "Error: ~A~%" condition) - (quit))) + (setf *invoke-debugger-hook* + (lambda (condition hook) + (declare (ignore hook)) + ;; Uncomment to get backtraces on errors + ;; (sb-debug:backtrace 20) + (format *error-output* "Error: ~A~%" condition) + (quit))) (load script) (quit))) @end lisp @@ -356,7 +377,8 @@ handles recompilation automatically for ASDF-based systems. (require :asdf) ;;; If a fasl was stale, try to recompile and load (once). -(defmethod asdf:perform :around ((o asdf:load-op) (c asdf:cl-source-file)) +(defmethod asdf:perform :around ((o asdf:load-op) + (c asdf:cl-source-file)) (handler-case (call-next-method o c) ;; If a fasl was stale, try to recompile and load (once). (sb-ext:invalid-fasl ()