[armedbear-cvs] r13338 - trunk/abcl/doc/manual
mevenson at common-lisp.net
mevenson at common-lisp.net
Fri Jun 17 07:01:11 UTC 2011
Author: mevenson
Date: Fri Jun 17 00:01:10 2011
New Revision: 13338
Log:
Add installation instructions.
HEADS-UP: This file is guaranteed not to compile in any LaTeX system
without further substantial work, as I am defining the DSL I want for
doumentation as I go, trying out different syntaxes.
Separate content/presentation rules via LaTeX include directives.
Properly use the as yet unwritten \code{} markup.
The 'java.tex', 'threads.tex', and 'extensions.tex' are placeholders
until we get the automatic documentation generator working.
Added:
trunk/abcl/doc/manual/extensions.tex
trunk/abcl/doc/manual/index.sty
trunk/abcl/doc/manual/java.tex
trunk/abcl/doc/manual/threads.tex
Modified:
trunk/abcl/doc/manual/abcl.tex
Modified: trunk/abcl/doc/manual/abcl.tex
==============================================================================
--- trunk/abcl/doc/manual/abcl.tex Thu Jun 16 08:02:11 2011 (r13337)
+++ trunk/abcl/doc/manual/abcl.tex Fri Jun 17 00:01:10 2011 (r13338)
@@ -1,21 +1,10 @@
-% TODO
-% 1. Create mechanism for swigging DocString and Lisp docs into
-% sections.
-
-
-\documentclass[10pt]{article}
+% http://en.wikibooks.org/wiki/LaTeX/
-\usepackage{color,hyperref}
-\definecolor{darkblue}{rgb}{0.0,0.0,0.3}
-\hypersetup{colorlinks,breaklinks,
- linkcolor=darkblue,urlcolor=darkblue,
- anchorcolor=darkblue,citecolor=darkblue}
-
-\usepackage{a4wide}
+\include{index.sty}
\begin{document}
\title{A Manual for Armed Bear Common Lisp}
-\date{June 16, 2011}
+\date{June 17, 2011}
\author{Mark Evenson, Erik Huelsmann, Alessio Stallo, Ville Voutilainen}
\section{Introduction}
@@ -25,12 +14,141 @@
\section{Obtaining}
+\subsection{Source Repositories}
+
+\begin[shell]{code}
+ svn co http://svn.common-lisp.net/armedbear/trunk abcl
+\end{code}
+
\subsection{Requirements}
java-1.5.xx, java-1.6.0_10+ recommended.
\subsection{Building from Source}
-% TODO repeat install
+
+There are three ways to build ABCL from the source release with the
+preferred (and most tested way) is to being to use the Ant build tool:
+
+\begin{itemize}
+
+\item Use the Ant build tool for Java environments.
+
+\item Use the Netbeans 6.x IDE to open ABCL as a project.
+
+\item Bootstrap ABCL using a Common Lisp implementation. Supported
+ implementations for this process: SBCL, CMUCL, OpenMCL, Allegro
+ CL, LispWorks or CLISP.
+\end{itemize}
+
+In all cases you need a Java 5 or later JDK (JDK 1.5 and 1.6 have been
+tested). Just the JRE isn't enough, as you need the Java compiler
+('javac') to compile the Java source of the ABCL implementation.
+
+Note that when deploying ABCL having JDK isn't a requirement for the
+installation site, just the equivalent JRE, as ABCL compiles directly
+to byte code, avoiding the need for the 'javac' compiler in deployment
+environments.
+
+
+\subsubsection{Using Ant}
+
+Download a binary distribution [Ant version 1.7.1 or greater][1].
+Unpack the files somewhere convenient, ensuring that the 'ant' (or
+'ant.bat' under Windows) executable is in your path and executable.
+
+[1]: http://ant.apache.org/bindownload.cgi
+
+Then simply executing
+
+\begin[shell]{code}
+ unix$ ant
+\end{code}
+
+or
+
+\begin[shell]{code}
+ dos> ant.bat
+\end{code}
+
+from the directory containing this README file will create an
+executable wrapper ('abcl' under UNIX, 'abcl.bat' under Windows). Use
+this wrapper to start ABCL.
+
+
+\subsubsection{Using NetBeans}
+
+Obtain and install the [Netbeans IDE][2]. One should be able to open
+the ABCL directory as a project in the Netbeans 6.x application,
+whereupon the usual build, run, and debug targets as invoked in the
+GUI are available.
+
+[2]: http://netbeans.org/downloads/
+
+
+\subsubsection{Building from Lisp}
+
+
+Building from a Lisp is the most venerable and untested way of
+building ABCL. It produces a "non-standard" version of the
+distribution that doesn't share build instructions with the previous
+two methods, but it still may be of interest to those who absolutely
+don't want to know anything about Java.
+
+First, copy the file 'customizations.lisp.in' to 'customization.lisp',
+in the directory containing this README file, editing to suit your
+situation, paying attention to the comments in the file. The critical
+step is to have Lisp special variable '*JDK*' point to the root of the
+Java Development Kit. Underneath the directory referenced by the
+value of '*JDK*' there should be an exectuable Java compiler in
+'bin/javac' ('bin/java.exe' under Windows).
+
+Then, one may either use the 'build-from-lisp.sh' shell script or load
+the necessary files into your Lisp image by hand.
+
+\paragraph{Using the 'build-from-lisp.sh' script}
+
+Under UNIX-like systems, you may simply invoke the
+'build-from-lisp.sh' script as './build-from-lisp.sh
+<lisp-of-choice>', e.g.
+
+\begin[shell]{code}
+ unix$ ./build-from-lisp.sh sbcl
+\end{code}
+
+After a successful build, you may use \file{abcl} (\file{abcl.bat} on
+Windows) to start ABCL. Note that this wrappers contain absolute
+paths, so you'll need to edit them if you move things around after the
+build.
+
+If you're developing on ABCL, you may want to use
+
+\begin[shell]{code}
+ unix$ ./build-from-lisp.sh <implementation> --clean=nil
+\end{code}
+
+to not do a full rebuild.
+
+In case of failure in the javac stage, you might try this:
+
+\begin[shell]{code}
+ unix$ ./build-from-lisp.sh <implementation> --full=t --clean=t --batch=nil
+\end{code}
+
+This invokes javac separately for each .java file, which avoids running
+into limitations on command line length (but is a lot slower).
+
+\subsubsubsection{Building from another Lisp by hand}
+
+There is also an ASDF definition in 'abcl.asd' for the BUILD-ABCL
+which can be used to load the necessary Lisp definitions, after which
+
+\begin[lisp]{code}
+ CL-USER> (build-abcl:build-abcl :clean t :full t)
+\end{code}
+
+will build ABCL. If ASDF isn't present, simply LOAD the
+'customizations.lisp' and 'build-abcl.lisp' files to achieve the same
+effect as loading the ASDF definition.
\subsection{Contributing}
@@ -49,13 +167,13 @@
\begin{itemize}
\item Java values are accessible as objects of type JAVA:JAVA-OBJECT.
\item The Java FFI presents a Lisp package (JAVA) with many useful
- symbols for manipulating the artifacts of executation on the JVM,
- including creation of new objects (JAVA:JNEW, JAVA:JMETHOD), the
- introspection of values (JAVA:JFIELD), the execution of methods
- (JAVA:JCALL, JAVA:JCALL-RAW, JAVA:JSTATIC)
-\item The JSS package (JSS) in contrib introduces a convenient macro
- syntax (JSS:SHARPSIGN_HASH_DOUBLQUOTE_MACRO) for accessing Java
- methods, and additional convenience funtions.
+ symbols for manipulating the artifacts of expectation on the JVM,
+ including creation of new objects \ref{JAVA:JNEW}, \ref{JAVA:JMETHOD}), the
+ introspection of values \ref{JAVA:JFIELD}, the execution of methods
+ (\ref{JAVA:JCALL}, \ref{JAVA:JCALL-RAW}, \ref{JAVA:JSTATIC})
+\item The JSS package (\ref{JSS}) in contrib introduces a convenient macro
+ syntax \ref{JSS:SHARPSIGN_DOUBLEQUOTE_MACRO} for accessing Java
+ methods, and additional convenience functions.
\item Java classes and libraries may be dynamically added to the
classpath at runtime (JAVA:ADD-TO-CLASSPATH).
\end{itemize}
@@ -66,12 +184,12 @@
so what is documented here is subject to change.
\begin{itemize}
-\item All Lisp values are descendents of LispObject.java
-\item Lisp symbols are accessible via either directly referening the
+\item All Lisp values are descendants of LispObject.java
+\item Lisp symbols are accessible via either directly referencing the
Symbol.java instance or by dynamically introspecting the
corresponding Package.java instance.
-\item The Lisp dynamic envrionment may be saved via
- LispThread.bindSpecial(BINDING) and restored via
+\item The Lisp dynamic environment may be saved via
+ \code{LispThread.bindSpecial(BINDING)} and restored via
LispThread.resetSpecialBindings(mark).
\item Functions may be executed by invocation of the
Function.execute(args [...])
@@ -79,55 +197,61 @@
\subsubsection{Lisp FFI}
-FFI stands for "Foreign Function Interface", which is the way the
-contemporary Lisp world refers to methods of "calling out" from Lisp
-into "foreign" langauges and envrionments. This document describes
-the various ways that one interacts with Lisp world of Abcl from Java,
-considering the hosted Lisp as the "Foreign Function" that needs to be
-"Interfaced".
-
+FFI stands for "Foreign Function Interface" which is the phase which
+the contemporary Lisp world refers to methods of "calling out" from
+Lisp into "foreign" languages and environments. This document
+describes the various ways that one interacts with Lisp world of ABCL
+from Java, considering the hosted Lisp as the "Foreign Function" that
+needs to be "Interfaced".
\subsubsubsection{Calling Lisp from Java}
Note: As the entire ABCL Lisp system resides in the org.armedbear.lisp
package the following code snippets do not show the relevant import
-statements in the interest of brevity.
+statements in the interest of brevity. An example of the import
+statement would be
+
+\begin[java]{code}
+ import org.armedbear.lisp.*;
+\end{document}
+
+to potentially import all the JVM symbol from the `org.armedbear.lisp'
+namespace.
Per JVM, there can only ever be a single Lisp interpreter. This is
started by calling the static method `Interpreter.createInstance()`.
-\begin{code}{java}
-Interpreter interpreter = Interpreter.createInstance();
+\begin[java]{code}
+ Interpreter interpreter = Interpreter.createInstance();
\end{code}
If this method has already been invoked in the lifetime of the current
Java process it will return null, so if you are writing Java whose
-lifecycle is a bit out of your control (like in a Java servlet), a
+life-cycle is a bit out of your control (like in a Java servlet), a
safer invocation pattern might be:
-\begin{code}{java}
-Interpreter interpreter = Interpreter.getInstance();
-if (interpreter == null) {
- interpreter = Interpreter.createInstance();
-}
+\begin[java]{code}
+ Interpreter interpreter = Interpreter.getInstance();
+ if (interpreter == null) {
+ interpreter = Interpreter.createInstance();
+ }
\end{code}
-The Lisp `EVAL` primitive may be simply passed strings for evaluation,
+The Lisp \code{eval} primitive may be simply passed strings for evaluation,
as follows
-\begin{code}{java}
-String line = "(load \"file.lisp\")";
-LispObject result = interpreter.eval(line);
+\begin[java]{code}
+ String line = "(load \"file.lisp\")";
+ LispObject result = interpreter.eval(line);
\end{code}
-
Notice that all possible return values from an arbitrary Lisp
computation are collapsed into a single return value. Doing useful
further computation on the `LispObject` depends on knowing what the
result of the computation might be, usually involves some amount
-of instanceof introspection, and forms a whole topic to itself
+of \code{instanceof} introspection, and forms a whole topic to itself
(c.f. [Introspecting a LispObject](#introspecting)).
Using `EVAL` involves the Lisp interpreter. Lisp functions may be
@@ -136,7 +260,7 @@
symbol, and then invokes the `execute()` method with the desired
parameters.
-\begin{code}{java}
+\begin[java]{code}
interpreter.eval("(defun foo (msg) (format nil \"You told me '~A'~%\" msg))");
Package pkg = Packages.findPackage("CL-USER");
Symbol foo = pkg.findAccessibleSymbol("FOO");
@@ -152,7 +276,7 @@
definition in the ABCL source, we can invoke the symbol directly. To
tell if a `LispObject` contains a reference to a symbol.
-\begin{code}{java}
+\begin[java]{code}
boolean nullp(LispObject object) {
LispObject result = Primitives.NULL.execute(object);
if (result == NIL) {
@@ -160,21 +284,21 @@
}
return true;
}
-
\end{code}
-/subsubsubsection{Introspecting a LispObject}
+\paragraph{Introspecting a LispObject}
+\label{topic:Introspecting a LispObject}
We present various patterns for introspecting an an arbitrary
`LispObject` which can represent the result of every Lisp evaluation
into semantics that Java can meaniningfully deal with.
-/subsubsubsubsection{LispObject as \java{boolean}}
+\paragragh{LispObject as \code{boolean}}
If the LispObject a generalized boolean values, one can use
\java{getBooleanValue()} to convert to Java:
-\begin{code}{java}
+\begin[java]{code}
LispObject object = Symbol.NIL;
boolean javaValue = object.getBooleanValue();
\end{code}
@@ -182,17 +306,17 @@
Although since in Lisp, any value other than NIL means "true", the
use of Java equality it quite a bit easier and more optimal:
-\begin{code}{java}
+\begin[java]{code}}
boolean javaValue = (object != Symbol.NIL);
\end{code}
-/subsubsubsubsection{LispObject is a list}
+\subsubsubsubsection{LispObject is a list}
If LispObject is a list, it will have the type `Cons`. One can then use
-the `copyToArray[]` to make things a bit more suitable for Java
+the \code{copyToArray} to make things a bit more suitable for Java
iteration.
-\begin{code}{java}
+\begin[java]{code}
LispObject result = interpreter.eval("'(1 2 4 5)");
if (result instanceof Cons) {
LispObject array[] = ((Cons)result.copyToArray());
@@ -203,7 +327,7 @@
A more Lispy way to iterated down a list is to use the `cdr()` access
function just as like one would traverse a list in Lisp:;
-\begin{code}{java}
+\begin[java]{code}
LispObject result = interpreter.eval("'(1 2 4 5)");
while (result != Symbol.NIL) {
doSomething(result.car());
@@ -227,6 +351,8 @@
\item Incomplete MOP
% TODO go through AMOP with symbols, starting by looking for
% matching function signature.
+ % XXX is this really blocking ANSI conformance? Answer: we have
+ % to start with such a ``census'' to determine what we have.
\end{itemize}
ABCL aims to be be a fully conforming ANSI Common Lisp
@@ -234,12 +360,24 @@
\section{Extensions}
-% TODO document the EXTENSIONS package.
+The symbols in the EXTENSIONS package consititutes extensions to the
+ANSI standard that are potentially useful to the user. They include
+functions for manipulating network sockets, running external programs,
+registering object finalizers, constructing reference weakly held by
+the garbage collector and others.
+
+\include{extensions}
\section{Multithreading}
% TODO document the THREADS package.
+\include{threads}
\section{History}
\end{document}
+
+% TODO
+% 1. Create mechanism for swigging DocString and Lisp docs into
+% sections.
+
Added: trunk/abcl/doc/manual/extensions.tex
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ trunk/abcl/doc/manual/extensions.tex Fri Jun 17 00:01:10 2011 (r13338)
@@ -0,0 +1,248 @@
+%CADDR
+ Function: (not documented)
+%CADR
+ Function: (not documented)
+%CAR
+ Function: (not documented)
+%CDR
+ Function: (not documented)
+*AUTOLOAD-VERBOSE*
+ Variable: (not documented)
+*BATCH-MODE*
+ Variable: (not documented)
+*COMMAND-LINE-ARGUMENT-LIST*
+ Variable: (not documented)
+*DEBUG-CONDITION*
+ Variable: (not documented)
+*DEBUG-LEVEL*
+ Variable: (not documented)
+*DISASSEMBLER*
+ Variable: (not documented)
+*ED-FUNCTIONS*
+ Variable: (not documented)
+*ENABLE-INLINE-EXPANSION*
+ Variable: (not documented)
+*INSPECTOR-HOOK*
+ Variable: (not documented)
+*LISP-HOME*
+ Variable: (not documented)
+*LOAD-TRUENAME-FASL*
+ Variable: (not documented)
+*PRINT-STRUCTURE*
+ Variable: (not documented)
+*REQUIRE-STACK-FRAME*
+ Variable: (not documented)
+*SAVED-BACKTRACE*
+ Variable: (not documented)
+*SUPPRESS-COMPILER-WARNINGS*
+ Variable: (not documented)
+*WARN-ON-REDEFINITION*
+ Variable: (not documented)
+ADJOIN-EQL
+ Function: (not documented)
+ARGLIST
+ Function: (not documented)
+ASSQ
+ Function: (not documented)
+ASSQL
+ Function: (not documented)
+AUTOLOAD
+ Function: (not documented)
+AUTOLOAD-MACRO
+ Function: (not documented)
+AUTOLOADP
+ Function: (not documented)
+AVER
+ Function: (not documented)
+CANCEL-FINALIZATION
+ Function: (not documented)
+CHAR-TO-UTF8
+ Function: (not documented)
+CHARPOS
+ Function: (not documented)
+CLASSP
+ Function: (not documented)
+COLLECT
+ Function: (not documented)
+COMPILE-FILE-IF-NEEDED
+ Function: (not documented)
+COMPILE-SYSTEM
+ Function: (not documented)
+COMPILER-ERROR
+ Function: (not documented)
+ Class: (not documented)
+COMPILER-UNSUPPORTED-FEATURE-ERROR
+ Class: (not documented)
+DESCRIBE-COMPILER-POLICY
+ Function: (not documented)
+DOUBLE-FLOAT-NEGATIVE-INFINITY
+ Variable: (not documented)
+DOUBLE-FLOAT-POSITIVE-INFINITY
+ Variable: (not documented)
+DUMP-JAVA-STACK
+ Function: (not documented)
+EXIT
+ Function: (not documented)
+FEATUREP
+ Function: (not documented)
+FILE-DIRECTORY-P
+ Function: (not documented)
+FINALIZE
+ Function: (not documented)
+FIXNUMP
+ Function: (not documented)
+GC
+ Function: (not documented)
+GET-FLOATING-POINT-MODES
+ Function: (not documented)
+GET-SOCKET-STREAM
+ Function: :ELEMENT-TYPE must be CHARACTER or (UNSIGNED-BYTE 8); the default is CHARACTER.
+GETENV
+ Function: Return the value of the environment VARIABLE if it exists, otherwise return NIL.
+GROVEL-JAVA-DEFINITIONS
+ Function: (not documented)
+INIT-GUI
+ Function: (not documented)
+INTERNAL-COMPILER-ERROR
+ Function: (not documented)
+ Class: (not documented)
+INTERRUPT-LISP
+ Function: (not documented)
+JAR-PATHNAME
+ Class: (not documented)
+MACROEXPAND-ALL
+ Function: (not documented)
+MAILBOX
+ Class: (not documented)
+MAKE-DIALOG-PROMPT-STREAM
+ Function: (not documented)
+MAKE-SERVER-SOCKET
+ Function: (not documented)
+MAKE-SLIME-INPUT-STREAM
+ Function: (not documented)
+MAKE-SLIME-OUTPUT-STREAM
+ Function: (not documented)
+MAKE-SOCKET
+ Function: (not documented)
+MAKE-TEMP-FILE
+ Function: (not documented)
+MAKE-WEAK-REFERENCE
+ Function: (not documented)
+MEMQ
+ Function: (not documented)
+MEMQL
+ Function: (not documented)
+MOST-NEGATIVE-JAVA-LONG
+ Variable: (not documented)
+MOST-POSITIVE-JAVA-LONG
+ Variable: (not documented)
+MUTEX
+ Class: (not documented)
+NEQ
+ Function: (not documented)
+NIL-VECTOR
+ Class: (not documented)
+PATHNAME-JAR-P
+ Function: Predicate for whether PATHNAME references a JAR.
+PATHNAME-URL-P
+ Function: Predicate for whether PATHNAME references a URL.
+PRECOMPILE
+ Function: (not documented)
+PROBE-DIRECTORY
+ Function: (not documented)
+PROCESS
+ Function: (not documented)
+PROCESS-ALIVE-P
+ Function: (not documented)
+PROCESS-ERROR
+ Function: (not documented)
+PROCESS-EXIT-CODE
+ Function: (not documented)
+PROCESS-INPUT
+ Function: (not documented)
+PROCESS-KILL
+ Function: (not documented)
+PROCESS-OUTPUT
+ Function: (not documented)
+PROCESS-P
+ Function: (not documented)
+PROCESS-WAIT
+ Function: (not documented)
+QUIT
+ Function: (not documented)
+RESOLVE
+ Function: (not documented)
+RUN-PROGRAM
+ Function: (not documented)
+RUN-SHELL-COMMAND
+ Function: (not documented)
+SERVER-SOCKET-CLOSE
+ Function: (not documented)
+SET-FLOATING-POINT-MODES
+ Function: (not documented)
+SHOW-RESTARTS
+ Function: (not documented)
+SIMPLE-SEARCH
+ Function: (not documented)
+SIMPLE-STRING-FILL
+ Function: (not documented)
+SIMPLE-STRING-SEARCH
+ Function: (not documented)
+SINGLE-FLOAT-NEGATIVE-INFINITY
+ Variable: (not documented)
+SINGLE-FLOAT-POSITIVE-INFINITY
+ Variable: (not documented)
+SLIME-INPUT-STREAM
+ Class: (not documented)
+SLIME-OUTPUT-STREAM
+ Class: (not documented)
+SOCKET-ACCEPT
+ Function: (not documented)
+SOCKET-CLOSE
+ Function: (not documented)
+SOCKET-LOCAL-ADDRESS
+ Function: Returns the local address of the given socket as a dotted quad string.
+SOCKET-LOCAL-PORT
+ Function: Returns the local port number of the given socket.
+SOCKET-PEER-ADDRESS
+ Function: Returns the peer address of the given socket as a dotted quad string.
+SOCKET-PEER-PORT
+ Function: Returns the peer port number of the given socket.
+SOURCE
+ Function: (not documented)
+SOURCE-FILE-POSITION
+ Function: (not documented)
+SOURCE-PATHNAME
+ Function: (not documented)
+SPECIAL-VARIABLE-P
+ Function: (not documented)
+STRING-FIND
+ Function: (not documented)
+STRING-INPUT-STREAM-CURRENT
+ Function: (not documented)
+STRING-POSITION
+ Function: (not documented)
+STYLE-WARN
+ Function: (not documented)
+TRULY-THE
+ Function: (not documented)
+UPTIME
+ Function: (not documented)
+URI-DECODE
+ Function: (not documented)
+URI-ENCODE
+ Function: (not documented)
+URL-PATHNAME
+ Class: (not documented)
+URL-PATHNAME-AUTHORITY
+ Function: (not documented)
+URL-PATHNAME-FRAGMENT
+ Function: (not documented)
+URL-PATHNAME-QUERY
+ Function: (not documented)
+URL-PATHNAME-SCHEME
+ Function: (not documented)
+WEAK-REFERENCE
+ Class: (not documented)
+WEAK-REFERENCE-VALUE
+ Function: (not documented)
Added: trunk/abcl/doc/manual/index.sty
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ trunk/abcl/doc/manual/index.sty Fri Jun 17 00:01:10 2011 (r13338)
@@ -0,0 +1,16 @@
+% preamble for the Manual
+%
+% The goal is to move all the ``technical'' looking stuff here,
+% leaving the manual itself as much as a pure content to be
+% comfortably read and modified with a text editor.
+
+\documentclass[10pt]{article}
+
+\usepackage{color,hyperref}
+\definecolor{darkblue}{rgb}{0.0,0.0,0.3}
+\hypersetup{colorlinks,breaklinks,
+ linkcolor=darkblue,urlcolor=darkblue,
+ anchorcolor=darkblue,citecolor=darkblue}
+
+\usepackage{a4wide}
+
Added: trunk/abcl/doc/manual/java.tex
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ trunk/abcl/doc/manual/java.tex Fri Jun 17 00:01:10 2011 (r13338)
@@ -0,0 +1,50 @@
+THREADS:CURRENT-THREAD
+ Function: (not documented)
+THREADS:DESTROY-THREAD
+ Function: (not documented)
+THREADS:GET-MUTEX
+ Function: Acquires a lock on the `mutex'.
+THREADS:INTERRUPT-THREAD
+ Function: Interrupts THREAD and forces it to apply FUNCTION to ARGS.
+THREADS:MAILBOX-EMPTY-P
+ Function: Returns non-NIL if the mailbox can be read from, NIL otherwise.
+THREADS:MAILBOX-PEEK
+ Function: Returns two values. The second returns non-NIL when the mailbox
+THREADS:MAILBOX-READ
+ Function: Blocks on the mailbox until an item is available for reading.
+THREADS:MAILBOX-SEND
+ Function: Sends an item into the mailbox, notifying 1 waiter
+THREADS:MAKE-MAILBOX
+ Function: (not documented)
+THREADS:MAKE-MUTEX
+ Function: (not documented)
+THREADS:MAKE-THREAD
+ Function: (not documented)
+THREADS:MAKE-THREAD-LOCK
+ Function: Returns an object to be used with the `with-thread-lock' macro.
+THREADS:MAPCAR-THREADS
+ Function: (not documented)
+THREADS:OBJECT-NOTIFY
+ Function: (not documented)
+THREADS:OBJECT-NOTIFY-ALL
+ Function: (not documented)
+THREADS:OBJECT-WAIT
+ Function: (not documented)
+THREADS:RELEASE-MUTEX
+ Function: Releases a lock on the `mutex'.
+THREADS:SYNCHRONIZED-ON
+ Function: (not documented)
+THREADS:THREAD
+ Class: (not documented)
+THREADS:THREAD-ALIVE-P
+ Function: Boolean predicate whether THREAD is alive.
+THREADS:THREAD-JOIN
+ Function: Waits for thread to finish.
+THREADS:THREAD-NAME
+ Function: (not documented)
+THREADS:THREADP
+ Function: (not documented)
+THREADS:WITH-MUTEX
+ Function: (not documented)
+THREADS:WITH-THREAD-LOCK
+ Function: (not documented)
Added: trunk/abcl/doc/manual/threads.tex
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ trunk/abcl/doc/manual/threads.tex Fri Jun 17 00:01:10 2011 (r13338)
@@ -0,0 +1,50 @@
+THREADS:CURRENT-THREAD
+ Function: (not documented)
+THREADS:DESTROY-THREAD
+ Function: (not documented)
+THREADS:GET-MUTEX
+ Function: Acquires a lock on the `mutex'.
+THREADS:INTERRUPT-THREAD
+ Function: Interrupts THREAD and forces it to apply FUNCTION to ARGS.
+THREADS:MAILBOX-EMPTY-P
+ Function: Returns non-NIL if the mailbox can be read from, NIL otherwise.
+THREADS:MAILBOX-PEEK
+ Function: Returns two values. The second returns non-NIL when the mailbox
+THREADS:MAILBOX-READ
+ Function: Blocks on the mailbox until an item is available for reading.
+THREADS:MAILBOX-SEND
+ Function: Sends an item into the mailbox, notifying 1 waiter
+THREADS:MAKE-MAILBOX
+ Function: (not documented)
+THREADS:MAKE-MUTEX
+ Function: (not documented)
+THREADS:MAKE-THREAD
+ Function: (not documented)
+THREADS:MAKE-THREAD-LOCK
+ Function: Returns an object to be used with the `with-thread-lock' macro.
+THREADS:MAPCAR-THREADS
+ Function: (not documented)
+THREADS:OBJECT-NOTIFY
+ Function: (not documented)
+THREADS:OBJECT-NOTIFY-ALL
+ Function: (not documented)
+THREADS:OBJECT-WAIT
+ Function: (not documented)
+THREADS:RELEASE-MUTEX
+ Function: Releases a lock on the `mutex'.
+THREADS:SYNCHRONIZED-ON
+ Function: (not documented)
+THREADS:THREAD
+ Class: (not documented)
+THREADS:THREAD-ALIVE-P
+ Function: Boolean predicate whether THREAD is alive.
+THREADS:THREAD-JOIN
+ Function: Waits for thread to finish.
+THREADS:THREAD-NAME
+ Function: (not documented)
+THREADS:THREADP
+ Function: (not documented)
+THREADS:WITH-MUTEX
+ Function: (not documented)
+THREADS:WITH-THREAD-LOCK
+ Function: (not documented)
More information about the armedbear-cvs
mailing list