mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-02-21 06:30:23 -08:00
Spellchecking done by Ralph Campbell
This commit is contained in:
parent
96c2fb933c
commit
9d449d9565
2 changed files with 35 additions and 34 deletions
|
|
@ -197,7 +197,7 @@ components listed in @var{lisp-files}. Each component is either:
|
|||
@item A string: Denotes an object file built from lisp code.
|
||||
@end itemize
|
||||
@noindent
|
||||
@var{ld-flags} is a list of strings with aditional parameters to be passed
|
||||
@var{ld-flags} is a list of strings with additional parameters to be passed
|
||||
to the linker. You can include here your favorite C/C++ libraries.
|
||||
|
||||
@var{prologue-code} and @var{epilogue-code} are used to customize the
|
||||
|
|
@ -261,7 +261,7 @@ Linkable object files.
|
|||
@item :lib, :static-library
|
||||
A normal library produced with @code{c:build-static-library}.
|
||||
@item :dll, :shared-library
|
||||
A dynamically linked librariy produced with @code{c:build-shared-library}.
|
||||
A dynamically linked library produced with @code{c:build-shared-library}.
|
||||
@item :program
|
||||
An executable produced with @code{c:build-program}.
|
||||
@end table
|
||||
|
|
@ -283,7 +283,7 @@ The output of this function is system specific. For example, under FreeBSD
|
|||
@section Compiler examples
|
||||
|
||||
@subsection The @file{hello.lsp} file
|
||||
In the follwoing examples we will use the same lisp program. You have to
|
||||
In the following examples we will use the same lisp program. You have to
|
||||
create a file called @file{hello.lsp} which contains the following lines
|
||||
|
||||
@example
|
||||
|
|
@ -333,7 +333,7 @@ Type :h for Help. Top level.
|
|||
;;; End of Pass 1.
|
||||
;;; Calling the C compiler...
|
||||
"gcc -g -O2 -Dfreebsd -O -I/home/worm/lib/ecl//h -w -c hello.c -o hello.o"
|
||||
"ld -shared -o hello.so -L/home/worm/lib/ecl/ hello.o "
|
||||
"ld -shared -o hello.so -L/home/worm/lib/ecl/ hello.o"
|
||||
;;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
|
||||
;;; Finished compiling hello.lsp.
|
||||
#P"hello.so"
|
||||
|
|
@ -348,7 +348,7 @@ In this example we build a standalone program which prints the @code{"Hello
|
|||
world!"} message and does nothing else. First you must create the
|
||||
@file{hello.lsp} file shown above. Next you have to enter the @ecl{}
|
||||
environment and type @code{(compile-file "hello.lsp" :system-p t)}. This
|
||||
produces an object file that can be linked agains the @ecl{} core image.
|
||||
produces an object file that can be linked against the @ecl{} core image.
|
||||
|
||||
@example
|
||||
Type :h for Help. Top level.
|
||||
|
|
@ -373,7 +373,7 @@ instruction.
|
|||
"myecl"
|
||||
@end example
|
||||
@noindent
|
||||
Now you can execute this program from your favourite shell.
|
||||
Now you can execute this program from your favorite shell.
|
||||
|
||||
@example
|
||||
worm@@arrakis.es% @b{./myecl}
|
||||
|
|
@ -479,7 +479,7 @@ in multiples of a word size, we make sure that the least significant bits of a
|
|||
pointer are zero, which distinguishes pointers from immediate data.
|
||||
|
||||
In an immediate datatype, the tag bits determine the type of the object. In
|
||||
non-immediate datatyps, the first byte in the cell contains the secondary type
|
||||
non-immediate datatypes, the first byte in the cell contains the secondary type
|
||||
indicator, and distinguishes between different types of non immediate data. The
|
||||
use of the remaining bytes differs for each type of object. For instance, a
|
||||
cons cell consists of three words:
|
||||
|
|
@ -612,7 +612,7 @@ required to create, manipulate and calculate with them.
|
|||
|
||||
@deftp {C type} cl_fixnum
|
||||
This is a C signed integer type capable of holding a whole fixnum without any
|
||||
loss of precision. The oposite is not true, and you may create a
|
||||
loss of precision. The opposite is not true, and you may create a
|
||||
@code{cl_fixnum} which exceeds the limits of a fixnum and should be stored as a
|
||||
bignum.
|
||||
@end deftp
|
||||
|
|
@ -638,11 +638,11 @@ respectively.
|
|||
@deftypefunx cl_fixnum fix (cl_object @var{o})
|
||||
|
||||
@code{MAKE_FIXNUM} and @code{fix} convert from an integer to a lisp object
|
||||
of fixnum type and viceversa. These functions no not check their arguments.
|
||||
of fixnum type and vice versa. These functions no not check their arguments.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun cl_fixnum fixint (cl_object @var{o})
|
||||
Converts a lisp fixnum to a C integer of the appropiate size. Signals an error
|
||||
Converts a lisp fixnum to a C integer of the appropriate size. Signals an error
|
||||
if @var{o} is not of fixnum type.
|
||||
@end deftypefun
|
||||
|
||||
|
|
@ -846,8 +846,8 @@ length of the string.
|
|||
@section Bytecodes
|
||||
|
||||
A bytecodes object is a lisp object with a piece of code that can be
|
||||
interpreted. The objects of type @code{t_bytecode} are implicitely constructed
|
||||
by a call to @code{eval}, but can also be explicitely constructed with the
|
||||
interpreted. The objects of type @code{t_bytecode} are implicitly constructed
|
||||
by a call to @code{eval}, but can also be explicitly constructed with the
|
||||
@code{make_lambda} function.
|
||||
|
||||
@deftypefun cl_object cl_safe_eval (cl_object @var{form}, cl_object @var{env}, cl_object @var{err_value}
|
||||
|
|
@ -931,7 +931,7 @@ temporary values, and function invocation.
|
|||
|
||||
@ecl{} employs standard C calling conventions to achieve efficiency and
|
||||
interoperability with other languages.
|
||||
Each Lisp function is implemented as a C function whcih takes as many
|
||||
Each Lisp function is implemented as a C function which takes as many
|
||||
argument as the Lisp original plus one additional integer argument
|
||||
which holds the number of actual arguments. The function sets @code{NValues}
|
||||
to the number of Lisp values produced, it returns the first one and the
|
||||
|
|
@ -969,7 +969,7 @@ this case) represents the number of values of the function.
|
|||
|
||||
In general, if one is to play with the C kernel of @ecl{} there is no need to
|
||||
know about all these conventions. There is a preprocessor that takes care of
|
||||
the details, by using a lispy representation of the statements that output
|
||||
the details, by using a lisp representation of the statements that output
|
||||
values, and of the function definitions. For instance, the actual source code
|
||||
for @code{clLcons} in @file{src/c/lists.d}
|
||||
|
||||
|
|
@ -1683,3 +1683,4 @@ parts are in the @file{unix*.d} files.
|
|||
|
||||
@item Run the tests and compare to the results of other platforms.
|
||||
@end enumerate
|
||||
@bye
|
||||
|
|
|
|||
|
|
@ -83,11 +83,11 @@ for the history of the code you are up to use.
|
|||
|
||||
@ecl{} (ECL for short) uses standard C calling conventions for Lisp compiled
|
||||
functions, which allows C programs to easily call Lisp functions and
|
||||
viceversa. No foreign function interface is required: data can be exchanged
|
||||
vice versa. No foreign function interface is required: data can be exchanged
|
||||
between C and Lisp with no need for conversion.
|
||||
|
||||
@ecl{} is based on a Common Runtime Support (CRS) which provides basic
|
||||
facilities for memory managment, dynamic loading and dumping of binary images,
|
||||
facilities for memory management, dynamic loading and dumping of binary images,
|
||||
support for multiple threads of execution. The CRS is built into a library
|
||||
that can be linked with the code of the application. @ecl{} is modular: main
|
||||
modules are the program development tools (top level, debugger, trace,
|
||||
|
|
@ -131,14 +131,14 @@ at Kyoto University.
|
|||
|
||||
I must thank Giuseppe Attardi, Yuasa and Hagiya for their wonderful work with
|
||||
preceding implementations and for putting them in the Public Domain under the
|
||||
GNU General Public Licence as published by the Free Software Foundation.
|
||||
GNU General Public License as published by the Free Software Foundation.
|
||||
Without them this product would have never been possible.
|
||||
|
||||
This document is an update of the original ECL documentation, which was based
|
||||
in part on the material in @bibcite{Yuasa:85}
|
||||
|
||||
The following people or organizations must be credited for support in the
|
||||
devlopement of Kyoto @clisp{}: Prof. Reiji Nakajima at RIMS, Kyoto University;
|
||||
development of Kyoto @clisp{}: Prof. Reiji Nakajima at RIMS, Kyoto University;
|
||||
Nippon Data General Corporation; Teruo Yabe; Toshiyasu Harada; Takashi Suzuki;
|
||||
Kibo Kurokawa; Data General Corporation; Richard Gabriel; Daniel Weinreb; Skef
|
||||
Wholey; Carl Hoffman; Naruhiko Kawamura; Takashi Sakuragawa; Akinori Yonezawa;
|
||||
|
|
@ -295,7 +295,7 @@ directory} is @file{/usr/local/ecl}.
|
|||
zcat ecl.tgz | tar xf -
|
||||
@end example
|
||||
|
||||
@item An autoconfiguration mechanism allows you to perform a standard
|
||||
@item An auto configuration mechanism allows you to perform a standard
|
||||
installation with the following commands:
|
||||
@example
|
||||
./configure
|
||||
|
|
@ -304,7 +304,7 @@ This example will prepare to install executable files, manual pages and
|
|||
info files in standard directories like @file{/usr/local/bin},
|
||||
@file{/usr/local/man/man1}, @file{/usr/local/info}.
|
||||
|
||||
@item If you don't have access rights to these directories, you shoud
|
||||
@item If you don't have access rights to these directories, you should
|
||||
give to configure alternate places. Try @code{./configure -help} for
|
||||
instructions on how to supply this information to configure, but
|
||||
a good starting point is
|
||||
|
|
@ -312,7 +312,7 @@ a good starting point is
|
|||
./configure --prefix=$HOME
|
||||
@end example
|
||||
|
||||
@item Make sure everything went ok with the configuration.
|
||||
@item Make sure everything went OK with the configuration.
|
||||
The configuration script figures out the machine where it is running and
|
||||
creates a directory @code{machine} where to perform the installation. If the
|
||||
program fails to recognize the machine, you will have to check whether it is
|
||||
|
|
@ -544,7 +544,7 @@ integers are @code{bignums}. Thus 25 factorial (25!)
|
|||
@end example
|
||||
|
||||
@noindent
|
||||
is definetely a bignum in @ecl{}.
|
||||
is definitely a bignum in @ecl{}.
|
||||
|
||||
@clisp{} constants related to integers have the following values
|
||||
in @ecl{}.
|
||||
|
|
@ -667,7 +667,7 @@ There are no implementation-dependent features for complex numbers.
|
|||
|
||||
|
||||
@node Characters, Symbols, Numbers, Standards
|
||||
@section Characteres
|
||||
@section Characters
|
||||
|
||||
@ecl{} is fully @ansi{} compliant in all aspects of the character
|
||||
data type, with the following peculiarities.
|
||||
|
|
@ -846,7 +846,7 @@ For instance, the @code{system} package has two nicknames @code{sys} and
|
|||
@code{si}; @code{system:symbol} may be written as @code{sys:symbol} or
|
||||
@code{si:symbol}.
|
||||
|
||||
Depending on the configuation option by which @ecl{} has been built,
|
||||
Depending on the configuration option by which @ecl{} has been built,
|
||||
additional packages may be available:
|
||||
@example
|
||||
compiler clos xlib
|
||||
|
|
@ -1400,7 +1400,7 @@ returns it.
|
|||
@end deffn
|
||||
|
||||
@c @deffn {Method} {stream-write-line} (object clos-stream) string @optional{} start end
|
||||
@c Writes character objects from thestring @var{string} onto the CLOS stream
|
||||
@c Writes character objects from the string @var{string} onto the CLOS stream
|
||||
@c @var{object}. If given, the @var{start} and @var{end} arguments indicate a
|
||||
@c substring that is to be output.
|
||||
@c @end deffn
|
||||
|
|
@ -1603,7 +1603,7 @@ the C stack and a type accurate technique for areas containing Lisp objects.
|
|||
Scanning conservatively the C stack, looking for potential pointers to Lisp
|
||||
objects, ensures that no live Lisp objects get collected, even if they are
|
||||
passed to external procedures in C or some other language. This approach
|
||||
greatly simplies integration of Lisp and C code, since it is not necessary to
|
||||
greatly simplifies integration of Lisp and C code, since it is not necessary to
|
||||
protect Lisp object form collection when a foreign function is invoked.
|
||||
|
||||
The garbage collector of @ecl{} has three levels according to what it
|
||||
|
|
@ -1622,12 +1622,12 @@ free list is exhausted, a new page is allocated, or the garbage collector is
|
|||
invoked, depending on whether the maximum number of pages for that class have
|
||||
been allocated or not.
|
||||
|
||||
The garbage collector does not compactify the heap. That is, cells and
|
||||
The garbage collector does not compact the heap. That is, cells and
|
||||
contiguous blocks are never moved to another place. Moreover, once a page is
|
||||
allocated for a particular type class or for contiguous blocks, that page will
|
||||
never be freed for other classes, even if the entire page becomes garbage.
|
||||
|
||||
On the other hand, the relocatable area is compactified during level 2 and
|
||||
On the other hand, the relocatable area is compacted during level 2 and
|
||||
level 3 of garbage collection. A relocatable block is really relocatable.
|
||||
|
||||
The garbage collector is automatically invoked in one of the following
|
||||
|
|
@ -1661,7 +1661,7 @@ end of each garbage collection.
|
|||
|
||||
@defvar{*gc-verbose*}[system] This variable controls whether to print messages
|
||||
at the start and end of each garbage collection. If @code{sys:*gc-verbose*} is
|
||||
@nil{}, @code{gc} foregoes printing any messages. The default value is @code{T}.
|
||||
@nil{}, @code{gc} fore goes printing any messages. The default value is @code{T}.
|
||||
@end defvar
|
||||
|
||||
|
||||
|
|
@ -2020,7 +2020,7 @@ was compiled while the @code{safety} optimize level is 3 or with a
|
|||
@end enumerate
|
||||
|
||||
An event is pushed on the event stack when execution of its event function
|
||||
begins, and is poped away at the completion of the execution. An event
|
||||
begins, and is popped away at the completion of the execution. An event
|
||||
environment is the `environment' of the event function at the time the next
|
||||
event is pushed. Actually, an event environment is a pointer to the main stack
|
||||
of @ecl{}. For each interpreted event function (i.e., event function in
|
||||
|
|
@ -2372,7 +2372,7 @@ with the symbol.
|
|||
Prints the documentation associated with those symbols in the specified
|
||||
@var{package} whose print names contain @var{string} as substring.
|
||||
@var{string} may be a symbol, in which case the print name of that symbol is
|
||||
used. @var{package} is optional and defaults to the LISP psackage.
|
||||
used. @var{package} is optional and defaults to the LISP package.
|
||||
If @var{package} is @nil{}, then all packages are searched.
|
||||
@end defun
|
||||
|
||||
|
|
@ -2497,7 +2497,7 @@ directory and the default name to be applied to the output files (i.e., the
|
|||
fasl file and the temporary files). @kwd{output-file} itself defaults to
|
||||
@var{input-pathname}. That is, if @kwd{output-file} is not supplied, then the
|
||||
directory and the name of the input file will be used as the default directory
|
||||
and the default name for the output files. The filetypes of the output files
|
||||
and the default name for the output files. The file types of the output files
|
||||
are fixed as follows.
|
||||
|
||||
@multitable {@b{Output File}} {@b{Filetype}}
|
||||
|
|
@ -2950,7 +2950,7 @@ Arguments to functions, lexical and temporary variables are allocated on the C
|
|||
stack. Temporary values saved on the C stack may sometimes be represented as
|
||||
@var{raw data} instead of pointers to heap-allocated cells. Accessing such raw
|
||||
data on the C stack results in faster compiled code, partly because no pointer
|
||||
deferencing operation is necessary, and partly because no cell is newly
|
||||
dereferencing operation is necessary, and partly because no cell is newly
|
||||
allocated on the heap when a new object is created. This is particularly
|
||||
helpful for numeric code which computes with floating point numbers.
|
||||
|
||||
|
|
@ -3240,7 +3240,7 @@ or immediately after the variable that follows @code{&whole}, if @code{&whole}
|
|||
is supplied. @code{&environment} is not allowed within @var{pseudo-var}. Like
|
||||
@code{&whole}, use of @code{&environment} does not affect the processing of the
|
||||
rest of the defmacro lambda-list. If an @code{&environment} parameter is
|
||||
supplied andif this parameter is not used at all, then the @ecl{} compiler
|
||||
supplied and if this parameter is not used at all, then the @ecl{} compiler
|
||||
will issue a warning. To suppress the warning, just remove the parameter from
|
||||
the defmacro lambda-list, or add an @code{ignore} declaration.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue