X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=doc%2Fmanual%2Fstart-stop.texinfo;h=ff96f4f9c17eb23025d632ff866c2634190df6ba;hb=1eb303172df6650de51ad12b993a392681f50c50;hp=fce6a98d0d988b936c447fca0abff3a3bfc40508;hpb=bea5b384106a6734a4b280a76e8ebdd4d51b5323;p=sbcl.git diff --git a/doc/manual/start-stop.texinfo b/doc/manual/start-stop.texinfo index fce6a98..ff96f4f 100644 --- a/doc/manual/start-stop.texinfo +++ b/doc/manual/start-stop.texinfo @@ -3,10 +3,11 @@ @chapter Starting and Stopping @menu -* Starting SBCL:: -* Stopping SBCL:: -* Command Line Options:: -* Initialization Files:: +* Starting SBCL:: +* Stopping SBCL:: +* Command Line Options:: +* Initialization Files:: +* Initialization and Exit Hooks:: @end menu @node Starting SBCL @@ -14,9 +15,9 @@ @section Starting SBCL @menu -* Running from Shell:: -* Running from Emacs:: -* Shebang Scripts:: +* Running from Shell:: +* Running from Emacs:: +* Shebang Scripts:: @end menu @node Running from Shell @@ -77,9 +78,9 @@ an example.) @section Stopping SBCL @menu -* Quit:: +* Quit:: * End of File:: -* Saving a Core Image:: +* Saving a Core Image:: * Exit on Errors:: @end menu @@ -108,9 +109,16 @@ using SBCL as part of a shell pipeline. 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. +process, and is also provided as an extension to the user. @include fun-sb-ext-save-lisp-and-die.texinfo +@include var-sb-ext-star-save-hooks-star.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 @@ -157,8 +165,8 @@ passed on to the user program even if they was intended for the runtime system or the Lisp system. @menu -* Runtime Options:: -* Toplevel Options:: +* Runtime Options:: +* Toplevel Options:: @end menu @node Runtime Options @@ -173,6 +181,14 @@ 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 --dynamic-space-size @var{megabytes} +Size of the dynamic space reserved on startup in megabytes. Default +value is platform dependent. + +@item --control-stack-size @var{megabytes} +Size of control stack reserved for each thread in megabytes. Default +value is 2. + @item --noinform Suppress the printing of any banner or other informational message at startup. This makes it easier to write Lisp programs which work @@ -202,16 +218,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 @@ -243,14 +262,14 @@ 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:: -* User Initialization File:: -* Initialization File Semantics:: -* Initialization Examples:: +* System Initialization File:: +* User Initialization File:: +* Initialization File Semantics:: +* Initialization Examples:: @end menu @node System Initialization File @@ -276,12 +295,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 @@ -291,13 +308,15 @@ Some examples of what you may consider doing in the initialization files follow. @menu -* Unix-style Command Line Protocol:: -* Automatic Recompilation of Stale Fasls:: +* Unix-style Command Line Protocol:: +* Automatic Recompilation of Stale Fasls:: @end menu @node Unix-style Command Line Protocol @comment node-name, next, previous, up @subsubsection Unix-style Command Line Protocol +@vindex sb-ext:*posix-argv* +@vindex *posix-argv* Standard Unix tools that are interpreters follow a common command line protocol that is necessary to work with ``shebang scripts''. SBCL @@ -307,7 +326,7 @@ 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*) +(let ((script (and (second *posix-argv*) (probe-file (second *posix-argv*))))) (when script ;; Handle shebang-line @@ -316,7 +335,7 @@ initialization file does the trick: (declare (ignore char arg)) (read-line stream))) ;; Disable debugger - (setf *invoke-debugger-hook* + (setf *invoke-debugger-hook* (lambda (condition hook) (declare (ignore hook)) ;; Uncomment to get backtraces on errors @@ -365,8 +384,8 @@ handles recompilation automatically for ASDF-based systems. @lisp (require :asdf) -;;; If a fasl was stale, try to recompile and load (once). -(defmethod asdf:perform :around ((o asdf:load-op) +;;; If a fasl was stale, try to recompile and load (once). +(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). @@ -374,3 +393,13 @@ handles recompilation automatically for ASDF-based systems. (asdf:perform (make-instance 'asdf:compile-op) c) (call-next-method)))) @end lisp + +@node Initialization and Exit Hooks +@comment node-name, next, previous, up +@section Initialization and Exit Hooks + +SBCL provides hooks into the system initialization and exit. + +@include var-sb-ext-star-init-hooks-star.texinfo +@include var-sb-ext-star-exit-hooks-star.texinfo +