X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=doc%2Fmanual%2Fpackage-locks-extended.texinfo;h=60f32fbb8a0c03042e1c62183cbcc5ff6833a952;hb=2a4fabe1541b905591fbd6b83122209df6a48fab;hp=8a1435d3470e12b2dbc2c79a6df94b2c032ad4fd;hpb=ff92598854bf7cae8d57fe49cef4d9a98e1ab345;p=sbcl.git diff --git a/doc/manual/package-locks-extended.texinfo b/doc/manual/package-locks-extended.texinfo index 8a1435d..60f32fb 100644 --- a/doc/manual/package-locks-extended.texinfo +++ b/doc/manual/package-locks-extended.texinfo @@ -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 -* 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 Locks in Compiled Code:: * Package Lock Violations:: -* Package Lock Dictionary:: +* Package Locks in Compiled Code:: +* 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 +47,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 +59,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,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 -@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 -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} @@ -91,13 +105,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 +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. -@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 +165,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