home *** CD-ROM | disk | FTP | other *** search
- Dear lisper,
-
- This archive contains an Amiga version of CLISP as of 8th January 1994 (with
- patches from 25th January), slightly modified on 7th of February. Please see
- the files clisp.man and README too. Aminet archive names have been shortened
- to fit the 20 characters limit.
-
- There are three distinct binary versions of CLISP. These will be referred as
- *-high, *-low and *-wide. Depending on your machine, you'll be able to run
- one or the other, or all of them for testing purposes.
-
- o The *-low Version:
-
- + has been compiled with a 68000 in mind. It can only deal with a 16MB
- address space ranging from 0 to 0x00FFFFFF. It clears the upper 8 bits of
- a 32 bit address before putting it on the bus and won't forget to check
- the memory it gets from the system.
-
- * checks whether AllocMem(MEMF_ANY) returns memory in the above range. If
- not, and if the CPU is not a 68000, it uses MEMF_24BITDMA (MEMF_CHIP on
- pre-2.0 machines) to ensure that it does not get memory outside the 16MB
- address range. DMA-able memory is a bit too hard a requirement, but there
- are no other flags.
-
- + can be made to run on a A3000 or A4000 by patching the executable to load
- the code and data hunks into CHIP memory (24BITDMA would suffice with
- >=2.0, but one can't say that easily in the load hunk structure). The
- supplied ratom.rexx ARexx script can do this for you, but you really
- don't want to run CLISP out of CHIP memory now that there is the *-high
- version.
-
- o The *-high version:
-
- + has been compiled for 68020 and higher, won't run on 68000 CPUs. It
- doesn't use the floating point coprocessor.
-
- + is able to deal with addresses from 0 to 0x07FFFFFF, thus working on some
- A3000 and A4000 machines. GigaMem uses addresses between 0x20000000 and
- 0x60000000. VMM40 uses adresses at 0x40000000. CLISP cannot run with
- that.
-
- * checks the memory it gets, reverting to MEMF_24BITDMA (>2.0, otherwise
- MEMF_CHIP), like above.
-
- o The *-wide version:
-
- + has been compiled for 68020 and higher, won't run on 68000 CPUs. It
- doesn't use the floating point coprocessor.
-
- + is able to deal with any address and works fine with virtual memory or
- configurations where memory is located above 0x08000000
- (e.g. CSA-Derringer 030). This has been achived at the cost of using
- 64-bit integers. This makes the executable and memory files very large.
-
- o The Lisp-part of CLISP is in the CLisp-*-Part2 archive, e.g. the compiler
- source can be found there. The archive also contains the compiled Lisp
- files (with the .fas extension), enabling you to easily build your own
- lispinit.mem file. You can generate own lispinit.mem file by executing
- lisp.run -x (LOAD"init.fas")(SAVEINITMEM) in a shell, or call (SAVEINITMEM)
- directly when in your Lisp world.
-
- o The complete CLISP source can be found in the clispsrc-<date>.tar.gz
- archive (see file ANNOUNCE). You need to have GNU-zip (gzip) and tar (or
- gtar) to be able to unpack it. I rearchived it for Aminet distribution into
- CLispsrc-<date>.lha.
-
- o If you start (REXX-LOOP), the only exit is the exit-loop.cl ARexx
- script. I'd like comments and ideas for improvements of the ARexx
- interface. See also impnotes.txt.
-
- o CLISP always allocates its own stack and should not cause MungWall or
- Enforcer hits. I don't know whether this stack allocation feature may cause
- compatibility issues with future Amigas.
-
- o The lisp.run executable contains symbolic information. Symbolic information
- will help you report bugs (if you find any, CLISP has been very stable).
-
- o Hints for your config.lsp:
- (defparameter *editor* "ttx WAIT") ; Turbotext editor
- (defparameter *editor* "ced -keepio") ; Cygnus ED (right?)
- (defparameter *default-time-zone* -1) ; default set in defs1.lsp
-
-
- Changes: (_PART_ of CHANGES.LOG in the source tree)
-
- User visible changes
- --------------------
-
- * X3J13 vote <64> is implemented: New macro DESTRUCTURING-BIND.
-
- * The function ED can now edit functions that have been entered in
- interpreted form even if they have later been compiled.
-
- * New function UNCOMPILE. (UNCOMPILE function-name) undoes the effect of
- (COMPILE function-name) if the function's definition had been entered
- in interpreted form.
-
- * The OPEN option :IF-EXISTS :RENAME-AND-DELETE now deletes the renamed
- file. Previously :RENAME-AND-DELETE was equivalent to :RENAME.
-
- * (LISP-IMPLEMENTATION-VERSION) returns a more precise version string.
-
- * X3J13 votes <115> and <114> are implemented: an elaborate LOOP macro.
- New macro LOOP-FINISH.
- Warning: The scoping rules for the iteration variables are hairy. If a
- FOR/AS initialisation form refers to an iteration variable of a subsequent
- FOR/AS clause, the effects are implementation dependent!
-
- * X3J13 vote <120> is implemented: New function MAP-INTO.
-
- * X3J13 vote <79> is implemented: New constants
- LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT,
- LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT,
- LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT,
- LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT,
- LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT,
- LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT,
- LEAST-POSITIVE-NORMALIZED-LONG-FLOAT,
- LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT.
-
- * Fixed a bug in DO-SYMBOLS: A symbol which is exported from a used package
- was considered accessible in the using package even if it was shadowed by
- another present symbol of the same name.
-
- * Fixed a bug in the debugger which caused the BACKTRACE commands to print
- garbage if the current user interface language was not english.
-
- * French support is now complete. Thanks to J÷rg H÷hle.
-
- * The user interface language (english, german or french) can now be chosen
- at startup time through a command line option. The constant *LANGUAGE* has
- been removed, and its value has been removed from *FEATURES*. New macros
- ENGLISH, DEUTSCH, FRANCAIS and LANGUAGE-CASE.
-
- * There is a command line option that makes CLISP behave more like what
- ILISP (a popular Emacs LISP interface) expects.
-
- * The function CLOS:CALL-NEXT-METHOD can now be called with arguments, but
- the check that the set of applicable methods must be the same as for the
- original arguments will be bypassed.
-
- * New functions READ-CHAR-SEQUENCE, WRITE-CHAR-SEQUENCE, READ-BYTE-SEQUENCE,
- WRITE-BYTE-SEQUENCE which perform fast block I/O.
-
- * Errors of type FLOATING-POINT-UNDERFLOW are inhibited in floating point
- computations (and zero is returned instead) during execution of the new
- macro WITHOUT-FLOATING-POINT-UNDERFLOW.
-
- * X3J13 vote <95> is implemented: If the readtable argument passed to
- GET-MACRO-CHARACTER and GET-DISPATCH-MACRO-CHARACTER is NIL, the standard
- readtable is used.
-
- * PROBE-FILE doesn't report an error any more if an intermediate directory
- in the path doesn't exist. NIL is returned instead.
-
- * The DEFCONSTANT warning about redefinition of a constant is inhibited if
- the constant's new and old values are the same (in the sense of EQL).
- Thanks to Marcus Daniels.
-
- * The function INTERACTIVE-STREAM-P knows that if the terminal stream is
- referring to a regular file (via input redirection) it is not interactive.
-
- * There is a user programmable kind of streams, called generic streams.
- New functions MAKE-GENERIC-STREAM, GENERIC-STREAM-CONTROLLER,
- GENERIC-STREAM-P, GENERIC-STREAM-READ-CHAR, GENERIC-STREAM-READ-BYTE,
- GENERIC-STREAM-LISTEN, GENERIC-STREAM-WRITE-CHAR, GENERIC-STREAM-WRITE-BYTE,
- GENERIC-STREAM-WRITE-STRING, GENERIC-STREAM-CLEAR-INPUT,
- GENERIC-STREAM-CLEAR-OUTPUT, GENERIC-STREAM-FINISH-OUTPUT,
- GENERIC-STREAM-FORCE-OUTPUT, GENERIC-STREAM-CLOSE.
- See impnotes.txt for details. Thanks to Marcus Daniels and Don Cohen.
-
- * Fixed a CLOS bug: Generic functions with both optional and keyword
- arguments didn't work.
-
- * Fixed a serious bug in the compiler which caused incorrect code to be
- generated for functions like (LAMBDA (X) (SETQ X 1)).
-
- * Fixed a serious bug in the compiler which caused the compiler to crash
- when compiling functions which contain two or more calls to ASSERT.
-
- * Fixed a bug: The macroexpander of MULTIPLE-VALUE-SETQ built up a
- syntactically illegal form.
-
- * Fixed a bug in the reader: When reading pathnames from the syntax
- #S(PATHNAME ...), #n# references in pathname components were not
- resolved prior to calling MAKE-PATHNAME.
-
- * Fixed a bug in the reader: (read-from-string "1/") signalled an error
- of type DIVISION-BY-ZERO.
-
- * Fixed a bug in the terminal stream: If several consecutive READ-LINE
- operations on the terminal stream were performed without any text
- containing newlines being output between them, the prompt finally got
- duplicated and then became longer and longer.
-
- Installation
- ------------
-
- * All non-Unix versions: Setting the local time zone should now be much
- easier. 122 time zone names are supported.
-
- Other modifications
- -------------------
-
- * Copyright clarification.
-
- * Miscellaneous documentation updates.
-
- * Speedup SUBLIS and NSUBLIS.
-
- * Let all known versions of gcc2 emit dbra instructions for loops. Thanks
- to J÷rg H÷hle.
-
-
- Patches:
-
- Gcc-2.3.3 -O2 -fomit-frame-pointer put several bugs in the compiler
- output. I previously corrected two of them by hand-patching the assembly
- files. Gcc-2.5.7 produces correct output but for 68020 and above machines
- only. The low version is compiled with gcc-2.3.3 and the high and
- wide-versions with gcc-2.5.8. Gcc-2.5.8 put a bug in the -DWIDE version of
- control.d:_C_go. It seemed to me that beta versions of gcc-2.6.0 were not
- stable enough for compilation of the wide version.
-
- Enjoy and send me all sorts of comments, bug reports and suggestions. Please
- mention your (LISP-IMPLEMENTATION-VERSION) and system (especially memory
- location) configuration when doing so.
-
- Joerg Hoehle.
- hoehle@inf-wiss.uni-konstanz.de
-
-