From 29f6444d6fed787a87b828d600c4ae429b970096 Mon Sep 17 00:00:00 2001 From: Nikodemus Siivola Date: Sun, 4 Jul 2004 15:03:46 +0000 Subject: [PATCH] 0.8.12.19: Restructure the manual chapter "Package Locks" into consepts and a dictionary, which also incidentally fixes the broken section numbering there. --- doc/manual/make-tempfiles.sh | 14 ++++--- doc/manual/package-locks-basic.texinfo | 12 ++++-- doc/manual/package-locks-extended.texinfo | 57 ++++++++++++++++++----------- version.lisp-expr | 2 +- 4 files changed, 53 insertions(+), 32 deletions(-) diff --git a/doc/manual/make-tempfiles.sh b/doc/manual/make-tempfiles.sh index 777d03c..9b87b90 100644 --- a/doc/manual/make-tempfiles.sh +++ b/doc/manual/make-tempfiles.sh @@ -18,12 +18,14 @@ sbclsystem=`pwd`/../../src/runtime/sbcl sbclcore=`pwd`/../../output/sbcl.core if [ -e $sbclsystem ] && [ -e $sbclcore ] then - SBCL="${1:-$sbclsystem --core $sbclcore}" + SBCLRUNTIME="${1:-$sbclsystem --core $sbclcore}" export SBCL_HOME=`pwd`/../../contrib else - SBCL="${1:-`which sbcl`}" + SBCLRUNTIME="${1:-`which sbcl`}" fi +SBCL=$SBCLRUNTIME --noinform --sysinit /dev/null --userinit /dev/null --noprint --disable-debugger + # Output directory. This has to end with a slash (it's interpreted by # Lisp's `pathname' function) or you lose. This is normally set from # Makefile. @@ -37,14 +39,14 @@ DOCSTRINGDIR="${DOCSTRINGDIR:-docstrings/}" # is normally set from Makefile. #PACKAGES="${PACKAGES:-:COMMON-LISP :SB-ALIEN :SB-DEBUG :SB-EXT :SB-GRAY :SB-MOP :SB-PROFILE :SB-THREAD}" -echo /creating docstring snippets from SBCL=\'$SBCL\' for packages \'$PACKAGES\' -echo "(progn (load \"docstrings.lisp\") (dolist (module (quote ($MODULES))) (require module)) (docstrings-to-texinfo \"$DOCSTRINGDIR\" $PACKAGES) (sb-ext:quit))" | $SBCL --noinform --sysinit /dev/null --userinit /dev/null --noprint --disable-debugger +echo /creating docstring snippets from SBCL=\'$SBCLRUNTIME\' for packages \'$PACKAGES\' +echo "(progn (load \"docstrings.lisp\") (dolist (module (quote ($MODULES))) (require module)) (docstrings-to-texinfo \"$DOCSTRINGDIR\" $PACKAGES) (sb-ext:quit))" | $SBCL echo /creating contrib-docs.texi-temp -echo "(load \"create-contrib-doc-list.lisp\")" | $SBCL --noinform --sysinit /dev/null --userinit /dev/null --noprint --disable-debugger +echo "(load \"create-contrib-doc-list.lisp\")" | $SBCL echo /creating package-locks.texi-temp -if $SBCL --noinform --sysinit /dev/null --userinit /dev/null --noprint --disable-debugger --eval '(quit :unix-status #+sb-package-locks 0 #-sb-package-locks 1)' +if $SBCL --eval "(let ((plp (find-symbol \"PACKAGE-LOCKED-P\" :sb-exit))) (quit :unix-status (if (and plp (fboundp plp)) 0 1)))"; then cp package-locks-extended.texinfo package-locks.texi-temp else diff --git a/doc/manual/package-locks-basic.texinfo b/doc/manual/package-locks-basic.texinfo index d5fa812..a4740b6 100644 --- a/doc/manual/package-locks-basic.texinfo +++ b/doc/manual/package-locks-basic.texinfo @@ -1,7 +1,13 @@ @node Package Locks +@comment node-name, next, previous, up @chapter Package Locks -SBCL does not currently include package locking support by default. To -build SBCL with package locking enabled add @code{:sb-package-locks} -to target @code{*features*} as per instructions in the file +SBCL can be built with support for package locks to protect against +unintentional modifications of packages. The full documentation for +package locks is only built if package locks are enabled in the image +the documentation was built from, + +Package locking support is currently not built by default. To build +SBCL with package locking enabled add @code{:sb-package-locks} to +target @code{*features*} as per instructions in the file @file{INSTALL}. diff --git a/doc/manual/package-locks-extended.texinfo b/doc/manual/package-locks-extended.texinfo index 8a1435d..e584673 100644 --- a/doc/manual/package-locks-extended.texinfo +++ b/doc/manual/package-locks-extended.texinfo @@ -1,22 +1,35 @@ -@include package-locks-basic.texinfo +@node Package Locks +@comment node-name, next, previous, up +@chapter Package Locks -None of the following sections apply to SBCL built -without package locks. +None of the following sections apply to SBCL built without package +locksing support. -The interface described here is experimental: incompatible changes -in future SBCL releases are possible, even expected. +The interface described here is experimental: incompatible changes in +future SBCL releases are possible, even expected: most notably the +consept of implementation packages and the associated operators may be +renamed. @menu -* Package Locking Overview:: +* Package Lock Concepts:: +* Package Lock Dictionary:: +@end menu + +@node Package Lock Concepts +@section Package Lock Concepts + +@menu +* Package Lock Overview:: * Implementation Packages:: -* Package Locked Errors:: +* Package Lock Violations:: * Package Locks in Compiled Code:: -* Package Lock Violations:: -* Package Lock Dictionary:: +* Operations Violating Package Locks:: @end menu -@node Package Locking Overview -@section Package Locking Overview +@node Package Lock Overview +@comment node-name, next, previous, up +@subsection Package Locking Overview + Package locks protect against unintentional modifications of a package: they provide similar protection to user packages as is mandated to @code{common-lisp} package by the ANSI specification. They @@ -33,7 +46,7 @@ ensure that various libraries don't pollute it without asking, but this is not currently done by default. @node Implementation Packages -@section Implementation Packages +@subsection Implementation Packages Each package has a list of associated implementation packages. A locked package, and the symbols whose home package it is, can be @@ -45,8 +58,8 @@ Unless explicitly altered by @code{defpackage}, @code{sb-ext:remove-implementation-package} each package is its own (only) implementation package. -@node Package Locked Errors -@section Package Locked Errors +@node Package Lock Violations +@subsection Package Lock Violations If an operation violates a package lock, a continuable error that is of a subtype of @code{sb-ext:package-lock-violation} (subtype of @@ -61,9 +74,9 @@ violation: operations on packages signal errors of type errors of type @code{sb-ext:symbol-package-locked-error}. @node Package Locks in Compiled Code -@section Package Locks in Compiled Code +@subsection Package Locks in Compiled Code -@subsection Lexical bindings and declarations +@subsubsection Lexical bindings and declarations Compiling lexical binding constructs or lexical declarations that violate package locks package cause a compile-time package-lock @@ -91,13 +104,13 @@ Example: ,@@body))) @end lisp -@subsection Interned symbols +@subsubsection Interned symbols If compiled code contains interned symbols, then loading that code into an image without the said symbols will not cause a package lock violation even if the packages in question are locked. -@subsection Other limitations on compiled code +@subsubsection Other limitations on compiled code With the exception of the aforementioned contructs, and interned symbols, behaviour is unspecified if package locks affecting compiled @@ -112,10 +125,10 @@ unlocked. In practise all this means that package-locks have a neglible performance penalty in compiled code as long as they are not violated. -@node Package Lock Violations -@section Package Lock Violations +@node Operations Violating Package Locks +@subsection Operations Violating Package Locks -@heading Operations on Packages +@subsubsection Operations on Packages Following actions cause a package lock violation if the package operated on is locked, and @code{*package*} is not an implementation @@ -151,7 +164,7 @@ Deleting a package. @end enumerate -@heading Operations on Symbols +@subsubsection Operations on Symbols Following actions cause a package lock violation if the home package of the symbol operated on is locked, and @code{*package*} is not an diff --git a/version.lisp-expr b/version.lisp-expr index 120f163..e65feee 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.8.12.18" +"0.8.12.19" -- 1.7.10.4