0.8.14.13: Step SBCL, step!
[sbcl.git] / doc / manual / package-locks-extended.texinfo
index 8a1435d..60f32fb 100644 (file)
@@ -1,22 +1,36 @@
-@include package-locks-basic.texinfo
+@node Package Locks
+@comment  node-name,  next,  previous,  up
+@chapter Package Locks
+@cindex Packages, locked
 
 
-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
 
 @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::     
 * Implementation Packages::     
-* Package Locked Errors::       
-* Package Locks in Compiled Code::               
 * Package Lock Violations::     
 * Package Lock Violations::     
-* Package Lock Dictionary::
+* Package Locks in Compiled Code::  
+* Operations Violating Package Locks::  
 @end menu
 
 @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
 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 +47,7 @@ ensure that various libraries don't pollute it without asking,
 but this is not currently done by default.
 
 @node Implementation Packages
 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
 
 Each package has a list of associated implementation packages. A
 locked package, and the symbols whose home package it is, can be
@@ -45,8 +59,8 @@ Unless explicitly altered by @code{defpackage},
 @code{sb-ext:remove-implementation-package} each package is its own
 (only) implementation package.
 
 @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
 
 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,15 +75,15 @@ violation: operations on packages signal errors of type
 errors of type @code{sb-ext:symbol-package-locked-error}.
 
 @node Package Locks in Compiled Code
 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
 
 Compiling lexical binding constructs or lexical declarations that
-violate package locks package cause a compile-time package-lock
-violation. A complete listing of operators affect by this is:
-@code{let}, @code{let*}, @code{flet}, @code{labels}, @code{macrolet},
-and @code{symbol-macrolet}, @code{declare}.
+violate package locks causes a compile-time package-lock violation. A
+complete listing of operators affect by this is: @code{let},
+@code{let*}, @code{flet}, @code{labels}, @code{macrolet}, and
+@code{symbol-macrolet}, @code{declare}.
 
 Package locks affecting both lexical bindings and declarations can be
 disabled at compile-time with @code{sb-ext:disable-package-locks}
 
 Package locks affecting both lexical bindings and declarations can be
 disabled at compile-time with @code{sb-ext:disable-package-locks}
@@ -91,13 +105,13 @@ Example:
        ,@@body)))
 @end lisp
 
        ,@@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.
 
 
 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
 
 With the exception of the aforementioned contructs, and interned
 symbols, behaviour is unspecified if package locks affecting compiled
@@ -112,10 +126,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.
 
 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
 
 Following actions cause a package lock violation if the package
 operated on is locked, and @code{*package*} is not an implementation
@@ -151,7 +165,7 @@ Deleting a package.
 
 @end enumerate
 
 
 @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
 
 Following actions cause a package lock violation if the home package
 of the symbol operated on is locked, and @code{*package*} is not an