sbcl.sbcl/doc
Charles Zhang 7b30deed1f Allow stack allocation not just for initial variable bindings.
The spec says that *all* values that a dynamic-extent declared
variable takes on are dynamic extent and hence can be stack allocated,
not just the initial variable binding. That is, SETQ value forms
should also participate in stack allocation when possible if the
SETQ'd var is declared dynamic extent.

Special care needs to be taken when the dynamic extent declaration is
in a local function which is called by multiple local calls, since
then it's not obvious where to put the cleanup code. In fact no
cleanup code should be inserted at all, as function return will clean
the stack. So teach the dynamic extent representation how to represent
that. The work for overhauling dynamic extent representation in the IR
in general and work on stack analysis is paying off now: it was
basically impossible to do this in the older IR way of handling
dynamic extent, but now it's fairly easy with a dedicated
DYNAMIC-EXTENT node. And since stack analysis has been cleaned up with
many restrictions lifted, it doesn't care about the exact dataflow
related to lvars with dynamic extent and SETQs in the scope of a
dynamic extent cleanup don't bother the stack-pointer-initializing
walk through the graph.

Also reorganize/edit/add to the manual section for dynamic extent, not
only to advertise this new feature and its applications but also to
make it more coherent in general (bringing it up to date at the same
time).
2023-09-05 13:36:00 +02:00
..
cmu-user Remove cmu-user.dict 2022-10-03 18:44:01 -04:00
internals Remove all remnants of FSHOW and QSHOW 2023-07-15 11:58:25 -04:00
internals-notes Checkin design document for Hayley Patton's GC 2023-08-09 12:21:14 -04:00
manual Allow stack allocation not just for initial variable bindings. 2023-09-05 13:36:00 +02:00
clean.sh Tighten up the cd-then-clean.sh idiom. 2021-03-14 19:37:32 +03:00
entities.inc 0.8.6.1: 2003-11-26 02:11:09 +00:00
FOR-CMUCL-DEVELOPERS Remove #\! reader macro 2019-01-30 13:05:59 -05:00
GIT-FOR-SBCL-HACKERS.txt 1.0.20.29: small FIND fix & win32 build fix 2008-09-24 14:55:13 +00:00
GIT-WORKFLOW.md A git-only SBCL workflow 2011-06-06 09:48:08 +03:00
make-doc.sh 1.0.42.51: disable split html manual building 2010-09-21 15:29:10 +00:00
PACKAGING-SBCL.txt A git-only SBCL workflow 2011-06-06 09:48:08 +03:00
README 1.0.13.22: text tweaks 2008-01-10 15:54:04 +00:00
sbcl.1 Update random bits of text 2020-08-24 16:31:22 -04:00

SBCL is -- ahem! -- imperfectly documented. What can we say? Help with
documentation might not be refused.:-)

There is a Unix man page, sbcl.1.

There is a user manual in texinfo format, in doc/manual/. (In
binary distributions, the compiled-into-HTML translations are also
included.) 

Much of the documentation for supported extensions is in their Lisp
doc strings. For example, to find out how to use the SAVE-LISP-AND-DIE
function in the SB-EXT package, you can execute
  (documentation 'sb-ext:save-lisp-and-die 'function)
or
  (describe 'sb-ext:save-lisp-and-die)
in SBCL.

The user manual is incomplete, and some of its chapters are just notes
that "this is similar to chapter such-and-such of the CMU CL user
manual". The old CMU CL documentation can still be useful both for
missing chapters of the user manual and for documentation of the
internals of the system. It can be downloaded from
<ftp://sbcl.sourceforge.net/pub/sbcl/cmucl-docs.tar.bz2>.