Subject: Announcement: New version of CLISP

From: Bruno Haible <[email-masked]>
Date: Fri, 16 Oct 1998 23:15:13 +0200 (MET DST)

Hi,

It's already on the FTP server for a couple of days; maybe you already
got it. CLISP version 1998-09-09.

Source:
   ftp://ftp2.cons.org/pub/lisp/clisp/source/clispsrc.tar.gz
   ftp://ftp.hrz.tu-darmstadt.de/pub/programming/languages/lisp/clisp/source/clispsrc.tar.gz

Binaries for i386-linux:
   ftp://ftp2.cons.org/pub/lisp/clisp/binaries/i386-linux-libc5/clisp.tar.gz
   ftp://ftp2.cons.org/pub/lisp/clisp/binaries/i386-linux-libc6/clisp.tar.gz

This release is a collective effort of

          Pierpaolo Bernardi
          Sam Steingold
          Bruno Haible
          Gilbert Baumann
          Jörg Höhle

Here is the list of modifications. As you can see, it is now a *lot* closer
to ANSI CL than previous releases, and the move towards ANSI CL continues.

9 September 1998
================

Important note
--------------

* Changed bytecode format. All .fas files generated by previous CLISP versions
  are invalid and must be recompiled.

User visible changes
--------------------

* The 16 MB memory size limit on 32-bit machines is gone. No need for
  wide-mode binaries any more. The "makemake" option --with-wide is not
  supported any more. The command-line option -W is supported for backward
  compatibility, but will be removed in the future.

* New variables *WARN-ON-FLOATING-POINT-CONTAGION* and
  *FLOATING-POINT-CONTAGION-ANSI*.

* New function PROBE-DIRECTORY which tests for the existence of a directory.
  Suggested by many people.

* New FORMAT directives ~/ (ANSI standard) and ~! (a better alternative).

* ANSI CL variable *PRINT-RIGHT-MARGIN* is implemented.

* The functions WRITE and WRITE-TO-STRING take the :RIGHT-MARGIN key argument.

* X3J13 writeup <TYPE-BOOLEAN> is implemented: New type BOOLEAN.
  Suggested by Sam Steingold.

* X3J13 writeup <ARGUMENT-MISMATCH-ERROR-MOON:FIX> is implemented:
  Errors during function calls (too few arguments, too many arguments,
  invalid keyword arguments, odd number of keyword arguments, unrecognized
  keyword arguments) are now of type PROGRAM-ERROR.

* X3J13 writeup <ENSURE-DIRECTORIES-EXIST> is implemented:
  New function ENSURE-DIRECTORIES-EXIST.
  Suggested by Pierpaolo Bernardi.

* X3J13 writeup <ISO-COMPATIBILITY:ADD-SUBSTRATE> is implemented:
  The macro DEFINE-SYMBOL-MACRO is now exported from package COMMON-LISP.
  Suggested by Pierpaolo Bernardi.

* X3J13 writeup <DISPLACED-ARRAY-PREDICATE> is implemented:
  New function ARRAY-DISPLACEMENT.

* X3J13 writeup <CLASS-OBJECT-SPECIALIZER:AFFIRM> is implemented:
  Class objects can now be used as parameter specializer names (not only
  symbols and lists of the form (EQL object)).

* X3J13 writeup <COMPILE-FILE-OUTPUT-FILE-DEFAULTS:INPUT-FILE> is implemented:
  When :OUTPUT-FILE is given to COMPILE-FILE or COMPILE-FILE-PATHNAME, missing
  pathname components are merged in from the input file pathname.

* X3J13 writeup <COMPILE-FILE-PATHNAME-ARGUMENTS:MAKE-CONSISTENT> is
  implemented: COMPILE-FILE-PATHNAME accepts any keyword arguments.

* X3J13 writeup <COMPUTE-APPLICABLE-METHODS:GENERIC> is implemented:
  COMPUTE-APPLICABLE-METHODS is now a generic function.

* X3J13 writeup <CONDITION-SLOTS:HIDDEN> is implemented: Predefined condition
  types have their own private slot names.

* X3J13 vote <57> = writeup <DEFSTRUCT-SLOTS-CONSTRAINTS-NAME:DUPLICATES-ERROR>
  is implemented: Different slots in a structure cannot have names whose
  SYMBOL-NAME are equal.

* X3J13 writeup <CONS-TYPE-SPECIFIER:ADD> is implemented:
  New type specifier (CONS car-type cdr-type).

* X3J13 writeup <DEFMACRO-BLOCK-SCOPE:EXCLUDES-BINDINGS> is implemented:
  The implicit BLOCK generated by DEFMACRO and DEFTYPE encloses only the
  body forms, not the forms occurring in the lambda list.

* X3J13 writeup <DEFSTRUCT-COPIER:ARGUMENT-TYPE> is implemented:
  New function COPY-STRUCTURE.

* X3J13 writeup <JUN90-TRIVIAL-ISSUES:9> is implemented:
  New classes GENERIC-FUNCTION, STRUCTURE-OBJECT, CLASS, METHOD. Removed
  the type STRUCTURE.

* X3J13 writeup <EVALHOOK-STEP-CONFUSION:X3J13-NOV-89> is implemented:
  Don't export EVALHOOK, APPLYHOOK, *EVALHOOK*, *APPLYHOOK* from package
  COMMON-LISP any more.

* X3J13 writeup <MACRO-DECLARATIONS:MAKE-EXPLICIT> is implemented: NOTINLINE
  declarations of macros having special compiler treatment are now respected.

* X3J13 writeups <DEFSTRUCT-PRINT-FUNCTION-INHERITANCE:YES> and
  <DEFSTRUCT-PRINT-FUNCTION-AGAIN:X3J13-MAR-93> are implemented:
  DEFSTRUCT accepts an option :PRINT-OBJECT, similar to :PRINT-FUNCTION,
  and each of these options causes a method on PRINT-OBJECT to be installed.

* X3J13 writeup <SPECIAL-FORM-P-MISNOMER:RENAME> is implemented: New function
  SPECIAL-OPERATOR-P. The function SPECIAL-FORM-P still exists, but its use
  generates a compiler warning.

* X3J13 writeup <FLOATING-POINT-CONDITION-NAMES:X3J13-NOV-89> is implemented:
  New condition types FLOATING-POINT-INEXACT, FLOATING-POINT-INVALID-OPERATION.

* Fixed a bug: Reading objects in #n# syntax into typed structure slots gave
  an error if the structure's constructor was not compiled.
  Reported by Sam Steingold <[email-masked]>.

* BUTLAST and NBUTLAST are now ANSI CL compliant: They signal an error if the
  argument is a dotted list of length 0. (Stupid.)

* The macro WITH-OUTPUT-TO-STRING is now ANSI compliant.

* Added FFI support for NetBSD/m68k.
  Thanks to Jörn Clausen <[email-masked]>.

* Use of the deprecated functions GENTEMP and SET now generates a compiler
  warning.

* Stricter syntax checking for DO and DO*.

* When CLOS:CALL-NEXT-METHOD is called with arguments, it is now checked that
  the set of applicable methods is the same as for the original arguments, in
  interpreted code only.

* The CLX documentation now also exists in HTML format.
  Thanks to Gilbert Baumann <[email-masked]>.

* The normal read-eval-print loop doesn't call (CLEAR-INPUT *STANDARD-INPUT*)
  any more. This means that under X11, cut and paste of multiple lines into
  an xterm running clisp now works.
  Suggested by Sam Steingold.

* When opening socket servers, ignore EADDRINUSE errors coming from other
  sockets, in TIME_WAIT or CLOSE_WAIT state, hanging around on the port.
  Suggested by Don Cohen.

* Fixed a bug: When *PRINT-PRETTY* = T, (PRINC #\Newline) often caused two
  newline characters to be output instead of a single one.

* Fixed a bug: The sequence type functions refused to handle sequence types
  of the form ([SIMPLE-]ARRAY eltype 1). SUBTYPEP returned wrong results
  for type specifiers of the form ([SIMPLE-]ARRAY eltype n).

* Fixed a bug: GET-MACRO-CHARACTER on a dispatch macro character doesn't
  result in an error any more.

* Fixed a bug in ECASE, ETYPECASE, CCASE, CTYPECASE.
  These macros now accept T and OTHERWISE as keys.

* Fixed a bug: OPEN did not accept type specifiers defined by DEFTYPE as
  :ELEMENT-TYPE argument.

* Fixed a bug in the LOOP macro: Forms containing REPEAT clauses were
  executed too often in the presence of FOR-= clauses.

* Fixed a bug: The SPACE macro returned a list of the form's values, instead
  of the values themselves.

* Fixed a bug, implement X3J13 writeup <PRINC-READABLY:X3J13-DEC-91>:
  When *PRINT-READABLY* = T, (PRINC string) caused the string to be output
  in double-quotes instead of literally.

* X3J13 writeup <IGNORE-USE-TERMINOLOGY:VALUE-ONLY> is implemented:
  A "variable is used despite of IGNORE declaration" warning is not emitted
  any more for a variable that is only assigned to and not used for value.
  Suggested by Pierpaolo Bernardi.

* Fixed a bug in function FILE-AUTHOR on Win32.

* Fixed a bug: CLISP was unable to determine the user's homedir in
  certain (obscure) circumstances.

* Don't warn anymore if someone modifies one of the standard generic
  functions of CL like PRINT-OBJECT and INITIALIZE-INSTANCE.

Portability
-----------

* Added AmigaOS support for the socket functions. It's not perfect, but
  sufficient for writing socket clients.
  Thanks to Jörg Höhle.

* Added support for PowerPC running MkLinux.

Other modifications
-------------------

* `clisp-link' has a new command `run', to run a linking set with some
  modules loaded. If CLISP has been configured with option
  --with-dynamic-modules, this is much faster than constructing a
  temporary linking set.
  Suggested by Gilbert Baumann <[email-masked]>.

* Compiling IFs with no else part now produce better code (Jörg Höhle).

* Speed up I/O to *STANDARD-INPUT*, *STANDARD-OUTPUT* and *TERMINAL-IO*:
  If standard input is redirected from a file, the input side of *TERMINAL-IO*
  will be buffered. If standard output is redirected to a file, the output
  side of *TERMINAL-IO* will be buffered.

* Dropped the STDWIN library.

* Added bindings to libc for Linux with libc6 (aka glibc 2.0).

* Miscellaneous documentation updates.

---

From: spoon <[email-masked]>
Date: Sat, 17 Oct 1998 16:04:11 +1100 (EST)

> got it. CLISP version 1998-09-09.

Hi,
	Great to see a new release, but when i download I get
clisp-1998-08-29, is this just a book-keeping error?

Simon

-- 
*****************************************************************
*  Simon Wotherspoon                               _--_|\       *
*  Maths Dept, University of Tasmania             /  Aus \      *
*  Tasmania, Australia                            \_.--._/      *
*  [email-masked]                      v       *
*****************************************************************

---

From: Bruno Haible <[email-masked]>
Date: Sat, 17 Oct 1998 23:41:14 +0200 (MET DST)

> clisp-1998-08-29, is this just a book-keeping error?

You can consider them the same. The only difference between the one
you got and version 1998-09-09 is a dozen of spanish translations of
messages, and the date.

Bruno

---

From: Dorai Sitaram <[email-masked]>
Date: Tue, 20 Oct 1998 09:40:11 -0400 (EDT)

What is the correct CLISP binary (i386-linux-libc5 or
-libc6) to suggest for someone using Red Hat 5.1 Linux
without personal modification?

Thanks.

--d

---

From: [email-masked]
Date: Tue, 20 Oct 1998 09:49:33 -0400

> without personal modification?

i have an rpm which i will be uploading to redhat's contrib directory
in the next couple of days. i'll announce it here--and on the
redhat-announce list.

--will

---

From: Sam Steingold <[email-masked]>
Date: 20 Oct 1998 09:55:14 -0400

>>>> In message <[email-masked]>
>>>> On the subject of "Re: Announcement: New version of CLISP"
>>>> Sent on Tue, 20 Oct 1998 06:27:44 -0700 (PDT)
>>>> Honorable Dorai Sitaram <[email-masked]> writes:

rh5.1 uses glibc2 aka libc6.

-- 
Sam Steingold (http://www.goems.com/~sds) running RedHat5.1 GNU/Linux
Micros**t is not the answer.  Micros**t is a question, and the answer is Linux,
(http://www.linux.org) the choice of the GNU (http://www.gnu.org) generation.
I'd give my right arm to be ambidextrous.

---

From: Bruno Haible <[email-masked]>
Date: Tue, 20 Oct 1998 16:11:25 +0200 (MET DST)

> without personal modification?

When you do "ls -l /lib/libc.so.*", I bet it will show you libc.so.6.
Therefore you need the libc6 binary.

Bruno

---

From: Raymond Toy <[email-masked]>
Date: Tue, 20 Oct 1998 10:50:00 -0400

>>>>> "Bruno" == Bruno Haible <[email-masked]> writes:

    >> without personal modification?

    Bruno> When you do "ls -l /lib/libc.so.*", I bet it will show you libc.so.6.
    Bruno> Therefore you need the libc6 binary.

RH 5.1 also comes with libc5 libraries (if you install them?) so
either binary should work.  I ran a libc5 version of CMUCL on my RH
5.1 system.

Ray

---

From: David Tillman <[email-masked]>
Date: 20 Oct 1998 13:15:36 -0500

Does / will CLISP support any type of thread mechanism
  or other form of mult-process control?

  -Dave

--
David Tillman           | Sparrow Information Systems | Contract C, C++, and
[email-masked] |     www.sparrowsys.com      | PERL code for UNIX.

---

From: Bruno Haible <[email-masked]>
Date: Tue, 20 Oct 1998 23:26:38 +0200 (MET DST)

>   or other form of mult-process control?

I hope so. We are working on it and have done about 15% of the work
involved. It will take a couple of months (at least) it this is usable.

I've been told that CMUCL has some kind of multithreading (with its
own scheduler, no native OS threads).

Bruno

---

From: David Tillman <[email-masked]>
Date: Wed, 21 Oct 1998 13:50:40 -0500

>>>> Bruno Haible <[email-masked]> wrote:

>own scheduler, no native OS threads).

  Ok, is there some type of fork procedure?

  The reason I ask is that I have been experimenting with
  writing http servers in different varieties of LISP and Scheme
  as method of becoming familiar with the language.

  See http://www.cannonexpress.com:1080 for an example.

  Obviously, it won't do to have the server blocked on a connection
  while other connections are waiting to be made. In MzScheme I start
  a new thread with each server request. In Guile I fork.

  Any thoughts on how to do this with CLISP?

  -Dave

---

From: Giuseppe Attardi <[email-masked]>
Date: Thu, 22 Oct 1998 11:51:06 +0200 (MET DST)

Just for the record, ECL has had threads for some time now.
It uses its own scheduler whose source code is available:

   ftp://ftp.di.unipi.it/pub/lang/lisp

-- Beppe

---

From: Dorai Sitaram <[email-masked]>
Date: Thu, 22 Oct 1998 13:10:10 -0400 (EDT)

> in the next couple of days. i'll announce it here--and on the

Thanks, will.  I tried the binary marked libc6 and it
worked as advertised.  However: I found that
clisp-link-kit wouldn't work (I was looking to get
regexps) and neither did my attempt to "make" the full
version.  Would there be any obstacle to your
automatically including the regexp extension in the
base executable you will create for your rpm?  (Unless
of course you'll be providing the "full" executable.)

--d

---

From: [email-masked]
Date: Thu, 22 Oct 1998 17:10:03 -0400

> of course you'll be providing the "full" executable.)

I'm not on the machine with the rpm, now, but if memory serves
everything is in the final dump except the lib6 bindings--and those
due to prototype conflicts.

--will