2000-03-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * Version 2000-03-06 released.

2000-03-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * unix.d: Use clock_t instead of CLOCK_T.
        * encoding.d: Include <string.h>.
        * hashtabl.d (hashcode4_atom): Add default case to switch statement.

2000-03-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * dutch.lsp: New file, from Tijs van Bakel <smoke@casema.net>.
        * init.lsp: Load it.
        * makemake.in (LPARTS): Add dutch.
        * spvw_language.d (language_dutch): New macro.
          (init_language_from): Test for values NEDERLANDS and DUTCH.
          (init_language): Deal with language_dutch.

2000-03-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * encoding.d (charset_range): Define only if #ifdef UNICODE.
          (init_encodings): Initialize O(internal_encoding) only if #ifdef
          UNICODE.
        * stream.d (FILE-STRING-LENGTH): If UNICODE is not defined, assume
          min_bytes_per_char and max_bytes_per_char to be 1.

2000-03-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (SOCKET-SERVER): In the error message, output the argument,
          not the symbol STREAM.

2000-03-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * defmacro.lsp (macro-call-error): Add missing ~S to English
        translation.
        * describe.lsp (describe-object): Fix English message.
        Reported by Tijs van Bakel <smoke@casema.net>.

2000-02-29  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (sbNvector_atype, bNvector_atype, type_bits_to_atype):
          New macros.
        * array.d (copy_sbvector, array_element_type, test_displaced): Use
          sbNvector_atype and bNvector_atype.
        * hashtabl.d (hashcode_bvector): Use sbNvector_atype.
        * sequence.d (get_seq_type): Use sbNvector_atype and bNvector_atype.

2000-02-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in: Don't install emacs/*.el any more.

2000-02-22  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * arimips.d (subx_loop_down): If compiling for n32 ABI, the fifth
          argument comes in a register, not from the stack.

2000-02-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (oint_symbolflags_shift): Remove obsolete definition.

2000-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Permit setting *terminal-encoding* to an iconv based stream.
        * lispbibl.d (set_terminalstream_external_format): New declaration.
        * stream.d (set_terminalstream_external_format): New function.
        * encoding.d (SYSTEM::SET-FOREIGN-ENCODING): Call it.

2000-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * errunix.d (init_errormsg_table): Add EILSEQ.

2000-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * encoding.d (encoding_from_name): Recognize ISO-8859-3.

2000-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * configure: Create a libiconv subdirectory, link over the configure
          script, and run it with --enable-static --disable-shared.
        * win32msvc/INSTALL: Must pre-build libiconv.
        * makemake.in (USE_LIBICONV, XCL_ICONVLIB): New variables.
          (FILES): On Unix, add libiconv.a.
          (LIBS): Ad $XCL_ICONVLIB.
          (EVERY_INCLUDES_H): Add iconv.h.
          (iconv.h, libiconv.a): New targets.
          (clean1): Also remove libiconv.a.
          (clean4): Also remove iconv.h.
        * lispbibl.d (GNU_LIBICONV): Define always. Include "iconv.h".
          (max_bytes_per_chart): Increase to 8, for ISO-2022-CN[-EXT].
        * stream.d: Treat GNU_LIBICONV like HAVE_ICONV.
          (CLISP_INTERNAL_CHARSET): If using GNU_LIBICONV, define to
          "UCS-2-INTERNAL".
          (iconv_init): New macro.
          (iconv_mblen): After iconv_open, call iconv_init. Treat E2BIG
          correctly.
          (iconv_mbstowcs): After iconv_open, call iconv_init. Eliminate gcc
          warning.
          (iconv_wcslen): After iconv_open, call iconv_init. Treat E2BIG
          correctly.
          (iconv_wcstombs): After iconv_open, call iconv_init.
          (iconv_range): Likewise.
          (ChannelStream_init): Likewise.
        * pseudofun.d: Treat GNU_LIBICONV like HAVE_ICONV.
        * constsym.d: Add MACINTOSH alias. Add symbols for newly imported
          encodings from libiconv.
        * encoding.d: Treat GNU_LIBICONV like HAVE_ICONV.
          (iconv_first_sym, iconv_last_sym, iconv_num_encodings): New macros.
          (MAKE-ENCODING): For iconv-based encodings, use max_bytes_per_chart,
          not 6.
          (init_encodings): Define CHARSET:MACINTOSH and all symbols
          corresponding to new imported encodings from libiconv.
          (encoding_from_name): Map "eucJP" etc. to the new encodings.
        * type.lsp (table filled by get-charset-range): Avoid filling the
          cache with large interval lists (comparatively easy to compute).
        * Makefile.devel (CONFIGURES): Add libiconv/configure.
          (libiconv/autoconf/aclocal.m4, libiconv/configure): New rules.

2000-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * utils/unicode/Makefile (ALL): Add nls_iso8859_16.c.
          (nls_iso8859_16.c): New rule.
        * nls_iso8859_16.c: New file.
        * encoding.d: Include nls_iso8859_16.c.
          (nls_tables): Add nls_iso8859_16.
          (encoding_from_name): Accept ISO-8859-16.
        * pseudofun.d (nls_iso8859_16_table): New entry.
        * makemake.in (NLS_INCLUDES): Add nls_iso8859_16.

2000-01-22  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * src/asmi386.sh: Terminate the here documents with EOF, not \EOF.

2000-01-15  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * modules/regexp/regexp.lsp (regexp-exec): Remove wrong declaration.

2000-01-12  Sam Steingold  <sds@gnu.org>

	* modules/regexp/regexp.lsp (regexp-compile): use `assert'
	(regexp-exec): `assert' that `string'  is a string

2000-01-10  Sam Steingold  <sds@gnu.org>

	* posixmisc.d: new file
	* unixaux.d (sysinfo_, resource_usage_limits_): moved to
	posixmisc.d

1999-12-31  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pathname.d (translate_version): Don't access Car(*subst) before
          checking whether consp(*subst).

1999-12-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_ctype.d (init_ctype): Recognize more language codes:
          "af" (afrikaans), "ca" (catalan), "eu" (basque), "fo" (faeroese),
          "ga" (irish), "gd" (scottish), "gl" (galician), "sq" (albanian),
          "eo" (esperanto), "mt" (maltese), "be" (byelorussian),
          "et" (estonian), "lt" (lithuanian), "lv" (latvian), "uk" (ukrainian).
          Recognize more aliases: "english", "slovenian", "macedonian",
          "serbian", "arabic".
          Change default: KOI8-R for "ru" (russian) instead of ISO-8859-5,
          ISO-8859-5 for "sr" instead of ISO-8859-2.

1999-12-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * utils/unicode/Makefile (ALL): Add nls_koi8_u.c.
          (nls_koi8_u.c): New rule.
        * nls_koi8_u.c: New file.
        * spvw_ctype.d (init_ctype): Accept KOI8-U.
        * encoding.d: Include nls_koi8_u.c.
          (nls_tables): Add nls_koi8_u.
          (encoding_from_name): Accept KOI8-U.
        * pseudofun.d (nls_koi8_u_table): New entry.
        * makemake.in (NLS_INCLUDES): Add nls_koi8_u.

1999-12-29  Sam Steingold  <sds@gnu.org>

	* unixaux.d (sysinfo_): added _SC_THREAD_THREADS_MAX
	* posix.lsp (sysinfo): ditto

1999-12-28  Sam Steingold  <sds@gnu.org>

	* posixmath.d: redefine `floor' correctly
	(to_double, N_D): use functions instead of macros
	* posix.lsp: `print-object' for `rlimit' and `user-data'
	* init.lsp: load posix after clos
	* eval.d: removed all syscalls
	* constpack.d: added package POSIX
	* spvw.d, package.d: removed POSIX

1999-12-23  Sam Steingold  <sds@gnu.org>

	* subr.d, constsym.d: added `bogomips' and `resource_usage_limits_'
	* posix.lsp: export `bogomips' and `resource-usage-limits',
	reduce `sysinfo'
	* posixmath.d (bogomips): LISPFUNN now
	* unixaux.d (sysinfo): use uname(2) instead of sysinfo(2),
	(resource_usage_limits_): new LISPFUNN

1999-12-22  Sam Steingold  <sds@gnu.org>

	* unixaux.d (sysinfo): new function
	* subr.d, constsym.d: added `sysinfo'
	* eval.d: removed the posix functions
	* init.lsp: load the new file posix.lsp
	* posix.lsp: new file
	* makemake.in (LPARTS): added posix
	* pathname.d (user_data_): require argument
	* posixmath.d (bogomips): new function
	* socket.d (resolve_host_ipaddr_): require argument

1999-12-21  Sam Steingold  <sds@gnu.org>

	* posixmath.d: new file; erf(3m), bessel(3m) and gamma(3m)
	are now accessible in the package POSIX with --export-syscalls.
	* makemake.in, gettext/po/Makefile.devel: added `posixmath'.
	* lisparit.d: include posixmath.c.
	* subr.d, eval.d, constsym.d: added the functions.
	* constobj.d, package.d (init_packages), spvw.d
	(init_symbol_tab_2): added package POSIX.
	* socket.d (resolve_host_ipaddr): moved to POSIX.
	* pathname.d (file_stat, user_data): ditto.
	* compiler.lsp (c-DIRECT-FUNCTION-CALL): mention the arithmetic
	functions.
	(*deprecated-functions-list*): do not deprecate functions in POSIX.
	* init.lsp: export the functions from POSIX.

1999-12-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (iconv_wcslen): At the end, call iconv with NULL input.
          (iconv_wcstombs): At the end of the standalone case, call iconv with
          NULL input.
          (oconv_unshift_output_unbuffered): New macro.
          (oconv_unshift_output_unbuffered_): New function.
          (finish_output_unbuffered, force_output_unbuffered, close_ochannel):
          Call oconv_unshift_output_unbuffered.
          (oconv_unshift_output_buffered): New macro.
          (oconv_unshift_output_buffered_): New function.
          (finish_output_buffered, close_buffered): Call
          oconv_unshift_output_buffered.

1999-12-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * autoconf/aclocal.m4 (CL_WORDS_LITTLEENDIAN): Update for
          autoconf-2.12. Use AC_CACHE_CHECK instead of AC_CHECK_VAL.

1999-12-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * autoconf/aclocal.m4 (CL_ICONV): Check for the iconv function twice,
          once in libc and once in libiconv, for OSF/1 and FreeBSD. Define
          LIBICONV.
        * makemake.in: Use @LIBICONV@ like @LIBTERMCAP@ and @LIBDL@.

1999-12-05  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * utils/unicode/ftp.unicode.org/UnicodeData.txt: Upgrade to Unicode
          version 3.0.

1999-12-05  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * utils/unicode/Makefile: Use plain-text tables instead of *.in files.
        * utils/unicode/nls_table.c: New file.
        * utils/unicode/nls_table.java, utils/unicode/nls_txt_to_in.java:
          Remove files.
        * utils/unicode/ftp.unicode.org/*.TXT: Remove files.

1999-12-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (iconv_mbstowcs, iconv_wcstombs): When called from a
          stream, and when valid data is followed by invalid data (EILSEQ),
          return the converted valid data and don't signal an error yet.

1999-11-30  Sam Steingold  <sds@gnu.org>

	* spvw.d (init_object_tab): add :SYSCALLS to *FEATURES* when
	EXPORT_SYSCALLS is defined.

1999-11-27  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * encoding.d (utf8_mblen, utf8_mbstowcs): Make the UTF-8 decoder
          "safe": Reject overlong byte sequences.

1999-11-27  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (char_width): New declaration.
        * charstrg.d (non_spacing_table_data, nonspacing_table_ind): New
          arrays.
          (char_width, CHAR-WIDTH, STRING-WIDTH): New functions.
        * stream.d (wr_ss_lpos): Call char_width instead of graphic_char_p.
          Don't assume every character increases the line position by 1.
          (write_char): Likewise.
        * io.d (pphelp_string_width): New function.
          (justify_end_eng, justify_end_weit): Use pphelp_string_width instead
          of the string's length.
        * compiler.lsp (subr-info): Add char-width and string-width.
        * describe.lsp (write-to-short-string): Use string-width instead of
          the string's length.
        * format.lsp (format-padded-string, format-justified-segments):
          Likewise.

1999-11-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (Array_type_simple_bit_vector): New macro.
          (simple_bit_vector_p, bit_vector_p): Use it.
        * spvw_typealloc.d (allocate_bit_vector): Likewise.

1999-11-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * asmi386.sh and others: Use temporary files for the sed scripts.
          GNU sed-2.05 concatenates multiple -e options to a single script
          with embedded newlines, GNU sed-3.02 does not.

1999-11-09  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * autoconf/acgeneral.m4 (AC_ARG_PROGRAM): Create `conftestsed' once
          only.

1999-11-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pathname.d (directory_diff_ab): Set new_piece to
          (cons ':directory subdirs), not (list ':directory subdirs).

1999-11-08  Valeriy E. Ushakov <uwe@ptc.spbu.ru>

        * lispbibl.d (NEED_temp_mv_count, NEED_temp_value1): Define if
          SPARC && UNIX_NETBSD.

1999-11-10  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (TheSarray, TheSbvector, TheCodevec): Fix typo.

1999-11-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * modules/clx/mit-clx/clx.lsp (base-char): Don't redefine in CLISP.

1999-11-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * affi.d (affi_call_argsa): Treat simple 8/16/32-bit-vectors like
          non-simple ones. Use array_displace_check instead of
          iarray_displace_check.
        * stream.d (test_n_bytes_args): Use array_displace_check instead of
          iarray_displace_check.
        * sequence.d (READ-BYTE-SEQUENCE, WRITE-BYTE-SEQUENCE): Likewise.

1999-10-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * conditio.lsp (define-condition): Accept a :DEFAULT-INITARGS option.

1999-10-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (elt_reverse, elt_nreverse): New declarations.
        * array.d (elt_reverse, elt_nreverse): New functions.
        * sequence.d (REVERSE): For vectors, use elt_reverse.
          (NREVERSE): For vectors, use elt_nreverse.

1999-10-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (uint1_p, uint2_p, uint4_p): New macros.
          (fehler_index_range, fehler_store, elt_copy, elt_move, elt_fill):
          New declarations.
        * array.d (fehler_index_range): Make global.
          (fehler_store): New function, taken out of storagevector_store.
          (storagevector_store): Call it.
          (bit_copy, elt_copy_*_*, elt_copy): New functions.
          (elt_move_*, elt_move): New functions.
          (elt_fill): New function.
          (VECTOR-PUSH-EXTEND): Use the elt_copy_*_* functions.
          (ssbvector_push_extend): Use elt_copy_8Bit_8Bit.
          (make_storagevector): Use elt_fill.
          (reshape): Use elt_copy for speedup.
        * sequence.d (fehler_vector_index_range): New function.
          (copy_seqpart_into): For vectors, use elt_copy or elt_move.
          (MAKE-SEQUENCE, FILL): For vectors, use elt_fill.

1999-10-29  Sam Steingold  <sds@ksp.com>

	* modules/regexp/regexp.lsp (with-loop-split): New macro.
	(regexp-compile, regexp-exec, regexp-split): New functions.
	(match-once, %match): Use `regexp-compile' and `regexp-exec'.
	(regexp-compile, regexp-exec, regexp-split, with-loop-split): Export.

1999-10-22  Sam Steingold  <sds@ksp.com>

	* modules/clx/new-clx/demos/clx-demos.lsp (x-host-display):
	return 3 values (host, server, screen).
	Compile `qix' and `socoban' when compiling `clx-demos'.

1999-10-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * array.d (bit_op): Fix memory overrun bug. Require count > 0.
          (bit_up): Test for len==0 before calling bit_op.

1999-10-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * array.d (bit_compare): Fix memory overrun bug. Require count > 0.
          Optimize the case index1 == index2 mod 8.
        * lispbibl.d (bit_compare): Require count > 0.
        * predtype.d (equal): Test for len1==0 before calling bit_compare.

1999-10-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d: Use __sun, not __sun__, as a test for Solaris.

1999-10-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * array.d (bit_compare, bit_op): Use `const'.

1999-10-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * array.d (bitpack, uint_bitpack, ...): Use 32-bit words if possible.

1999-10-18  Sam Steingold  <sds@ksp.com>

	* modules/clx/new-clx/demos/clx-demos.lsp: new file.
	define the clx-demos package and load the other demos.
	(getenv): get the environment variable.
	(x-host-display): parse $DISPLAY.
	(x-open-display): open the display according to $DISPLAY.
	* modules/clx/new-clx/demos/qix.lsp (qix): use `x-open-display'.
	* modules/clx/new-clx/demos/sokoban.lsp (init-sokoban): use
	`x-open-display'.

1999-10-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Introduce new primitive types for simple vectors with element-type
        (UNSIGNED-BYTE n), n = 2,4,8,16,32.
        * lispbibl.d (STANDARD_8BIT_TYPECODES): Define sb2vector_type etc.
          and b2vector_type etc. Define case_sb2vector, case_ob2vector,
          case_b2vector etc.
          (case_array): Include case_b2vector etc.
          (Rectype_b2vector, Rectype_Sb2vector, etc.): New rectype values.
          (arrayflags_notbytep_bit): Remove.
          (Array_type_b2vector, Array_type_sb2vector, etc.): New macros.
          (TheSarray, TheSbvector): Add sb2vector_type etc.
          (TheCodevec): Needs only s8bvector_type.
          (TheIarray): Add b2vector_type etc.
          (TheVarobject, ThePointer): Add sb2vector_type, b2vector_type, etc.
          (vectorp, simplep, array_simplep, simple_string_p, stringp): Update
          for changed Rectype values.
          (simple_bit_vector_p, bit_vector_p): Take two arguments now.
          (byte_vector_p, general_byte_vector_p): Remove macros.
          (arrayp): Update for changed Rectype values.
          (cclosurep): Assume the codevector is an 8bit-vector.
          (case_Rectype_Sb2vector_above, case_Rectype_ob2vector_above,
           case_Rectype_b2vector_above, etc.): New macros.
          (allocate_bit_vector): Take two arguments now.
          (DYNAMIC_BIT_VECTOR): Update.
          (allocate_byte_vector): Remove declaration.
        * spvw_objsize.d (size_sb2vector etc.): New macros.
          (objsize): Add cases for sb2vector, ob2vector, etc.
          (objsize_sb2vector etc.): New inline functions.
          (init_objsize_table): Add cases for sb2vector, ob2vector, etc.
        * spvw_global.d (init_mem_heaptypes): Add cases for sb2vector,
          ob2vector, etc.
        * spvw_genera1.d (walk_area): Add cases for ob2vector etc. and
          Rectype_b2vector, Rectype_Sb2vector etc.
          (build_old_generation_cache): Add cases for ob2vector etc. and
          Rectype_b2vector, Rectype_Sb2vector etc.
        * spvw_update.d (update_varobject): Add cases for ob2vector etc. and
          Rectype_b2vector, Rectype_Sb2vector etc.
        * spvw_garcol.d (gc_mark): Add cases for sb2vector, ob2vector, etc.
          and Rectype_b2vector, Rectype_Sb2vector etc.
        * spvw_typealloc.d (allocate_bit_vector): Take two arguments now.
          (allocate_handle): Update.
        * spvw_circ.d (get_circ_mark): Add cases for b2vector etc. and
          Rectype_b2vector etc.
          (get_circ_unmark): Likewise.
          (subst, subst_circ_mark, subst_circ_unmark): Likewise.
        * array.d (copy_sbvector): Make it work with any simple-[n]bit-vector.
          (allocate_byte_vector): Remove function.
          (iarray_displace, iarray_displace_check, array_displace_check):
          Remove special treatment of indirect byte-arrays.
          (storagevector_aref, storagevector_store): Update: storage-vectors
          are now always simple.
          (array_element_type): Update.
          (BIT, SBIT): Likewise.
          (bit_up): Simplify: Array_type_bvector now implies Atype_Bit. Don't
          set arrayflags_notbytep_bit.
          (VECTOR-PUSH-EXTEND): Use allocate_bit_vector in place of
          allocate_byte_vector.
          (allocate_bit_vector_0): Update.
          (make_ssstring): Don't set arrayflags_notbytep_bit.
          (make_ssbvector): Create an 8Bit vector.
          (ssbvector_push_extend): Update.
          (make_storagevector): Use allocate_bit_vector in place of
          allocate_byte_vector.
          (test_displaced): Update.
          (MAKE-ARRAY): Update. Don't set arrayflags_notbytep_bit.
          (reshape): Update.
          (SYS::MAKE-BIT-VECTOR): Update.
        * eval.d (get_closure): Create an 8Bit vector.
          (eval_closure, apply_closure, funcall_closure): Assume the
          codevector is an 8bit-vector.
        * record.d (SYS::CLOSURE-CODEVEC): Likewise.
          (SYS::MAKE-CODE-VECTOR): Create an 8bit-vector.
          (SYS::%MAKE-CLOSURE): Assume the codevector is an 8bit-vector.
        * hashtabl.d (hashcode_bvector): Remove special treatment of indirect
          byte-arrays.
          (hashcode3_atom): Treat sb2vector_type, b2vector_type etc. and
          Rectype_Sb2vector, Rectype_b2vector etc.
          (hashcode4_vector_2Bit etc.): Remove ->data indirection for storage
          vectors.
          (hashcode4_vector): Update.
          (hashcode4_atom): Treat b2vector_type etc. and Rectype_b2vector etc.
          (sxhash_atom): Likewise.
        * predtype.d (equal): Simplify: Array_type_bvector now implies
          Atype_Bit.
          (elt_compare_T_2Bit etc., elt_compare_Bit_2Bit etc. etc.): Remove
          ->data indirection for storage vectors.
          (elt_compare): Update.
          (equalp): Treat b2vector_type etc. and Rectype_b2vector etc.
          (BIT-VECTOR-P, SIMPLE-BIT-VECTOR-P): Update.
          (TYPE-OF, CLASS-OF): Simplify: case_obvector now implies Atype_Bit.
          Treat sb2vector etc. and ob2vector etc. and Rectype_Sb2vector etc.
          and Rectype_ob2vector etc.
          (COERCE): Update. Optimize treatment of result-type = ARRAY/VECTOR/
          SIMPLE-ARRAY.
          (enum_hs_simple_2bit_vector etc., enum_hs_2bit_vector): New enum
          items.
          (enum_hs_byte_vector): Remove enum item.
          (heap_statistics_mapper): Update. Treat sb2vector etc. and ob2vector
          etc. and Rectype_Sb2vector etc. and Rectype_ob2vector etc.
        * init.lsp: Export simple-2bit-vector etc. and 2bit-vector etc. Don't
          export BYTE-VECTOR.
        * sequence.d (get_seq_type): Update.
          (READ-BYTE-SEQUENCE, WRITE-BYTE-SEQUENCE): Remove ->data indirection
          for storage vectors.
        * io.d (allocate_syntax_table): Allocate an 8Bit-vector.
          (init_reader): Don't set arrayflags_notbytep_bit.
          (test_dots, read_internal, uninterned_reader): Assume an 8bit-vector.
          (bit_vector_reader, array_reader, structure_reader, closure_reader):
          Update.
          (prin_object_dispatch): Treat b2vector like normal vector.
          (pr_orecord): Likewise.
          (pr_closure, pr_cclosure_codevector): Assume the codevector is an
          8bit-vector.
        * encoding.d (string_to_asciz, string_to_asciz_): Create an
          8bit-vector.
        * stream.d (make_unbuffered_stream, make_buffered_stream): Update.
          (rd_ch_terminal3): Assume ASCIZ-Strings are 8bit-vectors.
          (test_n_bytes_args): Simplify test for 8bit-vector.
          (SYS::READ-N-BYTES, SYS::WRITE-N-BYTES): Remove ->data indirection.
          (SYSTEM::BUILT-IN-STREAM-SET-ELEMENT-TYPE): Update.
        * lisparit.d (make_random_state): Update.
        * pathname.d (EXECUTE): Assume ASCIZ-Strings are 8bit-vectors.
        * foreign.d (convert_from_foreign_array_fill): Remove ->data
          indirection.
          (convert_to_foreign): Simplify test for 8/16/32bit-vector. Remove
          ->data indirection.
        * affi.d (affi_call_argsa, SYSTEM::MEM-READ, SYSTEM::MEM-WRITE-VECTOR):
          Update. Simplify test for 8/16/32bit-vector.

1999-10-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make the TYPECODES model more extensible.
        * lispbibl.d (SUN4_29_1, SUN4_29_2, ACORN_1, ACORN_2, UNIX_SYSV_UHC_2):
          Remove definitions.
          (TYPECODES): Don't define if we can force alignof(subr_) = 4.
          (oint_type_mask, oint_addr_mask): Remove most old, hand-determined
          definitions.
          (TB7, ..., TB0): Never define TB5 to -1.
          (SUN3_TYPECODES, PACKED_TYPECODES, STANDARD_TYPECODES,
           SIXBIT_TYPECODES, SEVENBIT_TYPECODES): Remove all. Replace with
          STANDARD_8BIT_TYPECODES.
          (BTB7, ..., BTB0): Define.
          (addressbus_mask): Use SUN4_29 instead of SUN4_29_1.
          (subr_): Force alignment 4 if necessary.
          (vectorp, simplep, array_simplep, arrayp): Update for new typecodes.
        * genclisph.d (subr_): Force alignment 4 if necessary.
          (vectorp, arrayp): Update for new typecodes.
        * spvw.d (init_subr_tab_1): If NO_TYPECODES, verify subr_ alignment.
        * spvw_memfile.d (memflags): Update.

1999-10-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_garcol.d (update): Insert braces to avoid gcc warning.

1999-10-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * arilev0.d (sign_of_sint32): For SPARC64, define using shifts.
          (sign_of_sint16): Likewise.
          (mulu16): For SPARC64, use the builtin "umul".
          (mulu16_): Like for SPARC, also for SPARC64.
          (mulu24): For SPARC64, use the builtin "umul".
          (mulu32_): Like for SPARC, also for SPARC64.
          (divu_3216_1616, divu_3232_3232, divu_6432_3232, divu_32_rest,
           isqrt_64_32): Like for SPARC, also for SPARC64.
        * intlog.d (integerlength8, integerlength16, integerlength32, ord2_32):
          Don't use SPARC32 version for SPARC64.

1999-10-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * utils/unicode/Makefile: Add nls_jisx0201.c to the targets.
          In the iso-8859-* tables, don't make 0x80..0x9F invalid.
          Generate nls_koi8_r.c from the ftp.unicode.org table.
        * encoding.d: Include nls_jisx0201.c.
          (nls_tables): Add nls_jisx0201_table.
          (nls_last_sym, nls_num_encodings): Update.
        * pseudofun.d (nls_jisx0201_table): New entry.
        * makemake.in (NLS_INCLUDES): Add nls_jisx0201.

1999-10-15  Sam Steingold  <sds@ksp.com>

	* modules/clx/new-clx/clx.f (get_font_info_and_display): fixed a
	typo (xatom --> xatoms).

1999-10-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (low_finish_output_unbuffered_socket,
           low_force_output_unbuffered_socket,
           low_clear_output_unbuffered_socket): Remove functions.
          (UnbufferedSocketStream_output_init): Use the equivalent pipe
          functions instead. Use low_write_unbuffered_pipe instead of
          low_write_unbuffered_handle.
          (low_flush_buffered_socket): Use low_flush_buffered_pipe instead of
          low_flush_buffered_handle.
        * errunix.d (init_errormsg_table): Change message for EPIPE.

1999-10-05  Sam Shteingold  <sds@ksp.com>

	* socket.d (ADDR_TO_STRING): new macro
	(HOSTENT_TO_STACK): use it

1999-09-30  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * genclisph.d (main): Define minus_bit, needed for minus_wbit. Define
          minus_wbit, needed for framecode. In end_callback, use `framecode'
          instead of `mtypecode'. Define uintP, needed for framebottomword,
          needed for finish_frame, needed for begin_callback.

1999-09-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * compiler.lsp (c-GLOBAL-FUNCTION-CALL): When pushing forms onto
          *package-tasks*, quote the arguments only when necessary.

1999-09-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * io.d (SET-DISPATCH-MACRO-CHARACTER): Call up_case on sub_char.
          (GET-DISPATCH-MACRO-CHARACTER): Likewise.

1999-09-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (UnbufferedStreamLow_pushfront_byte): Increment status
          by 1, not by 2.
          (rd_ch_terminal3): Before calling readline(), stuff the pre-read
          byte into readline's input buffer.

1999-09-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_CONNECT): For namelen, also try the type `socklen_t'.
          Needed on 64-bit Solaris.

1999-09-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (iconv_wcslen, iconv_wcstombs): Call end_system_call()
          before signalling an error.

1999-09-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (fehler_uint8): Declare always, not only ifdef HAVE_FFI.
        * error.d (fehler_uint8): Define always, not only ifdef HAVE_FFI.

        * intelem.d (Q_to_I): Define if defined(intQsize), not only if
          defined(HAVE_FFI) && defined(intQsize). It's needed by DF_to_I.

1999-09-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * io.d (klammer_auf, klammer_zu, justify_start, justify_space,
           justify_end_eng, justify_end_weit, indent_start, indent_end,
           indentprep_start, indentprep_end, pr_enter1): Test for
          builtin_stream_p before accessing ->strmtype.
        * encoding.d (SYSTEM::SET-TERMINAL-ENCODING): Likewise.
        * stream.d (CONCATENATED-STREAM-STREAMS, TWO-WAY-STREAM-INPUT-STREAM,
           TWO-WAY-STREAM-OUTPUT-STREAM, ECHO-STREAM-INPUT-STREAM,
           ECHO-STREAM-OUTPUT-STREAM): Likewise.
          (SYSTEM::BUILT-IN-STREAM-SET-ELEMENT-TYPE): If the synonym stream's
          target is a Gray stream, recurse through (SETF STREAM-ELEMENT-TYPE).

1999-09-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_language.d (init_language): Use `ascii_alphanumericp' instead
          of `alphanumericp'.

1999-09-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_module.d (main_module): Fix type of declaration. Declare extern,
          to avoid a warning.

1999-09-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * arisparc64.d: Take advantage of the brz and brnz instructions.

1999-09-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * arisparc.d (orc2_loop_up): Use the `orn' instruction.

1999-09-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_CANONICAL_HOST_CPU, CL_CANONICAL_HOST_CPU_FOR_FFCALL):
          Tweak test for 64-bit sparc: cc defines `__sparcv9', whereas gcc
          defines `__arch64__'.
        * lispbibl.d (SPARC64): Likewise.

1999-09-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_memfile.d (loadmem): Before quitting, close handle if needed.
          (loadmem_from_handle): Before quitting, always close handle.

1999-08-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_SIGNAL_REINSTALL, CL_SIGACTION_REINSTALL): Enable
          `volatile' for gotsig.

1999-08-15  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * utils/varbrace.d: New file.
        * makemake.in (NEED_ANSIDECL): Remove variable.
          (VARBRACE): New Makefile variable.
          (UTILS, XDECL_FILTER, XDECL_DEPENDENCIES): Add `varbrace'.
        * spvw_memfile.d (loadmem_from_handle): Define this function always,
          not only on UNIX.
        * spvw_sigint.d (react_on_sigint): New function.
          (interrupt_handler, alarm_handler): Use it. Remove #if across
          function bodies.

        * utils/modprep.d (is_if): Check for "#ifndef" as well.

1999-08-15  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * ansidecl.d (char_out, next_token, handle_closing_token): Turn
          macros into inline function definitions. Speed doesn't matter here.

1999-08-14  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Assume size_t, pid_t, uid_t, gid_t, off_t are defined.
        * aclocal.m4 (CL_GETPWUID): Don't depend on AC_TYPE_UID_T.
          (CL_MMAP): Don't depend on AC_TYPE_SIZE_T, AC_TYPE_OFF_T.
        * configure.in: Don't call AC_TYPE_SIZE_T, AC_TYPE_PID_T,
          AC_TYPE_UID_T, AC_TYPE_OFF_T.
        * unixconf.h.in: Don't define size_t, pid_t, uid_t, off_t.

        No compiler expands __builtin_strcmp inline.
        * aclocal.m4 (CL_BUILTIN_STRCMP): Remove.
        * configure.in: Don't call CL_BUILTIN_STRCMP.
        * unixconf.h.in: Don't define HAVE_BUILTIN_STRCMP.
        * lispbibl.d (asciz_equal): Don't define as a macro.
        * spvw.d (asciz_equal): Define as a function always.

        Assume clock_t is defined.
        * aclocal.m4 (CL_CLOCK_T): Remove.
        * configure.in: Don't call CL_CLOCK_T.
        * unixconf.h.in: Don't define CLOCK_T.
        * acorn.d: Likewise.
        * time.d (get_run_time): Use clock_t instead of CLOCK_T.

        Assume mode_t is defined.
        * aclocal.m4 (CL_MKDIR): Don't determine MODE_T, use mode_t instead.
          (CL_OPEN): Use mode_t instead of MODE_T. Don't depend on CL_MKDIR.
        * unixconf.h.in: Don't define MODE_T.
        * unix.d: Use mode_t instead of MODE_T.
        * unixaux.d (nonintr_open): Likewise.

        Assume ISC and Minix are dead.
        * configure.in: Don't call AC_ISC_POSIX and AC_MINIX.
        * unixconf.h.in: Don't define _POSIX_SOURCE, _POSIX_1_SOURCE, _MINIX.

        Assume rename() is available.
        * aclocal.m4 (CL_RENAME): Don't test for rename.
        * unixconf.h.in: Don't define HAVE_RENAME.
        * unix.d: Assume rename exists.
        * unixaux.d (rename): Remove function.

        Assume <stdlib.h> exists.
        * aclocal.m4 (CL_ACCESSFLAGS, CL_OPENFLAGS, RL_TERM, CL_MEMSET,
           CL_MALLOC, CL_FREE, CL_SIGPROCMASK, CL_SIGNAL_REINSTALL,
           CL_SIGNAL_UNBLOCK, CL_SIGNAL_BLOCK_OTHERS, CL_SIGACTION_REINSTALL,
           CL_SIGACTION_UNBLOCK, CL_ABORT, CL_GETENV, CL_PUTENV, CL_SETLOCALE,
           CL_RLIMIT, CL_VFORK, CL_EXECV, CL_EXECL, CL_WAITPID, CL_RUSAGE,
           CL_GETCWD, CL_CHDIR, CL_MKDIR, CL_RMDIR, CL_FSTAT, CL_STAT,
           CL_LSTAT, CL_READLINK, CL_ELOOP, CL_OPENDIR, CL_CLOSEDIR, CL_OPEN,
           CL_READ_WRITE, CL_WRITE, CL_CHMOD, CL_RENAME, CL_UNLINK, CL_IOCTL,
           CL_SELECT, CL_SETITIMER, CL_LOCALTIME, CL_GETPWNAM, CL_GETPWUID,
           CL_GETHOSTNAME, CL_GETHOSTBYNAME, CL_ADDRESS_RANGE, CL_MMAP,
           CL_MPROTECT, CL_CODEEXEC, CL_SHMGET, CL_SHMAT, CL_SHMCTL,
           CL_SHM_RMID, CL_DYNLOAD, CL_ICONV, CL_FILECHARSET):
          Assume <stdlib.h> exists.
          (CL_STDLIB_H): Remove.
        * configure.in: Don't call CL_STDLIB_H.
        * unixconf.h.in: Don't define HAVE_STDLIB_H.

        Assume <stddef.h> exists.
        * aclocal.m4 (CL_STDDEF_H): Remove.
        * configure.in: Don't call CL_STDDEF_H.
        * unixconf.h.in: Don't define HAVE_STDDEF_H.

        Assume waitpid() is available.
        * aclocal.m4 (CL_WAITPID): Don't test for waitpid or <sys/wait.h>.
        * unix.d: Assume waitpid exists.
        * unixaux.d (wait2): Likewise.
        * sigcld.d (end_want_sigcld): Likewise.
        * unixconf.h.in: Don't define HAVE_WAITPID and HAVE_SYS_WAIT_H.

        Assume memset() is available.
        * aclocal.m4 (CL_MEMSET): Don't test for memset.
          (CL_SIGACTION_REINSTALL, CL_SIGACTION_UNBLOCK): Assume memset exists.
        * spvw.d: Likewise.
        * unix.d: Likewise.
        * unixaux.d (install_signal_handler): Likewise.
        * unixconf.h.in: Don't define HAVE_MEMSET.
        * win32.d: Likewise.

        * configure.in: Remove AC_C_CONST call.
        * unixconf.h.in (const): Don't define.

        * aclocal.m4 (CL_RAISE): Fix harmless typo.

        * aclocal.m4 (CL_RLIMIT): Prefer RLIMIT_RESOURCE_T="int" to
          RLIMIT_RESOURCE_T="enum __rlimit_resource".

1999-08-14  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (check_float_eltype, READ-FLOAT, WRITE-FLOAT): New
          functions.
        * lispbibl.d (c_float_to_FF, FF_to_c_float, c_double_to_DF,
           DF_to_c_double): Declare always, not only if HAVE_FFI.
        * flo_konv.d (c_float_to_FF, FF_to_c_float, c_double_to_DF,
           DF_to_c_double): Define always, not only if HAVE_FFI.
        * floatpri.lsp (write-float-decimal): Renamed from write-float.
        * lisparit.d (print_float): Call sys::write-float-decimal instead of
          sys::write-float.

        * type.lsp (canonicalize-type): Call typespec-error if the argument is
          not a valid typespec.

1999-08-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aridecl.d (FF_exp_low, FF_exp_mid, FF_exp_high): Always choose the
          IEEE values.
          (DF_exp_low, DF_exp_mid, DF_exp_high): Likewise.

1999-08-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * modules/clx/new-clx/demos/qix.lsp (draw-qix): Don't ignore nlines.
          Improve herald message.

1999-08-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pathname.d (PARSE-NAMESTRING): Don't make strong assumptions about
          the algorithm employed by nreconc. Fixes a bug parsing "~/foo/".

1999-08-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (install_root): New variable.
          (installdirs, install-bin, install-man, install-doc, uninstall-bin,
           uninstall-man,): Prepend $(install_root) to every installation
          directory.

1999-07-31  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_ctype.d (init_ctype): Accept "he" as a new name for "iw".

1999-07-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (BINARY_DISTRIB): Also define on HP-UX 10.

1999-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pathname.d (init_pathnames) [WIN32_NATIVE]: Follow documented
          calling convention for GetVersionInfoEx.
        * misc.d (MACHINE-VERSION) [WIN32_NATIVE]: Likewise.

1999-07-26  Jrg Hhle  <hoehle@tzd.telekom.de>

        * screen.lsp (generic-stream-read-char-will-hang-p,
           generic-stream-clear-input): Define the methods on
          keyboard-controller, not screen-controller.

1999-07-22  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * Version 1999-07-22 released.

1999-07-21  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * eval.d (interpret_bytecode_) [MC680X0]: Fix syntax error in
          S_operand_ignore_ macro.

        * charstrg.d (stringof): Change dotimesC into dotimesL.

1999-07-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * init.lsp (load): Put back the call to ENGLISH. Necessary for
          internationalization.

1999-07-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_RAISE): New macro.
        * unixconf.h.in (HAVE_RAISE): New macro.
        * configure.in: Call it.
        * unix.d (raise): Declare only if HAVE_RAISE is defined.
        * spvw_sigpipe.d (sigpipe_handler): Use kill(getpid(),...) if
          HAVE_RAISE is not defined.

1999-07-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (distrib): If BINARY_DISTRIB is defined, distribute
          clisp-link, linkkit, lisp.a etc. nevertheless, because we don't know
          whether the user has a C compiler or not.

1999-07-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * record.d (CLOS::%ALLOCATE-INSTANCE): Fix typo in error message.

1999-07-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * asmi386.sh: New optional argument -no-C.
        * Makefile.devel (src/ari80386.msvc.c, src/sp80386.msvc.c): Pass
          option -no-C to asmi386.sh.

1999-07-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (clisp.html): Substitute CLHSROOT, like in impnotes.html.

1999-07-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (wr_ch_unbuffered_dos, wr_ch_buffered_dos): Output crlf
          only when obj is #\Newline.

1999-07-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * misc.d (MACHINE-VERSION) [WIN32]: On Win95, use info.dwProcessorType.

1999-07-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (XCFLAGS): Add "-fno-gcse" when using gcc-2.95 on Sparc.

1999-07-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw.d (usage): Reorder command line options. Split into groups.

1999-07-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (SPARC64): New macro.
          Treat SPARC64 mostly like DECALPHA and MIPS64.
        * arisparc64.d: New file.
        * spsparc64.d: New file.
        * arilev0.d (mulu16, mulu32, mulu32_unchecked, divu_3216_1616,
           divu_3216_3216, divu_3232_3232, divu_6432_3232): Provide
          implementations for SPARC64, consistently with arisparc64.d.
        * arilev1.d [SPARC64]: Include arisparc64 instead of arisparc.
        * makemake.in (cpu): Possibly set to sparc64.
          (ARI_ASMD, ARI_ASMS): Possibly add arisparc64.
          (SP_ASMD, SP_ASMS): Possibly add spsparc64.
        * FILES.1: Mention arisparc64, spsparc64, arimips64.

1999-07-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Remove support for K&R Sparc cc.
        * makemake.in: If TSYS = sun4 and not compiling with GNU C, assume
          SunPRO C. Drop dependencies and rules for cc_sparc.il.
        * cc_sparc.il: Remove file.
        * FILES.1: Don't mention cc_sparc.il.

1999-07-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * autoconf/aclocal.m4 (CL_WORDS_LITTLEENDIAN): Test for `__sparc__',
          because gcc-2.95 on SparcLinux defines only `__sparc__', not `sparc'.
        * lispbibl.d: Likewise.

1999-07-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * autoconf/aclocal.m4 (CL_CANONICAL_HOST_CPU,
           CL_CANONICAL_HOST_CPU_FOR_FFCALL): Distinguish "sparc" and
          "sparc64" according to the C compiler, not the uname result.

1999-07-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in: Treat gcc version 3.* like gcc version 2.95.

1999-07-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * arisparc.d (compare_loop_up) [COUNTER_LOOPS]: Bug fix.
          (shiftright_loop_up): Save 1 cycle if count==0.

1999-07-15  Jrg Hhle <Joerg.Hoehle@gmd.de>

        * affi.d (SYSTEM::MEM-WRITE): No need to check for integerp(wert),
          it is done later during conversion.

        * socket.d (socket_getpeername): Fix the length argument to
          gethostbyaddr.

1999-07-15  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * record.d (FINALIZE): Call coerce_function.

1999-07-09  Jrg Hhle  <hoehle@tzd.telekom.de>

        * stream.d (SOCKET-STREAM-HANDLE): Use TheSocket(), not TheHandle().

1999-07-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (low_clear_input_unbuffered_handle) [WIN32]: Set the
          ignore_next_LF flag after eating a CR.
          (clear_input_unbuffered) [WIN32]: Don't reset the ignore_next_LF
          flag.

1999-07-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * win32aux.d (interruptible_active): New variable.
          (temp_interrupt_handler): Query it and set it to FALSE.
          (DoInterruptible): Set it to TRUE only while the thread is running.

1999-07-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * misc.d (MACHINE-VERSION) [WIN32]: Use the info.wProcessorLevel field
          only on WinNT.

1999-07-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Don't access objects in memory through `oint*' pointers.
        * spvw_mark.d (mark, unmark, marked): Use as_object/as_oint
          conversions instead of oint* memory access.
        * spvw_update.d (update_STACKs): Use as_oint conversion instead of
          oint* memory access.
        * spvw_garcol.d (gc_mark): Change type of `dies_' to `object*'.
          (gc_mark_stack, alive): Use as_oint conversion instead of oint*
          memory access.
          (gc_morris3, update, update_stackobj): Use as_object/as_oint
          conversions instead of oint* memory access.
        * spvw_memfile.d (update, loadmem_update): Likewise.
        * eval.d (nest_var, funcall_iclosure): Likewise.
        * control.d (make_variable_frame, LET, LET*, SYMBOL-MACROLET,
           MULTIPLE-VALUE-BIND): Likewise.

1999-07-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * utils/gcc-cccp/cccp.c (output_line_command): In the filename
          being output, convert backslashes to double backslashes.

1999-07-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make sure the default-file-encoding is set to ISO-8859-1 during
        building, even if the user has set a different LC_CTYPE variable.
        * spvw.d (usage): Add -E option.
          (argv_encoding_file, argv_encoding_pathname, argv_encoding_terminal,
           argv_encoding_foreign, argv_encoding_misc): New variables.
          (main): Add -E option.
        * _clisp.c (main): Handle -E option.
        * makemake.in (interpreted.mem, *.fas, lispinit.mem, lispinit2.mem,
           testsuite, $(MODULES)): Together with option "-norc", pass
          "-Efile ISO-8859-1".
        * encoding.d (encoding_from_name): New function, extracted from
          init_dependent_encodings. Also accept ISO-8859-10/13/14/15.
          (init_dependent_encodings): Call it. Respect the values of
          argv_encoding_file, argv_encoding_pathname, argv_encoding_terminal,
          argv_encoding_foreign, argv_encoding_misc.

1999-07-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Fix interpretation of LC_* and LANG environment variables.
        * spvw_ctype.d (init_ctype): Treat empty environment values like
          unset environment variables. LANG is not supposed to contain colons.
          The encoding can be followed by other suffixes.

1999-07-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (GENERATIONAL_GC): Don't define on IRIX.

1999-07-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (NLS_INCLUDES): Add nls_iso8859_10, nls_iso8859_13.
        * encoding.d: Include them.
          (nls_tables): Refer to them.
        * pseudofun.d: Likewise.

1999-06-25  Sam Steingold  <sds@goems.com>

	* describe.lsp (apropos): print the macro for symbol-macro, no
	evaluation.
	(describe-object): ditto.
	Also, describe CAR & CDR for a simple cons.

1999-06-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Don't use Unicode API on Win32. It does not work on Win95.
        * lispbibl.d, win32.d, spvw.d, spvw_debug.d, spvw_language.d,
          spvw_memfile.d, encoding.d, charstrg.d, pathname.d, stream.d,
          misc.d, error.d, errwin32.d, win32aux.d: Revert most of 1999-06-20
          patch.

1999-06-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pathname.d (asciz_dir_to_pathname_): Change declaration of pathbuf.
        * errwin32.d (OS_error_internal_body): Fix compilation error.

1999-06-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Try to solve startup problems on Win95.
        * spvw.d (main) [TRIVIALMAP_MEMORY]: Call prepare_zeromap with
          shrinkp=FALSE.

1999-06-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Determine the initial encoding by examining the user's locale.
        * lispbibl.d (init_dependent_encodings): New declaration.
        * spvw_ctype.d: New file.
        * spvw.d: Include <string.h> always.
          Include spvw_ctype.d.
          (main): Remove LC_CTYPE code, instead call `init_ctype'. Later, call
          `init_dependent_encodings'.
        * encoding.d (init_dependent_encodings): New function, moved out of
          init_encodings. default-file-encoding and the others depend on
          locale_charset.
          (init_encodings): Call init_dependent_encodings.
        * makemake.in (SPVW_INCLUDES): Add spvw_ctype.
        * gettext/po/Makefile.devel (DSOURCES): Add spvw_ctype.

1999-06-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Use Unicode API on Win32.
        * lispbibl.d (wchar, WLITERAL): New macros.
          (wgetenv): New macro.
          (wasciz_out, wasciz_length): New declaration.
          (wasciz_equal, wwasciz_equal): New declaration.
          (n_char_to_string): Renamed from make_string.
          (n_wchar_to_string): New declaration.
          (wasciz_to_string): New declaration.
          (with_string_w0, with_sstring_w0): New macros.
          (n_chart_to_wchar): New declaration.
        * win32.d (wgetenv): New macro.
        * spvw.d (wasciz_length, wasciz_equal, wwasciz_equal): New functions.
          (program_name): Change type to `wchar*'.
          (loadmem): Change declaration.
          (usage): Call wasciz_out instead of asciz_out.
          (main): On Win32 with UNICODE, rename to `wmain'. Change type of
          argv to `wchar* []'. Change types of argv_lisplibdir, argv_memfile,
          argv_init_files, argv_compile_files, argv_package, argv_expr,
          argv_execute_file, argv_execute_args, argv_language, argv_localedir,
          argv_init_files, argv_compile_files to use `wchar' instead of `char'.
          Use wasciz_equal, wasciz_to_string, wasciz_out and WLITERAL where
          appropriate.
        * spvw_debug.d (wasciz_out): New function.
        * spvw_language.d (init_language, init_language_from): Change
          declarations.
          (init_language_from): Use wasciz_equal instead of asciz_equal.
          (init_language): Use wgetenv instead of getenv where appropriate.
        * spvw_memfile.d (loadmem): Change declaration. Use wasciz_equal
          instead of asciz_equal where appropriate.
        * encoding.d (n_char_to_string): Renamed from make_string.
          (n_char_to_string_): Renamed from make_string_.
          (n_wchar_to_string_): New function.
          (asciz_to_string, asciz_to_string_): Update.
          (wasciz_to_string_): New function.
        * charstrg.d (n_chart_to_wchar): New function.
        * pathname.d (make_directory, delete_directory,
           change_current_directory, delete_existing_file,
           delete_file_if_exists, delete_file_before_rename,
           rename_existing_file, rename_file_to_nonexisting): Change
          declaration.
          (asciz_dir_to_pathname): Change declaration. Use n_wchar_to_string
          instead of make_string.
          (good_drive): Use wchar instead of char.
          (default_drive): Return wchar instead of uintB. Use wchar instead
          of char.
          (default_directory_of): Use wchar instead of char.
          (assure_dir_exists): Likewise. Use n_wchar_to_string instead of
          make_string.
          (change_default): Use wchar instead of char.
          (access0): Change declaration.
          (file_exists): Use wchar instead of char.
          (directory_exists, DELETE-FILE, rename_file): Likewise.
          (create_new_file, open_input_file, open_output_file): Change
          declaration.
          (create_backup_file): Change declaration. Use wchar instead of char.
          (open_file): Use wchar instead of char.
          (extract): Use n_char_to_string instead of make_string.
          (directory_search_1subdir): Use wchar instead of char.
          (directory_search_scandir): Use n_char_to_string instead of
          make_string. Use wchar instead of char. Use wasciz_to_string instead
          of asciz_to_string.
          (DIRECTORY): Use n_char_to_string instead of make_string.
          (MAKE-DIR, DELETE-DIR, ENSURE-DIRECTORIES-EXIST): Use wchar instead
          of char.
          (init_pathnames): Use n_char_to_string instead of make_string.
          Use wchar instead of char. Use wgetenv instead of getenv.
          (FILE-WRITE-DATE, SHELL): Use wchar instead of char.
          (argv_lisplibdir): Change declaration.
        * stream.d (make_keyboard_stream): Use wchar instead of char.
          (create_input_pipe): Change declaration.
          (MAKE-PIPE-INPUT-STREAM): Update.
          (create_output_pipe): Change declaration.
          (MAKE-PIPE-OUTPUT-STREAM): Update.
          (create_io_pipe): Change declaration.
          (MAKE-PIPE-IO-STREAM): Update.
        * misc.d (SYS::GETENV): Use wchar instead of char. On Win32 with
          UNICODE, use _wgetenv. Use wasciz_to_string instead of
          asciz_to_string.
          (SYS::REGISTRY): Use wchar instead of char.
        * error.d (write_errorasciz, write_errorwasciz): New functions.
        * erramiga.d (OS_error_internal): Use write_errorasciz instead of
          write_errorstring.
        * errdjgpp.d (OS_error_internal): Likewise.
        * errunix.d (OS_error_internal): Likewise.
        * errwin32.d (OS_error_info): Remove type.
          (OS_error_info_callback): New type.
          (get_OS_error_info): Take a callback and call it, instead of
          returning the result in a structure. Use wchar instead of char.
          (OS_error_internal_body): New function, split out of
          OS_error_internal. Call write_errorasciz and write_errorwasciz
          instead of write_errorstring.
          (SOCK_error): Call write_errorasciz instead of write_errorstring.
          (errno_out_body): New function, split out of errno_out. Call
          wasciz_out.
        * rexx.d (rexx_getmsg): Use n_char_to_string instead of make_string.
        * win32aux.d (init_win32): Call non-Unicode versions of OemToChar and
          CharToOem.
        * genclisph.d (n_char_to_string): Renamed from make_string.

1999-06-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Don't force building clisp.dvi on non-Unix OSes.
        * makemake.in (MANUALS): Remove clisp.dvi.
          (manual): Add it, on Unix only.
          (manualx): Add it, on non-Unix only.
          (install-doc, uninstall-man): Treat it like $(MANUALS).

1999-06-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * cfgacorn.lsp, cfgamiga.lsp, cfgdos.lsp, cfgwin32.lsp
          (*clhs-root-default*): Assign default value.
        * makemake.in (config.lsp): Emit "echo ... >> config.lsp" only for
          Unix.

1999-06-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (low_flush_buffered_socket): Call sock_write, not
          full_write.

1999-06-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (create_input_pipe): New function.
          (MAKE-PIPE-INPUT-STREAM): Call it.
          (create_output_pipe): New function.
          (MAKE-PIPE-OUTPUT-STREAM): Call it.
          (create_io_pipe): New function.
          (MAKE-PIPE-IO-STREAM): Call it.

1999-06-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * socket.d (inet_addr): Don't declare on WIN32.
          (setsockopt): Remove second declaration.
          (SOCKET-SERVICE-PORT): On WIN32, use a replacement for getservent().

1999-06-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (callback.h): Copy also vacall_r.h and trampoline_r.h.

1999-06-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (GETTEXT): Define also if not using GNU_GETTEXT.

1999-06-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * places.lsp (MACRO-FUNCTION): Ignore `env'.

1999-06-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (strm_keyboard_len): Define as strm_len, not 0.
          (make_keyboard_stream): Don't add strm_len to strm_keyboard_len, it
          is already included.

1999-06-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (malloc, free): Remove declarations.
          (malloca, freea): Move declarations.
          (DRIVER_frame_data): Remove type.
        * spvw_alloca.d (malloc, free): New declarations.
        * aridecl.d (HAVE_NUM_STACK, NUM_STACK, NUM_STACK_bound,
           NUM_STACK_normal): Remove declarations.
          (num_stack_need, num_stack_need_1): Remove obsolete code. Add
          `unused' to avoid gcc warnings.
          (NUM_STACK_normal, arith_ueberlauf, compare_NUM_STACK_bound): Remove.
          (SAVE_NUM_STACK, RESTORE_NUM_STACK. num_stack_need,
           num_stack_need_1): New definitions, using malloca/freea.
        * intlog.d (I_I_logior_I, I_I_logxor_I, I_I_logand_I, I_I_logeqv_I,
           I_I_lognand_I, I_I_lognor_I, I_I_logandc2_I, I_I_logorc2_I,
           I_lognot_I): Defer RESTORE_NUM_STACK until done with the temporary
          digit sequence.
          (I_I_ash_I): Do RESTORE_NUM_STACK before error.
        * intplus.d (DS_1_plus, DS_minus1_plus): Do RESTORE_NUM_STACK before
          error.
          (I_1_plus_I, I_minus1_plus_I): Defer RESTORE_NUM_STACK until done
          with the temporary digit sequence.
          (I_I_plus_I, I_minus_I, I_I_minus_I): Likewise. Do RESTORE_NUM_STACK
          before error.
        * intbyte.d (lb_extract): Move SAVE_NUM_STACK and defer
          RESTORE_NUM_STACK until done with the temporary digit sequence.
          (mkf_extract): Likewise.
        * intmal.d (UDS_square_UDS): Do RESTORE_NUM_STACK before error.
          (I_square_I): Move SAVE_NUM_STACK and defer RESTORE_NUM_STACK until
          done with the temporary digit sequence.
          (UDS_UDS_mal_UDS): Do RESTORE_NUM_STACK before error.
          (I_I_mal_I): Move SAVE_NUM_STACK and defer RESTORE_NUM_STACK until
          done with the temporary digit sequence.
        * intdiv.d (UDS_divide_): Move SAVE_NUM_STACK and defer
          RESTORE_NUM_STACK until done with the temporary digit sequence.
          (I_I_divide_I_I): Defer SAVE_NUM_STACK until needed. Defer
          RESTORE_NUM_STACK until done with the temporary digit sequence.
        * intgcd.d (I_I_gcd_I) [1]: Defer RESTORE_NUM_STACK until done with
          the temporary digit sequence.
          (I_I_gcd_I) [3]: Likewise.
          (I_I_xgcd_I_I_I) [3]: Do RESTORE_NUM_STACK before side return.
        * intsqrt.d (UDS_sqrt_): Defer RESTORE_NUM_STACK until done with the
          temporary digit sequence.
          (I_isqrt_I, I_sqrtp):  Move SAVE_NUM_STACK and defer
          RESTORE_NUM_STACK until done with the temporary digit sequence.
          (I_rootp): Defer RESTORE_NUM_STACK until done with the temporary
          digit sequence.
        * intread.d (DIGITS_to_I): Defer RESTORE_NUM_STACK until done with the
          temporary digit sequence.
        * dfloat.d (DF_DF_durch_DF): Defer RESTORE_NUM_STACK until done with
          the temporary digit sequence.
          (DF_sqrt_DF): Likewise.
        * lfloat.d (LF_ftruncate_LF, LF_futruncate_LF, LF_fround_LF): Defer
          RESTORE_NUM_STACK until done with the temporary digit sequence.
          (LF_LF_plus_LF): Do RESTORE_NUM_STACK before error or return.
          (LF_square_LF): Move SAVE_NUM_STACK and defer RESTORE_NUM_STACK
          until done with the temporary digit sequence. Do RESTORE_NUM_STACK
          before error or return.
          (LF_LF_mal_LF): Likewise.
          (LF_LF_durch_LF): Likewise.
          (LF_sqrt_LF): Likewise.
          (LF_to_I): Move SAVE_NUM_STACK.
        * realrand.d (I_random_I): Move SAVE_NUM_STACK and defer
          RESTORE_NUM_STACK until done with the temporary digit sequence.
        * lisparit.d (mal_10_plus_x): Defer RESTORE_NUM_STACK until done with
          the temporary digit sequence. Do RESTORE_NUM_STACK before error.
          (decimal_string): Defer RESTORE_NUM_STACK until done with the
          temporary digit sequence.
        * eval.d (unwind): No need to reset NUM_STACK when reaching a
          DRIVER_frame.
        * debug.d (driver): No need to save current NUM_STACK in the frame.
          (break_driver): No need to save and restore NUM_STACK.
        * control.d (SYS::DRIVER): No need to save current NUM_STACK in the
          frame.
        * spvw.d: No need any more for include "aridecl.c".
          (main): Remove teile_NUM_STACK, assume it is 0.

1999-06-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * intlog.d (I_I_ash_I): Restrict begin/end_arith_call() to the case
          where it is needed.
        * intbyte.d (lb_extract): Restrict begin/end_arith_call() to the case
          where it is needed.
        * intmal.d (I_square_I): Move begin_arith_call() until after
          num_stack_need.
        * intgcd.d (I_I_gcd_I) [3]: Move begin_arith_call() until after
          num_stack_need.
          (I_I_xgcd_I_I_I) [3]: Likewise.
        * intsqrt.d (UDS_sqrt_): Move begin_arith_call() until after
          num_stack_need.
          (I_rootp): Likewise.
        * lfloat.d (LF_LF_plus_LF): Move begin_arith_call() until after
          num_stack_need.
          (LF_sqrt_LF): Restrict begin/end_arith_call() to the case where it
          is needed.
        * realelem.d (R_R_gleich): Restrict begin/end_arith_call() to the case
          where it is needed.
        * lisparit.d (mal_10_plus_x): Restrict begin/end_arith_call().

1999-06-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * intelem.d (FN_to_NDS_nocopy, I_to_NDS_nocopy): Expand into more
          efficient code.
          (FN_to_NDS_nocopy_): New macro.
          (BN_to_NDS_nocopy): Add `unused' to avoid gcc warnings.
        * intmal.d (I_I_mal_I): Put brace around I_to_NDS_nocopy.
        * intdiv.d (I_I_divide_I_I): Put brace around I_to_NDS_nocopy.
        * intsqrt.d (I_rootp): Put brace around I_to_NDS_nocopy.

1999-06-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_sigsegv.d (stackoverflow_handler): Restore the STACK on Solaris
          and OSF/1 as well.
        * lispbibl.d: After sigsegv.h is included, undefine DS, SP, EAX.

1999-06-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (UNIX_OPENBSD): New macro.
        * eval.d (interpret_bytecode_): Use hairy gas assembler syntax only
          on Linux and *BSD, never on other OSes.

1999-06-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * eval.d (interpret_bytecode_): Use "\n\t" as assembler statement
          separator instead of ";".

1999-06-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * describe.lsp (describe-object): Put back i18n call around
          punctuation strings.
        * socket.d (resolve_host_ipaddr): Likewise.

1999-06-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d, genclisph.d: Prepare for __GNUC__ == 3.

1999-06-15  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * compiler.lsp (macroexpand-1): Do not pass ENV to `macro-function'.
          (c-form): Do not pass ENV to `macro-function'.

        * places.lsp (MACRO-FUNCTION): Add optional, ignored env argument.

        * control.d (SYSTEM::OLD-MACRO-FUNCTION): New function.
        * eval.d (FUNTAB): Use it instead of MACRO-FUNCTION.
        * compiler.lsp (funtab): Likewise.

        * sequence.d (test_count_arg): Simplify.

1999-06-10  Sam Steingold  <sds@goems.com>

	* describe.lsp (describe-object): dump `ENGLISH' before ".".

	* socket.d (resolve_host_ipaddr): correct the order of arguments
	in the `fehler' call.

	* init.lsp (*load-level*): new variable.
	(load): use it to indent the verbose printout nicely.

1999-06-10  Sam Steingold  <sds@goems.com>

	* list.d (nreconc): be as smart about `nreconc' as we are about
	`nreverse'.

1999-06-09  Sam Steingold  <sds@goems.com>

	* misc.d (set-ansi): set `*coerce-fixnum-char-ansi*',
	`*sequence-count-ansi*', and `*print-pathnames-ansi*'.
	* constsym.d: added `*coerce-fixnum-char-ansi*',
	`*sequence-count-ansi*', and `*print-pathnames-ansi*'.
	* spvw.d: added `*coerce-fixnum-char-ansi*',
	`*sequence-count-ansi*', and `*print-pathnames-ansi*'.
	* sequence.d (test_count_arg): check `*sequence-count-ansi*'.
	* io.d (pr_orecord): check `*print-pathnames-ansi*'.
	* charstrg.d (coerce_char): check `*coerce-fixnum-char-ansi*'.
	* places.lsp: added documentation for `*ansi*'.

1999-06-09  Sam Steingold  <sds@goems.com>

	Implemented ANSI CL Issue MACRO-FUNCTION-ENVIRONMENT:YES
	* control.d (macro_function): optional second argument.
	* subr.d (macro_function): ditto.
	* compiler.lsp (macroexpand-1): pass ENV to `macro-function'
	(subr-info): optional second argument of `macro-function'.
	(c-form): pass ENV to `macro-function'.

1999-06-08  Sam Steingold  <sds@goems.com>

	* describe.lsp (apropos-do-more): new function.
	(apropos): use it.
	(describe-object package): `*describe-nesting*' should be checked
	for being 0, not 1.

1999-06-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * compiler.lsp (*toplevel-environment*, *toplevel-denv*): Move
          variables...
        * init.lsp (*toplevel-environment*, *toplevel-denv*): ... to here.

1999-06-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * intparam.d (printf_underscored): Change argument type to
          `const char*'.

1999-06-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * init.lsp (defun): Don't use get-funname-symbol, to avoid
          bootstrapping problems.

1999-06-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	SOCK_error() generates an error of type `os-error'.
	* errwin32.d (SOCK_error): use `simple_os_error'.

1999-06-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make DEFUN behave the same way w.r.t. inlining, whether executing
        compiled or interpreted.
        * compiler.lsp (compile-form-in-toplevel-environment): New function.
        * init.lsp (load): Call it, don't pass nil as %denv% to compile-form.
          (defun): Save the lambdabody for inline compilation also when
          running interpreted.

1999-06-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        New command-line option "-w".
        * spvw.d (usage): Mention "-w".
          (argv_wait_keypress): New variable.
          (main): Set it if option "-w" is given.
          (quit): If argv_wait_keypress, emit a message and call WAIT-KEYPRESS.
        * _clisp.c (main): Accept "-w".
        * keyboard.lsp (wait-keypress): New function.

1999-06-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * describe.lsp (describe-object): Treat FOREIGN-FUNCTION, SYMBOL-MACRO,
          ENCODING.

1999-06-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make DESCRIBE more robust against interruptions.
        * describe.lsp (describe-stream): New stream class.
          (stream-*): New methods on describe-stream.
          (describe-slotted-object): Omit all *describe-nesting* indentations.
          Add *print-indent-lists* to tabpos. Call describe with stream, not
          *standard-output*.
          (describe-object): Omit all *describe-nesting* indentations.
          Call describe with stream, not *standard-output*.
          (describe-object) [PACKAGE]: Tweak spacing.
          (describe1): New function.
          (describe): Bind *describe-nesting* and *describe-done* instead of
          setting them. In top-level calls, create a describe-stream.
          (describe-signature): Omit all *describe-nesting* indentations.

1999-06-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * room.lsp (room, space-tabulate): Use *print-right-margin* instead of
          sys::*prin-linelength* when it is non-NIL.
        * describe.lsp (describe): Likewise.
        * compiler.lsp (compile-file): Likewise.

1999-06-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * describe.lsp (describe-slotted-object, describe-object, describe,
           describe-signature): Fix amount of indentation white space.
          (describe): Bind *describe-nesting* instead of setting it. This
          ensures it goes back to 0 after describe signalled an error.

1999-06-05  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * io.d (READ-CHAR-STATUS): Remove function.
          (READ-CHAR-WILL-HANG-P): New function.
        * stream.d (listen_generic): Call GENERIC-STREAM-READ-CHAR-WILL-HANG-P
          instead of GENERIC-STREAM-READ-CHAR-STATUS.
          (stream_listen): Call STREAM-READ-CHAR-WILL-HANG-P instead of
          STREAM-READ-CHAR-STATUS.
        * gstream.lsp (stream-read-char-status): Remove function.
          (stream-read-char-will-hang-p): New function.
          (generic-stream-read-char-status): Remove function.
          (generic-stream-read-char-will-hang-p): New function.
        * screen.lsp (generic-stream-read-char-status@screen-controller):
          Remove method.
          (generic-stream-read-char-will-hang-p@screen-controller): New method.

1999-06-05  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * describe.lsp (apropos-list, *apropos-do-more*, apropos): Move.

1999-06-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * cfgwin32.lsp (clhs-root): Don't signal an error if value not defined
          in registry.

1999-06-04  Sam Steingold  <sds@goems.com>

	* makemake.in: setq `*clhs-root-default*' in config.lsp.
	* cfgunix.lsp (clhs-root): new function.
	(*clhs-root-default*): new variable.
	* cfgacorn.lsp, cfgamiga.lsp, cfgdos.lsp, cfgsunux.lsp, cfgwin32.lsp:
	Likewise.

1999-06-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * trace.lsp (untrace1): Don't use replace-in-fenv here either.

1999-06-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (READLINELIB): Don't pass option "-r" to $(MAKE) for
          building in subdirectory. It doesn't work with Irix 6.5 `make'
          because readline/Makefile.in uses implicit rules.

1999-06-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (Encoding): Add enc_towcs_error, enc_tombs_error slots.
          (encoding_length): Update.
        * encoding.d (uni32_mblen, uni32be_mbstowcs, uni32le_mbstowcs,
           utf8_mblen, utf8_mbstowcs): Error handling respects enc_towcs_error.
          (nls_asciiext_mblen, nls_asciiext_wcslen): New functions.
          (nls_mblen, nls_mbstowcs, nls_asciiext_mbstowcs): Error handling
          respects enc_towcs_error.
          (nls_wcslen, nls_wcstombs, nls_asciiext_wcstombs): Error handling
          respects enc_tombs_error.
          (MAKE-ENCODING): Two new keyword arguments. Fully initialize newly
          allocated encoding.
          (init_encodings): Fully initialize newly allocated encodings.
          Stuff in nls_asciiext_mblen, nls_asciiext_wcslen where appropriate.
          Pass two more unbounds to C_make_encoding.
        * stream.d (test_external_format_arg): Pass two more unbounds to
          C_make_encoding.
          (iconv_mblen, iconv_mbstowcs): EILSEQ treatment respects
          enc_towcs_error.
          (iconv_wcslen, iconv_wcstombs): EILSEQ treatment respects
          enc_tombs_error.
        * pseudofun.d: Add nls_asciiext_mblen, nls_asciiext_wcslen.
        * type.lsp (canonicalize-type, encoding-charset): Update
          sys::%record-ref argument.

1999-06-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_CANONICAL_HOST_CPU, CL_CANONICAL_HOST_CPU_FOR_FFCALL):
          Canonicalize alpha variants to alpha.

1999-05-30  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (CFILES): Don't include $UNICODE_INCLUDES $NLS_INCLUDES.
          (init): Instead, add them to the `init' target.

1999-05-30  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Libtoolify avcall and callback.
        * foreign.d: Include avcall.h and callback.h.
        * makemake.in (foreign): Depend on avcall.h and callback.h.
          (avcall.h, libavcall.a, callback.h, libcallback.a): Create by
          doing "make install-lib" in the subdirectory.
          (clean1): Remove libavcall.* and libcallback.*.
          (clean4): Remove avcall.h and callback.h.

1999-05-30  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * asmi386.hh (DECLARE_FUNCTION): New macro.
          (INSN2MOVX): Fix bug with ANSI C preprocessors.
          (ALIGN): Don't put parentheses. For Solaris/x86.
        * asmi386.sh: Introduce C(...) macro calls. Recognize more jumps.
          Introduce DECLARE_FUNCTION(...) macro calls.

1999-05-30  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (sigsegv.h, libsigsegv.a): Do "make install-lib" instead
          of "make install".
          (clean1): On Win32, remove sigsegv.lib, not libsigsegv.*.

1999-05-30  Sam Steingold  <sds@goems.com>
            Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Implement ALLOCATE-INSTANCE.
        * record.d (clos::old-%allocate-instance): Renamed from
          clos::%allocate-instance.
          (clos::%allocate-instance): New function, with &rest arguments.
          (do_allocate_instance): New function. Remove unneeded if_classp
          check.
          (clos::%initialize-instance): Adapt to new format of
          *make-instance-table* entries.
          (clos::%make-instance): Likewise. Call do_allocate_instance, or
          the effective method for allocate-instance if it is not the default
          one.
        * eval.d (FUNTAB): clos::old-%allocate-instance replaces
          clos::%allocate-instance.
        * compiler.lsp (funtab, c-DIRECT-FUNCTION-CALL): Likewise.
        * init.lsp: Export allocate-instance.
        * defs3.lsp: Likewise.
        * clos.lsp: Likewise.
          (*dynamically-modifiable-generic-function-names*): Add
          `allocate-instance'.
          (|#'allocate-instance|): New variable.
          (std-add-method, std-remove-method): When changing allocate-instance,
          call note-ai-change.
          (note-i-meta-change, note-ai-change): New functions.
          (valid-make-instance-keywords): Add the ALLOCATE-INSTANCE keywords.
          (make-instance-table-entry1): New function.
          (make-instance-table-entry2): Return 2 values.
          (initialize-instance@standard-object): Adapt to new format of
          *make-instance-table* entries.
          (initial-initialize-instance): Create new-style *make-instance-table*
          entry.
          (allocate-instance): New generic function.
          (initial-make-instance): Call the effective method for
          allocate-instance. Create new-style *make-instance-table* entry.

1999-05-29  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in: Change a few occurrences of ${NEXT_M} to ${NEXT_}.

1999-05-29  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make --with-unicode the default.
        * makemake.in (info_help): Mention --without-unicode instead of
          --with-unicode.
          (XCFLAGS, UNICODE_INCLUDES, NLS_INCLUDES): Test $with_nounicode
          instead of $with_unicode.
        * configure: Don't pass --with-unicode to makemake.
        * Makefile.devel (*/makefile*): Create without --with-unicode.

1999-05-27  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * type.lsp: (def-atomic-type, def-compound-type): New macros.
          (c-typep-alist1, c-typep-alist2, c-typep-alist3): Fill here.
        * compiler.lsp: Not here.

1999-05-27  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (clean1): Remove libsigsegv.la.
          (clean4): Remove libintl.h, sigsegv.h.
          (clean5): Remove ANNOUNCE, GNU-GPL, SUMMARY, version.h, NEWS,
          clisp.gif, MAGIC.add, ccmp2c, modprep.

1999-05-27  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (clean1, clean2): Don't remove wlisp* and wsuite*.

1999-05-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (sigsegv.h, libsigsegv.a): Generate by calling
          "make install" in the subdirectory, not through symlinks.

1999-05-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * configure.in: Add check for groff.
        * makemake.in (GROFF): New variable.
          (htmldir, dvidir): New Makefile variables.
          (ROFF_MAN, ROFF_DVI): Set if $GROFF is nonempty.
          (ROFF_DVI): Don't define if $GROFF is empty.
          (clisp.dvi): Create if and only if $GROFF is nonempty.
          (MANUALS): Include clisp.dvi if and only if $GROFF is nonempty.
          (installdirs): Create $(htmldir) and $(dvidir) instead of
          $(mandir)/html.
          (install-man): Clean up dependencies.
          Use $(htmldir) and $(dvidir) instead of $(mandir)/html.
          Install clisp.dvi and clreadline.dvi if appropriate.
          (uninstall-man): Use $(htmldir) and $(dvidir) instead of
          $(mandir)/html. Also remove clisp.dvi and clreadline.dvi.
          (distrib): Distribute clisp.dvi if and only if $GROFF is nonempty.
          (clean1): Also remove clisp.dvi.
        * _distmakefile (htmldir, dvidir): New variables.
          (install-man): Install clisp.1 without modifications.
          Also install clisp.html, clisp.dvi, clreadline.html, clreadline.dvi.

1999-05-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * configure: In avcall and callback, do "make minicheck" instead of
          "make check".

1999-05-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * macros2.lsp (check-type): Don't quote the string argument.
        * conditio.lsp (check-type): Likewise.

1999-05-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (distrib): Reorganize. Distribute the data/ directory
          and its contents. Distribute the `full' linking set also if
          BINARY_DISTRIB is set.

1999-05-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make `clisp' an executable, also in the case of UNIX_BINARY_DISTRIB.
        * _clisp.c [UNIX_BINARY_DISTRIB]
          (room_for_lisplibdir, room_for_localedir): New arrays.
          (LISPLIBDIR, LOCALEDIR): New definitions, pointing into the arrays.
        * utils/hardcode.c: New file.
        * _distmakefile: Treat UNIX_BINARY_DISTRIB like other UNIX platforms.
          (install): Create `clisp' as an executable, using `hardcode', not as
          a shell script.
        * makemake.in (BINARY_DISTRIB): Also define on HP-UX 11.
          (GOOD_SH): Remove definition.
          (distrib): Distribute `clisp' and `hardcode'.
        * spvw.d (main, usage): Option -K is now available on all Unix
          platforms.
        * configure.in: Remove call to CL_SHELLARGS.
        * unixconf.h.in (UNIX_USE_KSH, UNIX_BROKEN_SH): Remove definitions.

1999-05-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (install-bin): Copy base/ and full/ using cp, not tar,
          because they contain symbolic links.

1999-05-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make modules.o part of every linking set, including `base'.
        * makemake.in (lisp.a): Don't include modules.o.
          (modular): Depend on modules.o.
          (base): Link over modules.o.
          (distmakefile): Add modules.o to the BASE_LIBS and BASE_FILES
          substitution.
          (distrib): Link over modules.o into $(TOPDIR)/base.
        * clisp-link.in (add-module-set): Check that the linking set contains
          a file `modules.o'.
          (add-module-sets): Likewise. When no new modules, copy modules.o
          in any case.
          (run): Check that the linking set contains a file `modules.o'.

1999-05-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (distmakefile): Don't set $wlibs, not needed any more.

1999-05-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw.d (initmem): Don't call SYS::SET-ANSI (no need, doesn't work).

1999-05-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * intlog.d (integerlength32) [RS6000]: Use new or old mnemonics
          depending on OS.

1999-05-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Libtoolify sigsegv.
        * autoconf/libtool.m4: New file, from libtool-1.2.

1999-05-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        For Linux 2.0.x with glibc2.0.
        * aclocal.m4 (CL_SIGALTSTACK): Define HAVE_SIGALTSTACK only if the
          sigaction flags macro SA_ONSTACK is also defined.

1999-05-13  Gilbert Baumann  <unk6@rz.uni-karlsruhe.de>

        * sequence.d (READ-CHAR-SEQUENCE): Changed calls to
          `iarray_displace_check' to `array_displace_check'. Adjusted return
          value: The first position not written is returned.
          (WRITE-CHAR-SEQUENCE): Likewise, uses `array_displace_check' now.
          (WRITE-BYTE-SEQUENCE): In case of (VECTOR (UNSIGNED-BYTE 8)) use
          another indirection via '->data' before calling 'read_byte_array'.
          (READ-BYTE-SEQUENCE): Likewise. Additionally the first position not
          written is returned.

1999-05-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw.d (init_symbol_values): Don't call a function here, too early.
          (initmem): Call SYS::SET-ANSI here.

1999-05-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

         * lispbibl.d (stream_fd): Move declaration.
         * stream.d (stream_fd): Move function.

1999-05-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Finish Sam's 1999-04-07 patch.
        * eval.d (check_for_illegal_keywords): Remove misplaced symbolp test.
        * defmacro.lsp (analyze-key): Use symbolp instead of keywordp.
        * compiler.lsp (test-argument-syntax): Likewise.
          (kvalue-form-index): Likewise.
        * conditio.lsp (expand-restart-case): Likewise.
        * error.d (SYSTEM::CERROR-OF-TYPE, SYSTEM::ERROR-OF-TYPE): Likewise.

1999-05-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Followup to Sam's 1999-04-07 patch.
        * eval.d (eval1): Treat arrays as self-evaluating in all cases.
        * compiler.lsp (l-constantp, c-constantp, c-constant-value): Treat
          arrays as constants.

1999-05-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * trace.lsp (trace1): No need to use replace-in-fenv.
          (replace-in-fenv): Remove function.

1999-05-12  Sam Steingold  <sds@goems.com>

	* format.lsp (format-integer): (format nil "~@d" 0) => "+0"

1999-05-12  Sam Steingold  <sds@goems.com>

	* loop.lsp (expand-loop): put `then-form' into `stepafter' even
	when it's the same constant as `first-form'.

1999-05-09  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_SIGNAL_UNBLOCK, CL_SIGNAL_BLOCK_OTHERS,
           CL_SIGACTION_UNBLOCK): Perform the test if either POSIX or BSD
          signal mask primitives are available. Otherwise,
          SIGACTION_NEED_UNBLOCK would not be defined on Solaris.

1999-05-07  Sam Steingold  <sds@goems.com>

	* describe.lsp (*apropos-do-more*): new variable.
	(apropos): use it.

1999-05-07  Sam Steingold  <sds@goems.com>

	* spvw.d (usage): mention -K regardless of "UNIX_BINARY_DISTRIB".

1999-05-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Support for Apple's MacOS X Server.
        * aclocal.m4 (CL_RLIMIT): Include <sys/time.h> before
          <sys/resource.h>.
        * lispbibl.d (unix): Define if __MACH__ is defined.
          (RS6000): Define if __ppc is defined.
          (UNIX_RHAPSODY): New macro.
          (__const): Define as const, not empty.
        * unix.d: Include <sys/time.h> before <sys/resource.h>. Treat
          UNIX_RHAPSODY like UNIX_NEXTSTEP.
        * intlog.d (integerlength32): Don't use the cntlz instruction on
          UNIX_RHAPSODY.

1999-05-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * clos.lsp (same-specializers-p): New function.
          (specializers-agree-p): Use it.
          (dispatching-arg-p, single-dispatching-arg, dispatching-arg-type):
          New functions.
          (no-applicable-method, no-primary-method): Signal a type-error if
          there is only one dispatching argument.

1999-05-03  Sam Steingold  <sds@goems.com>

	* pathname.d (file_stat): use `built_in_stream_open_p' instead of
	`open_stream_p'.

1999-05-02  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_SIGALTSTACK): New macro.
        * lispbibl.d (NOCOST_SP_CHECK): Define whenever sigsegv.h defines
          HAVE_STACK_OVERFLOW_RECOVERY, not only on WIN32_NATIVE.
          (near_SP_overflow) [UNIX]: New declaration.
        * spvw.d (near_SP_overflow): New function.
        * spvw_fault.d (handle_fault): Add `verbose' argument. If it is 1,
          don't print error messages.
        * spvw_sigsegv.d (sigsegv_handler): Add `serious' argument.
          (stackoverflow_handler): Add `scp' argument. Bring back STACK to
          a sane value.

1999-05-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make SYS::%GENERIC-FUNCTION-LAMBDA self-contained.
        * misc.d (SYS::VERSION), constobj.d: Bump version number.
        * record.d (SYS::%COPY-GENERIC-FUNCTION): New function.
        * eval.d (FUNTAB): Add it.
        * compiler.lsp (funtab): Likewise.
          (subr-info): Likewise.
          (c-FNODE-FUNCTION): Generate different code for generic functions.
          (create-fun-obj): The venv of generic functions is now inside
          consts[0], from the beginning.
        * clos.lsp (install-dispatch): Simplify.

1999-05-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * conditio.lsp: Add SYS::PRINT-CONDITION to
          clos::*dynamically-modifiable-generic-function-names*.

1999-05-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (get_synonym_stream): Argument must be a variable.
          (rd_by_array_synonym, wr_by_array_synonym, rd_ch_array_synonym,
           wr_ch_array_synonym, close_synonym, read_line_synonym): Update.

1999-05-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (stream_get_read_eval, stream_set_read_eval): New
          declarations.
        * stream.d (read_byte, read_byte_array, write_byte, write_byte_array,
           read_char, unread_char, peek_char, read_char_array, write_char,
           write_char_array, var_stream): Treat instances of
          FUNDAMENTAL-STREAM correctly.
          (listen_generic): Change error message.
          (terminal_raw, STREAM-EXTERNAL-FORMAT,
           SYSTEM::SET-STREAM-EXTERNAL-FORMAT, interactive_stream_p,
           read_line, stream_listen, clear_input, finish_output, force_output,
           clear_output, get_line_position, stream_line_number): Treat
          instances of FUNDAMENTAL-STREAM correctly.
          (stream_get_read_eval, stream_set_read_eval): New functions.
          (SYS::ALLOW-READ-EVAL): Use them.
        * io.d (read_eval_reader, load_eval_reader): Use stream_get_read_eval.
          (READ-CHAR-NO-HANG): Treat instances of FUNDAMENTAL-STREAM
          correctly.
          (pr_enter_1, pr_orecord, pr_subr): Use stream_get_read_eval.
        * compiler.lsp (c-DIRECT-FUNCTION-CALL): Remove SYSTEM::LINE-POSITION
          from list of side-effect-free functions.
        * gstream.lsp (fundamental-stream): Add a slot.
          (fundamental-character-stream, fundamental-binary-stream,
           fundamental-character-input-stream,
           fundamental-character-output-stream,
           fundamental-binary-input-stream, fundamental-binary-output-stream):
          New classes.
          (stream-element-type): Add method on fundamental-character-stream.
          (stream-read-char, stream-unread-char, stream-read-char-no-hang,
           stream-peek-char, stream-listen, stream-read-char-status,
           stream-read-char-sequence, stream-read-line, stream-clear-input,
           stream-write-char, stream-line-column, stream-start-line-p,
           stream-write-char-sequence, stream-write-string, stream-terpri,
           stream-fresh-line, stream-finish-output, stream-force-output,
           stream-clear-output, stream-advance-to-column, stream-read-byte,
           stream-read-byte-sequence, stream-write-byte,
           stream-write-byte-sequence): New generic functions.
        * describe.lsp (describe-object): Call open-stream-p, since
          input-stream-p and output-stream-p don't tell whether a stream is
          open.

1999-05-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Allows streams to have an unknown line position.
        * lispbibl.d (get_line_position): Can trigger GC. Can return NIL.
        * stream.d (get_line_position): Likewise.
          (MAKE-STRING-OUTPUT-STREAM): Allow LINE-POSITION argument to be NIL.
        * io.d (pr_enter_1): Update.
        * format.lsp (format-tabulate): If the stream's line position is
          unknown, output 2 spaces.
          (do-format-justification): If the stream's line position is unknown,
          assume it is 0.
        * compiler.lsp (disassemble-closure): If the stream's line position is
          unknown, output 2 spaces.

1999-05-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (stream_line_number): Can trigger GC.
        * stream.d (stream_line_number): Likewise.
        * io.d (read_delimited_list: Update.

1999-05-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * clos.lsp (install-dispatch): Don't assume the preliminary function
          has a VENV. Generic functions without any method don't have one.

1999-05-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * init.lsp (cerror): Don't go into an interactive reploop if
          *break-driver* is not yet set. This permits typing (load "init.lsp")
          in an interactive lisp.run.

1999-05-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * config.guess, config.sub: Upgrade to newest version from GNU CVS.

1999-04-29  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * gstream.lsp (fundamental-stream, fundamental-input-stream,
           fundamental-output-stream): New classes.
          (close, open-stream-p, stream-element-type,
           (setf stream-element-type)): Add methods on fundamental-stream.
        * lispbibl.d (instanceof): New macro.
          (streamp): Use it.
        * stream.d (input_stream_p, output_stream_p): New macros.
          (test_input_stream, test_output_stream): Use them.
          (INPUT-STREAM-P, OUTPUT-STREAM-P): Likewise.
          (SYS::%DEFGRAY): New function.

1999-04-27  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (builtin_stream_close): Renamed from stream_close.
        * stream.d (close_synonym): Call CLOSE instead of stream_close.
          (low_flush_buffered_handle, make_file_stream): Update.
          (SYSTEM::BUILT-IN-STREAM-OPEN-P): Renamed from OPEN-STREAM-P.
          Stricter argument check.
          (SYSTEM::BUILT-IN-STREAM-ELEMENT-TYPE): Renamed from
          STREAM-ELEMENT-TYPE. Stricter argument check.
          (SYSTEM::BUILT-IN-STREAM-SET-ELEMENT-TYPE): Renamed from
          SYSTEM::SET-STREAM-ELEMENT-TYPE. Stricter argument check.
          (builtin_stream_close): Renamed from stream_close.
          (close_some_files): Update.
          (SYSTEM::BUILT-IN-STREAM-CLOSE): Renamed from CLOSE. Stricter
          argument check.
        * debug.d (LOAD): Update.
        * misc.d (MACHINE-TYPE, MACHINE-VERSION): Update.
        * pathname.d (DELETE-FILE): Update.
        * spvw_memfile.d (WRITE, savemem): Update.
        * eval.d (FUNTAB): Update.
        * compiler.lsp (funtab, subr-info, c-DIRECT-FUNCTION-CALL): Likewise.
        * init.lsp (load): Call sys::built-in-stream-close instead of close.
        * gstream.lsp: Exports symbols from the Gray proposal.
          (close, open-stream-p, stream-element-type,
           (setf stream-element-type)): New generic functions.
        * places.lsp (stream-element-type): Remove defsetf.

        Distinguish built-in and other streams.
        * lispbibl.d (builtin_stream_p): Renamed from streamp.
          (streamp): New macro.
          (socket_stream-p): Use builtin_stream_p instead of streamp.
        * pathname.d (as_file_stream, PARSE-NAMESTRING, TRUENAME,
           PROBE-FILE, DELETE-FILE, RENAME-FILE, OPEN, FILE-WRITE-DATE,
           FILE-AUTHOR, FILE-STAT): Use builtin_stream_p instead of streamp.
        * stream.d (SYS::SYNONYM-STREAM-P, SYS::BROADCAST-STREAM-P,
           SYS::CONCATENATED-STREAM-P, SYS::TWO-WAY-STREAM-P,
           SYS::ECHO-STREAM-P, SYSTEM::STRING-INPUT-STREAM-INDEX,
           GET-OUTPUT-STREAM-STRING, SYS::STRING-STREAM-P,
           SYSTEM::BUFFERED-INPUT-STREAM-INDEX, SYS::FILE-STREAM-P,
           check_window_stream, low_close_pipe, SOCKET-SERVER,
           test_socket_stream, check_open_file_stream): Use builtin_stream_p
          instead of streamp.
          (SYNONYM-STREAM-SYMBOL, BROADCAST-STREAM-STREAMS,
           CONCATENATED-STREAM-STREAMS, TWO-WAY-STREAM-INPUT-STREAM,
           TWO-WAY-STREAM-OUTPUT-STREAM, ECHO-STREAM-INPUT-STREAM,
           ECHO-STREAM-OUTPUT-STREAM, GENERIC-STREAM-CONTROLLER,
           SYS::LISTEN-BYTE, test_n_bytes_args): Use builtin_stream_p in the
          first place, and streamp only for the error message.
          (GENERIC-STREAM-P, SYS::TERMINAL-RAW): Use builtin_stream_p.
        * predtype.d (SYS::BUILT-IN-STREAM-P): New function.

1999-04-29  Wolfgang Jenkner <wolfgang@mat.univie.ac.at>

        * control.d (make_variable_frame): Treat special-declared variables
          like special-proclaimed ones.

1999-04-29  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (TCPCONN): Always include <sys/types.h> before
          <sys/socket.h>.

1999-04-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Fix a jmp_buf alignment problem on Irix 6.5.
        * foreign.d (alignof): Remove macro.
        * lispbibl.d (alignof): Move to here.
          (sp_jmp_buf_incr, sp_jmp_buf_to_jmp_buf, setjmpspl, longjmpspl): New
          macros.
          (jmpbufsize): Add sp_jmp_buf_incr.
          (sp_jmp_buf): New type.
          (finish_entry_frame): Use setjmpspl.
          (enter_frame_at_STACK): Use longjmpsl.
          (DRIVER_frame_data): Use sp_jmp_buf instead of jmp_buf.
        * control.d (BLOCK, TAGBODY, CATCH, UNWIND-PROTECT): Use sp_jmp_buf
          instead of jmp_buf.
        * eval.d (invoke_handlers, funcall_iclosure, eval, eval_no_hooks,
           JMPBUF_on_SP): Use sp_jmp_buf instead of jmp_buf.

1999-04-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * clos.lsp (*allow-mixing-metaclasses*): New variable.
          (initialize-instance-standard-class, make-instance-built-in-class,
           initialize-instance-structure-class): Don't check the metaclass
          of the direct superclasses if *allow-mixing-metaclasses* is true.

1999-04-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * reploop.lsp: Set *use-clcs* to t here.
        * conditio.lsp: Not here.

1999-04-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (listen_generic): Make an error message
          internationalizable.

1999-04-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * conditio.lsp (break): Use ANSI CL `:format-control' initarg.

1999-04-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make read_line recurse through some kinds of streams.
        * lispbibl.d (read_line): New declaration.
        * stream.d (read_line_synonym, read_line_twoway, read_line): New
          functions.
        * io.d (READ-LINE): Call read_line. Put back the buffer after
          copying it, not before.

1999-04-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (wr_ch_terminal2, wr_ch_array_terminal2) [MSDOS]: Define
          as the _unbuffered_dos variant.

1999-04-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Remove obsolete stream primitive `wr_ss'.
        * lispbibl.d (Stream): Remove strm_wr_ss field.
        * io.d (write_sstring_ab): New function, remove macro.
        * stream.d (wr_ss_Pseudofun): Remove type definition.
          (wr_ss): Remove macro.
          (wr_ss_dummy, wr_ss_dummy_nogc): Remove functions.
          (close_dummys): Don't set strm_wr_ss field.
          (wr_ss_synonym): Remove function.
          (make_synonym_stream): Don't set strm_wr_ss field.
          (wr_ch_array_broad): Optimize.
          (wr_ss_broad): Remove function.
          (make_broadcast_stream): Don't set strm_wr_ss field.
          (make_concatenated_stream): Likewise.
          (wr_ss_twoway): Remove function.
          (make_twoway_stream, make_echo_stream): Don't set strm_wr_ss field.
          (MAKE-STRING-INPUT-STREAM): Likewise.
          (wr_ss_str_out): Remove function.
          (make_string_output_stream): Don't set strm_wr_ss field.
          (SYSTEM::MAKE-STRING-PUSH-STREAM): Likewise.
          (wr_ss_pphelp): Remove function.
          (make_pphelp_stream): Don't set strm_wr_ss field.
          (MAKE-BUFFERED-INPUT-STREAM, MAKE-BUFFERED-OUTPUT-STREAM): Likewise.
          (wr_ch_array_generic): Renamed from wr_ss_generic.
          (MAKE-GENERIC-STREAM): Don't set strm_wr_ss field.
          (wr_ss_unbuffered_unix, wr_ss_unbuffered_mac, wr_ss_unbuffered_dos):
          Remove functions.
          (fill_pseudofuns_unbuffered): Don't set strm_wr_ss field.
          (wr_ss_buffered_unix, wr_ss_buffered_mac, wr_ss_buffered_dos):
          Remove functions.
          (fill_pseudofuns_buffered): Don't set strm_wr_ss field.
          (make_keyboard_stream, make_terminal_stream_): Likewise.
          (wr_ch_array_terminal1): Renamed from wr_ss_terminal1.
          (wr_ch_array_terminal2): Renamed from wr_ss_terminal2.
          (wr_ch_array_terminal3): Renamed from wr_ss_terminal3
          (make_terminal_stream_): Don't set strm_wr_ss field.
          (MAKE-WINDOW, make_printer_stream, make_socket_stream): Likewise.
        * pseudofun.d: Update.

1999-04-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make write_char_array recurse through any kind of stream.
        * lispbibl.d (write_char_array): Change calling convention.
        * stream.d (wr_ch_array_Pseudofun): Change type definition.
          (wr_ch_array_error): Change calling convention.
          (wr_ch_array_dummy): Likewise. Loop, calling write_char.
          (write_char_array): Change calling convention.
          (wr_ch_array_synonym): Likewise.
          (wr_ch_array_broad0, wr_ch_array_broad1): Remove functions.
          (wr_ch_array_broad): New function.
          (make_broadcast_stream): Use it.
          (wr_ch_array_twoway): Change calling convention.
          (rd_ch_array_echo): Update.
          (wr_ch_array_str_out): New function.
          (make_string_output_stream): Use it.
          (wr_ch_array_pphelp): New function.
          (make_pphelp_stream): Use it.
          (wr_ch_array_unbuffered_unix): Change calling convention.
          (wr_ss_unbuffered_unix): Update.
          (wr_ch_array_unbuffered_mac): Change calling convention.
          (wr_ss_unbuffered_mac): Update.
          (wr_ch_array_unbuffered_dos): Change calling convention.
          (wr_ss_unbuffered_dos): Update.
          (wr_ch_array_buffered_unix): Change calling convention.
          (wr_ss_buffered_unix): Update.
          (wr_ch_array_buffered_mac): Change calling convention.
          (wr_ss_buffered_mac): Update.
          (wr_ch_array_buffered_dos): Change calling convention.
          (wr_ss_buffered_dos): Update.
          (wr_ss_terminal3): Update.
        * sequence.d (WRITE-CHAR-SEQUENCE): Update.
        * lisparit.d (print_integer): Update. Use DYNAMIC_STRING macro.
        * pseudofun.d: Update.

        Make read_char_array recurse through any kind of stream.
        * lispbibl.d (read_char_array): Change calling convention.
        * stream.d (rd_ch_array_Pseudofun): Change type definition.
          (rd_ch_array_error): Change calling convention.
          (rd_ch_array_dummy): Likewise. Loop, calling read_char.
          (read_char_array): Change calling convention.
          (rd_ch_array_synonym): Likewise.
          (rd_ch_array_concat): Likewise. Treat general case.
          (rd_ch_array_twoway): Change calling convention.
          (rd_ch_array_echo): New function.
          (make_echo_stream): Use it.
          (rd_ch_array_str_in): Change calling convention.
          (rd_ch_array_unbuffered, rd_ch_array_buffered): Likewise.
        * sequence.d (READ-CHAR-SEQUENCE): Update.
        * pseudofun.d: Update.

        Make write_byte_array recurse through any kind of stream.
        * lispbibl.d (write_byte_array): Change calling convention.
        * stream.d (wr_by_array_Pseudofun): Change type definition.
          (wr_by_array_error): Change calling convention.
          (wr_by_array_dummy): Likewise. Loop, calling write_byte.
          (write_byte_array): Change calling convention.
          (wr_by_array_synonym): Likewise.
          (wr_by_array_broad0, wr_by_array_broad1): Remove functions.
          (wr_by_array_broad): New function.
          (make_broadcast_stream): Use it.
          (wr_by_array_twoway): Change calling convention.
          (rd_by_array_echo): Update.
          (wr_by_array_iau8_unbuffered, wr_by_array_iau8_buffered): Change
          calling convention.
          (SYS::WRITE-N-BYTES): Update.
          (WRITE-INTEGER): Use DYNAMIC_BIT_VECTOR. Update.
        * sequence.d (WRITE-BYTE-SEQUENCE): Update.
        * pseudofun.d: Update.

        Make read_byte_array recurse through any kind of stream.
        * lispbibl.d (read_byte_array): Change calling convention.
        * stream.d (rd_by_array_Pseudofun): Change type definition.
          (rd_by_array_error): Change calling convention.
          (rd_by_array_dummy): Likewise. Loop, calling read_byte.
          (read_byte_array): Change calling convention.
          (rd_by_array_synonym): Likewise.
          (rd_by_array_concat): Likewise. Treat general case.
          (rd_by_array_twoway): Change calling convention.
          (rd_by_array_echo): New function.
          (make_echo_stream): Use it.
          (rd_by_array_iau8_unbuffered, rd_by_array_iau8_buffered): Change
          calling convention.
          (SYS::READ-N-BYTES): Update.
          (READ-INTEGER): Use DYNAMIC_BIT_VECTOR. Update.
        * sequence.d (READ-BYTE-SEQUENCE): Update.
        * pseudofun.d: Update.

1999-04-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_ADDRESS_RANGE): Also determine the stack address
          range.
        * unixconf.h.in (STACK_ADDRESS_RANGE): New macro.
        * lispbibl.d (STACK_ADDRESS_RANGE): Provide a default value.
          (bias_type_pointer_object): New macro, moved here from
          spvw_allocate.d.
          (DYNAMIC_BIT_VECTOR, FREE_DYNAMIC_BIT_VECTOR, DYNAMIC_STRING,
           FREE_DYNAMIC_STRING): New macros.
        * spvw_allocate.d (bias_type_pointer_object): Remove macro.

1999-04-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * compiler.lsp (c-form-table): Tread LDB, LDB-TEST, MASK-FIELD, DPB,
          DEPOSIT-FIELD.
          (c-constant-byte-p, c-LDB, c-LDB-TEST, c-MASK-FIELD, c-DPB,
           c-DEPOSIT-FIELD): New functions.

        * compiler.lsp (c-FORMAT): Only insert a FORMATTER call if FORMATTER
          is not defined locally.

1999-04-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * describe.lsp (describe-object): `type-of' does not need `sys::'.

1999-04-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * intlog.d (I_I_logand_I): Optimize the case when either operand is a
          positive fixnum, O(1) instead of O(N).
          (I_I_lognand_I): Likewise.
          (I_I_logandc2_I): Likewise for the first operand.

1999-04-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (make_HANDLER_frame): Fix compilation problem.

1999-04-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * io.d (READ-CHAR-STATUS): Renamed from SYS::REAL-LISTEN.
        * stream.d (listen_generic): Call GENERIC-STREAM-READ-CHAR-STATUS
          instead of GENERIC-STREAM-LISTEN. Remove backward compatibility
          hack.
        * gstream.lsp (generic-stream-read-char-status): Renamed from
          generic-stream-listen.
        * screen.lsp: Likewise.

1999-04-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (ssstring_append_extend): New declaration.
        * array.d (ssstring_append_extend): New function.
        * stream.d (wr_ss_str_out, wr_ss_pphelp): Use it.

1999-04-22  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * array.d (iarray_displace): Renamed from notsimple_displace.
          (storagevector_aref): Renamed from datenvektor_aref.
          (storagevector_store): Renamed from datenvektor_store.
          (iarray_dims_sizes): Renamed from array_dims_sizes.
          (make_storagevector): Renamed from make_datenvektor.
        * io.d (pr_vector, pr_array_elt_t, pr_array): Update.

1999-04-22  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * macros2.lsp (space): Also print timing data, like TIME does.

1999-04-27  Sam Steingold  <sds@goems.com>

	* describe.lsp (describe): wrap `describe-object' in `unwind-protect'.
	(describe-object): fixed printing indentation.

1999-04-22  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d: Port to m68k-linux with ELF.

1999-04-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * defs2.lsp (defpackage): Allow duplicates in each of the
          export/import/... lists, but still require these lists to be
          disjoint.

1999-04-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * places.lsp (push, pushnew): Evaluate the item form before the
          place's subforms.

1999-04-14  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * autoconf/aclocal.m4 (CL_GLOBAL_CONSTRUCTORS): Add check whether
          ctor/dtor needs to be exported.

1999-04-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (rd_ch_array_buffered): Increment the stream's index and
          position appropriately.

1999-04-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (data, UnicodeData.txt): New rules.
          (lisp${LEXE}): Depend on it.
          (installdirs): Create $(lisplibdir)/data.
          (install-bin): Install [data/]UnicodeData.txt.
          (uninstall-bin): Remove it.
        * _distmakefile (install-bin): Install data/UnicodeData.txt.
        * describe.lsp (describe-object) (character): Call unicode-attributes.
          (unicode-data-file, unicode-attributes-line, unicode-attributes):
          New functions.

1999-04-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Add command-line option specifying $(lisplibdir).
        * _clisp.c (main): New option "-B".
        * spvw.d (main, usage): Likewise.
        * pathname.d (argv_lisplibdir): New variable.
          (SYS::LIB-DIRECTORY): New function.
        * makemake.in: Pass "-B" option to all invocations of lisp.run.

1999-04-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (installdirs): Create $(lisplibdir)/linkkit.
          (install-bin): Fix syntax error introduced on 1999-04-04.

1999-04-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (init_streamvars): Set _rl_comment_begin.

1999-04-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * compiler.lsp (c-FORMAT): Use c-constantp, not constantp, and
          c-constant-value.

1999-04-12  Sam Steingold  <sds@goems.com>

	* macros3.lsp (with-collect): new macro.

1999-04-09  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * type.lsp (type-expand): Fix the second return value.

1999-04-08  Sam Steingold  <sds@goems.com>

	* compiler.lsp (c-FORMAT): check for a constant, not just a string.

1999-04-07  Sam Steingold  <sds@goems.com>

	* control.d (constantp): arrays are constants too.

1999-04-07  Sam Steingold  <sds@goems.com>

	Implemented ANSI CL issue KEYWORD-ARGUMENT-NAME-PACKAGE:ANY.
	* eval.d (get_closure, check_for_illegal_keywords): accept symbols
	as keywords.
	* compiler.lsp (analyze-lambdalist): accept symbols as keywords.

1999-04-07  Sam Steingold  <sds@goems.com>

	* compiler.lsp (c-FORMAT): signal an error when the stream
	argument is missing.
	* describe.lsp (describe-object): call `documentation'.

1999-04-06  Sam Steingold  <sds@goems.com>

	--- *ANSI* is a symbol macro now.
	* constsym.d: added `:ansi-cl', `ansi' and `set_ansi'.
	* subr.d: added `ansi' and `set_ansi'.
	* constobj.d: added `ansi'.
	* places.lsp: define *ANSI*.
	* init.lsp: export *ANSI*.
	* spvw.d: call `set_ansi' instead of setting *ANSI*.
	* misc.d (ansi, set_ansi): new LISPFUNNs.
	--- Fix `export-syscalls' damaged by recent patches.
	* socket.d (resolve_host_ipaddr): replaced `fehler_string_int'
	with `fehler_string_integer'.
	* pathname.d (user_data): ditto.  Also,
	`fehler_pathname_descriptor' --> `fehler_pathname_designator'.
	(file_stat): use `stream_fd' instead of `strm_ochannel'.
	* stream.d (file_stat): removed.
	(stream_fd): added.
	* lispbibl.d: declare `stream_fd'.
	--- fix `describe'
	* describe.lsp (describe): set `*describe-done*' and
	`*describe-nesting*' instead of binding.  Print empty arglist as
	(), not NIL.

1999-04-05  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Stop storing german and french translations in the source files.
        * german.lsp, french.lsp: New files.
        * makemake.in (LPARTS): Add them.
        * init.lsp: Load them.
        * *.d, *.lsp: Remove german and french translations.
        * compiler.lsp: Define macro ENGLISH instead of DEUTSCH.
        * lispbibl.d (DEUTSCH, FRANCAIS): Remove macros.
          (ENGLISH): Simplify.
          (language_deutsch, language_francais): Remove macros.
          (GETTEXT): New macro.
        * genclisph.d (main): Update.
        * constobj.d (LISPOBJ_L, LISPOBJ_LS): Simplify.
        * erramiga.d (lang3, lang1): Simplify.
        * errdjgpp.d (lang3, lang1): Likewise.
        * spvw_language.d (language_deutsch, language_francais): Define only
          if GNU_GETTEXT.
          (init_languages_from): Treat de and fr only if GNU_GETTEXT.
          (init_language) [!GNU_GETTEXT]: Don't treat de and fr.

1999-04-05  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * io.d (right_margin): Update translations.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * foreign1.lsp (DEF-C-CALL-OUT, DEF-C-CALL-IN): Use language :STDC,
          not old :C any more.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Changes to the distribution structure on Unix:
        - The default linking set is moved into subdirectory `base'.
        - Both `base' and `full' are installed.
        - All the documentation is installed.
        * _clisp.c (main): New option "-K". Drop option "-F".
        * _clisp.1: Document option "-K".
        * _clisp.html: Likewise.
        * spvw.d (usage): Mention "-K".
          (main): Accept and ignore "-K".
        * _distmakefile (fromdir): Remove variable.
          (linkingsets): New variable.
          (docdir, lispdocdir): New variables.
          (all): Depend on all lisp.runs.
          (install): Depend on install-doc.
          (install-bin): Copy all linking sets entirely. Copy clisp-link and
          linkkit as well.
          (install-doc): New target.
        * makemake.in: $(lispdocdir) replaces $(docdir). Define $(docdir) and
          $(lispdocdir) in all cases. Make `base' a directory containing
          symlinks, not a symlink. `full' depends on `base'. `install' depends
          on `install-doc'. New target `install-doc'. `installdirs' creates
          the `base' directory and the doc directories. `install-bin' copies
          the linking sets `base' and `full', and clisp-link and linkkit as
          well. `install-man' installs all readmes and manual files.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * modules/clx/new-clx/link.sh: Add -L/usr/X11R6/lib -lX11 to
          NEW_LIBS. Necessary since 1999-03-08 change.
        * modules/clx/new-clx/clx.f (pathname_encoding, misc_encoding): New
          macros.
          (with_stringable_0): Add an encoding argument.
          (get_font, get_xatom_general, enum_error, make_xatom,
           XLIB:OPEN-DISPLAY): Use misc_encoding.
          (XLIB:DISPLAY-AUTHORIZATION-DATA, XLIB:DISPLAY-AUTHORIZATION-NAME):
          Allocate empty string via allocate_string.
          (XLIB:DISPLAY-VENDOR, XLIB:DISPLAY-HOST): Use misc_encoding.
          (general_draw_text): If UNICODE, use the -16 variant functions.
          (XLIB:OPEN-FONT, XLIB:FONT-PATH, XLIB:FONT-PATH-SETTER,
           XLIB:LIST-FONT-NAMES, XLIB:LIST-FONTS, XLIB:FONT-PROPERTIES): Use
          misc_encoding.
          (XLIB:TEXT-EXTENTS, XLIB:TEXT-WIDTH): If UNICODE, use the -16
          variant functions.
          (XLIB:ALLOC-COLOR, XLIB:LOOKUP-COLOR, XLIB:ATOM-NAME,
           XLIB:GET-PROPERTY, XLIB:LIST-PROPERTIES, XLIB:LIST-EXTENSIONS,
           XLIB:QUERY-EXTENSION): Use misc_encoding.
          (XPM:READ-FILE-TO-PIXMAP): Use pathname_encoding.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * _README: Refer to _README.en unconditionally.
        * makemake.in: Don't refer to `README.en'. `README' is enough.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Since make_machine and make_machine_code are different on some
        platforms...
        * pseudofun.d (LPSEUDOCODE): New macro, replaces PSEUDOFUN.
          (XPSEUDOCODE, XPSEUDODATA): New macros, replace XPSEUDO.
          (LCODE_PSEUDO_*, XCODE_PSEUDO_*, XDATA_PSEUDO_*): New macros.
        * lispbibl.d (pseudofun_tab): Remove.
          (pseudocode_tab, pseudodata_tab): New variables.
        * spvw.d (pseudocode_anz, pseudodata_anz): New macros.
          (pseudofun_anz): Change definition.
          (pseudofun_tab): Define as local variable.
          (main): Initialize pseudofun_tab from pseudocode_anz, pseudodata_anz.
        * spvw_memfile.d (loadmem_update): Compare objects, not Pseudofuns.
        * stream.d (pseudofun_tab): Remove.
          (pseudocode_tab, pseudodata_tab): New variables.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * control.d (test_env): Accept NIL, denoting the global environment.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (installdirs, install-bin, install-man): Make sure
          the directories $(prefix) and $(exec_prefix) exist.
        * _distmakefile (install-bin, install-man): Likewise.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (make_file_stream): Fix the STACK offsets used to fill in
          truename and pathname of unbuffered streams.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (SYS::MAKE-SOCKET-STREAM, init_streamvars): Pass a proper
          encoding to make_unbuffered_stream, not the symbol :UNIX.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * conditio.lsp: Export simple-condition-format-control.
          (coerce-to-condition): Use :format-control.
          (simple-condition): Use $format-control.
        * defs3.lsp: Export simple-condition-format-control, not
          simple-condition-format-string.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (make_pipe_output_stream, make_pipe_input_stream,
           make_pipe_stream): Revert 1999-03-26 patch.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * socket.d (atoi): Remove declaration.
          (SERVENT_TO_STACK): Add `tmp' local variable.
          (SOCKET-SERVICE-PORT): Don't accept symbols, only strings and
          integers, as service-name. Don't call fehler_string_integer for
          non-fixnums. Use with_string_0 instead of TheAsciz(string_to_asciz(.
          Fix placement of begin_system_call()/end_system_call().
        * subr.d: Keep in sync.
        * constsym.d: Likewise.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (FILE-STAT): Move to pathname.d.
        * pathname.d (fehler_pathname_designator): Renamed from
          fehler_pathname_descriptor.
          (as_file_stream): global -> local. Update.
          (fehler_file_stream_unnamed): global -> local.
          (PARSE-NAMESTRING): Update.
          (unix_user_pwd): Fix treatment of error in getpwuid call.
          (init_pathnames): Restore comments.
          (USER-DATA, FILE-DATA): Move here, before the EMX "#undef stat".
        * subr.d: Keep in sync.
        * constsym.d: Likewise.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * constobj.d (O(type_string_integer)): Renamed from O(type_gensym_arg).
        * symbol.d (GENSYM): Update.
        * lispbibl.d (fehler_string_integer): Renamed from fehler_string_int.
        * error.d (fehler_string_integer): Renamed from fehler_string_int.
          Use O(type_string_integer). Fix error message. Update translations.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * describe.lsp (describe-slotted-object): Define code in package
          SYSTEM, not package CLOS.
          (describe-object): Likewise. Reindent.
          (describe-object T): Treat FSUBR here.
          (describe-object FUNCTION): Not here.
          (describe-object CONS): De-obfuscate list-length determination.
          (describe-object SYMBOL): Bind *print-escape* and *print-readably*
          only around the necessary code. Update translations. Terminate
          sentence with a dot.
          (describe-object PACKAGE): Keep "." internationalizable. Update
          translations. Don't sort L if all we need is its length.
          (describe): Update translations.
          (apropos-list): Reindent.

1999-04-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Change the type of FSUBRs (were COMPILED-FUNCTION, but ANSI CL
        specifies that COMPILED-FUNCTION is a subtype of FUNCTION).
        * predtype.d (COMPILED-FUNCTION-P): For FSUBRs, return NIL.
          (TYPE-OF): For FSUBRs, return SPECIAL-OPERATOR.
          (CLASS-OF): Undo 1999-03-18 patch.
          (enum_hs_special_operator): Renamed from enum_hs_special_oper.
          (heap_statistics_mapper): Update.
        * defs2.lsp (function-lambda-expression): No need to call functionp.

1999-04-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * conditio.lsp (export): Mention `os-error' right after `file-error'.

1999-04-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * init.lsp (export): Mention `with-package-iterator' right after
          `do-all-symbols', because that's where it is located in CLtL2.
        * defs3.lsp (export): Likewise.
        * defs1.lsp (with-package-iterator): Check all the symboltypes. Remove
          duplicates among them.

1999-04-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * savemem.lsp (saveinitmem): Reindent. Declare *command-index* special,
          because it is not defvar'ed at this point.

1999-04-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * loop.lsp (expand-loop) (collect/append/nconc): Generate forward-
          consing code only for named accumulation variables. Revert to the
          old backward-consing code for unnamed accumulation variables.
          (expand-loop) (accu-vars-nil, accu-vars-0): Kill use of `pushnew',
          `push' and `delete-duplicates' is more efficient.

1999-04-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * constsym.d (*merge-pathnames-ansi*): New variable.
        * spvw.d (init_symbol_values): Initialize it to NIL.
          (main): Set it to T, if option -a given.
        * pathname.d (MERGE-PATHNAMES): If *merge-pathnames-ansi*,
          concatenate two relative directories. Ignore *ansi*.

1999-04-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (impnotes.html): Only replace <HS> followed by a slash.

1999-04-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in: Accept option --with-export-syscalls, instead of
          --export-syscalls.

1999-04-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in: Undo hack for missing rluserman.dvi.

1999-04-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * clisp.spec: Remove the "--with-unicode=no" hint. It is a bad idea.

1999-03-30  Jrg Hhle  <hoehle@tzd.telekom.de>

        * rexx.d (rexx_getmsg): return (handle command :RESULT)
          if ARexx OPTIONS RESULTS requested on incoming command.

1999-04-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Improve handling of /proc/self/fd/* files on Linux.
        * pathname.d (possible_symlink, my_readlink): New functions.
          (realpath): Call possible_symlink before readlink.
          (if_HAVE_LSTAT): New macro.
          (assure_dir_exists) [UNIX]: Use it. Convert namestring to asciz once
          only. Call possible_symlink before S_ISLNK and readlink.

1999-03-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * Makefile.devel: Add rules for three files in the
          ffcall/callback/vacall_r/ directory.

1999-03-26  Sam Steingold  <sds@goems.com>

	* stream.d (make_pipe_stream): new function: merged
	make_pipe_input_stream and make_pipe_output_stream.
	(make_pipe_output_stream, make_pipe_input_stream): use it.

1999-03-22  Sam Steingold  <sds@goems.com>

	* pathname.d (merge-pathnames): be ANSI CL compliant when
	lisp:*ansi* is non-nil.
	(unix_user_pwd): extracted from init_pathnames().
	(init_pathnames): use unix_user_pwd().
	(user_data): moved here from stream.d; use unix_user_pwd().

1999-03-20  Sam Steingold  <sds@gnu.org>

	Added PostgreSQL interface.  New module: postgresql.
	* modules/postgresql/postgresql.lsp: bindings.
	* modules/postgresql/sql.lsp: example of use.
	* makemake.in: added postgresql.

1999-03-20  Sam Steingold  <sds@gnu.org>

	* describe.lsp (describe-object): handle foreign functions correctly.

1999-03-19  Sam Steingold  <sds@gnu.org>

	* savemem.lsp (saveinitmem): bind +/-/* to nil instead of setting
	them to nil.  Also, bind sys::*command-index* to 0.

1999-03-18  Sam Steingold  <sds@gnu.org>

	* compiler.lsp (*deprecated-functions-list*): new variable.
	(note-function-used): use it.
	* describe.lsp (describe-object): warn about deprecated functions.
	* predtype.d (class-of): fsubr is a function, not T.
	* constobj.d: print SPECIAL-OPERATOR instead of SPECIAL-FORM.
	* io.d (pr_fsubr): comment fix.
	* ../modules/clx/new-clx/clx.lsp: push keyword :clx-ansi-common-lisp
	into `*features*' instead of the symbol.

1999-03-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_ICONV): Add check for iconv prototype.
        * unixconf.h.in (ICONV_CONST): New macro.
        * unix.d (iconv): Use ICONV_CONST.

1999-03-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (CLISP_INTERNAL_CHARSET): For HP-UX, set it to "ucs2".

1999-03-17  Sam Steingold  <sds@gnu.org>

	* describe.lsp (describe-object): handle CLOS classes in a
	`standard-object' method.  Describe the value of the `weak-pointer'.
	* stream.d (file_stat): fixed time handling.

1999-03-16  Sam Steingold  <sds@gnu.org>

	* describe.lsp (describe-object): replaced `standard-object' with T.

1999-03-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * defs1.lsp (package-iterator-function): New function, taken out of
          with-package-iterator.
          (with-package-iterator): Adjust, add error message.

1999-03-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * encoding.d (nls_mbstowcs, nls_asciiext_mbstowcs, nls_wcstombs,
           nls_asciiext_wcstombs, nls_range): Use TheMachine, not ThePseudofun.
          Vital for hppa.
          (init_encodings): Use make_machine, not P. Vital for hppa.
          Initialize O(internal_encoding) always to ISO-8859-1, independently
          of the platform. If HPROMAN8_CHS is defined, use it for the other
          encodings, instead of ASCII.

1999-03-16  Sam Steingold  <sds@gnu.org>

	implement `with-package-iterator'.
	* defs1.lsp (with-package-iterator): new ANSI CL macro.
	* defs3.lsp, init.lsp: export it.

1999-03-16  Sam Steingold  <sds@gnu.org>

	* socket.d (is_number): removed.
	(resolve_host_ipaddr): return all hosts on NIL arg.
	* stream.d (user_data): return the current user with no args.
	* _impnotes.html: document this.

1999-03-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (rd_ch_terminal2): Restructure this function. Call
          rd_ch_unbuffered, in order to respect the stream's encoding.
          When EOF has been reached, no need to set strm_rd_ch_last,
          the caller already does this.
          (lisp_completion_matches): Do filename completion also after #P".
          (rd_ch_terminal3): Restructure this function. Respect the stream's
          encoding. When EOF has been reached, no need to set strm_rd_ch_last,
          the caller already does this.

1999-03-15  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d: Test for `__linux__', not `linux', so that even when
          compiling with "-ansi -pedantic" the incompatible _setjmp/_longjmp
          functions are avoided.

1999-03-15  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make it possible again to compile with "gcc -x c++".
        * aclocal.m4 (CL_CC_GCC): Define GCC_X_NONE.
        * intparam.d (main7): Use %lX instead of %X for a `long'.
          (main8): Adapt for C++.

        * configure: Don't configure in readline subdir if compiling
          in C++ mode.

        * utils/modprep.d: Define `inline' to empty when compiling with
          "gcc -ansi -pedantic".
          (String_equalsIgnoreCase): Don't use `isascii', it is not portable.

        * io.d (unicode_attribute, graphic_char_p): Remove the macros. The
          global definition in charstrg.d is sufficient.
          (syntax_table_put): Cast one branch of the conditional expression
          to void, to make this valid C++.

        * stream.d (host_data_fetcher): New type.
          (publish_host_data): Adjust declaration, for increased type safety.

        * charstrg.d (string_search): Change for being valid C++.

        * foreign.d (alignof): Provide alternate definition, valid C++.
          (convert_to_foreign): Cast converter_malloc result to char*.

        * avl.d (AVL(AVLID,least), AVL(AVLID,move)): Change K&R C declaration
          into ANSI C declaration.

1999-03-14  Sam Steingold  <sds@gnu.org>

	* stream.d: removed `stream_fd';
	moved `file_stat' and `user_data' here.
	* pathname.d: renamed `fehler_thing' to `fehler_pathname_descriptor'.
	export it, `as_file_stream', `fehler_file_stream_unnamed'.
	* socket.d (resolve_host_ipaddr): handle IPv6 addresses.

1999-03-14  Sam Steingold  <sds@gnu.org>

	OS_error() generates an error of type `os-error'.
	* erramiga.d, errdjgpp.d, errunix.d, errwin32.d (OS_error): use
	`simple_os_error'.
	* lispbibl.d (conditiontype): added `os_error'.
	* constsym.d: added `simple_os_error' symbol.
	* error.d: handle `simple_os_error'.
	* conditio.lsp: added `os-error' and `simple-os-error'.

1999-03-14  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (strm_encoding): New macro.
        * stream.d (strm_encoding): Comment out.
        * encoding.d (SYS::[SET-]DEFAULT-FILE-ENCODING,
           SYS::[SET-]PATHNAME-ENCODING, SYS::[SET-]TERMINAL-ENCODING,
           SYS::[SET-]FOREIGN-ENCODING, SYS::[SET-]MISC-ENCODING): New
          functions.
        * init.lsp: Export *default-file-encoding*, *pathname-encoding*,
          *terminal-encoding*, *misc-encoding*.
        * places.lsp (*default-file-encoding*, *pathname-encoding*,
           *terminal-encoding*, *misc-encoding*): New settable symbol-macros.
        * foreign1.lsp (ffi:*foreign-encoding*): New settable symbol-macro.
        * affi1.lsp (affi:*foreign-encoding*): New settable symbol-macro.

1999-03-14  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * defs2.lsp (define-symbol-macro, check-not-special-variable-p): Move
          to macros2.lsp.
        * macros2.lsp (define-symbol-macro, check-not-special-variable-p):
          Moved here from defs2.lsp.

1999-03-14  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (test_socket_server): New argument check_open. When it is
          TRUE, check that the handle is non-NIL.
          (SOCKET-SERVER-CLOSE): After closing, set the handle to NIL. When
          the handle is NIL, do nothing.
          (SOCKET-SERVER-PORT, SOCKET-SERVER-HOST): Update.
          (SOCKET-ACCEPT, SOCKET-WAIT): Call test_socket_server with
          check_open=TRUE.
        * io.d (pr_orecord): For closed socket-servers, print a "CLOSED "
          prefix.

1999-03-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * encoding.d (init_encodings): Define some more aliases.

1999-03-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * encoding.d (fehler_uni32_invalid, uni32_mblen, uni32be_mbstowcs,
           uni32le_mbstowcs, uni32_wcslen, uni32be_wcstombs, uni32le_wcstombs):
          New functions.
          (init_encodings): Initialize the Unicode-32 encodings.
        * pseudofun.d: Update.
        * type.lsp (canonicalize-type): Add charset:unicode-32-big-endian and
          charset:unicode-32-little-endian to the list of types equivalent to
          CHARACTER.

1999-03-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (conditiontype): Add charset_type_error.
        * conditio.lsp (charset-type-error, simple-charset-type-error): New
          condition types.
          (%defclcs call): Add simple-charset-type-error.
        * constsym.d (simple_*_error): Add simple_charset_type_error.
        * error.d (end_error): Treat simple_charset_type_error like
          simple_type_error.
        * encoding.d (fehler_unencodable): Signal an error of type
          charset_type_error.

1999-03-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Integrate types and encodings.
        * lispbibl.d (Encoding): Add enc_range field.
          (encoding_length): Increment by 1.
          (Encoding_range): New macro.
          (stringof): New declaration.
        * charstrg.d (stringof): New function.
        * encoding.d (all_range, nls_range): New functions.
          (iconv_range): Declare.
          (MAKE-ENCODING): Initialize the enc_range field.
          (fehler_encoding, SYS::CHARSET-TYPEP, SYS::CHARSET-RANGE): New
          functions.
          (init_encodings): Initialize the enc_range field.
        * stream.d (iconv_mblen): Optimize and make consistent with
          iconv_mbstowcs.
          (iconv_wcslen): Optimize and make consistent with iconv_wcstombs.
          (iconv_wcstombs): Don't loop until outsize==0. The caller may have
          given a larger buffer than necessary.
          (iconv_range): New function.
        * pseudofun.d: Update.
        * type.lsp (typep): Accept an encoding as a type.
          (canonicalize-type, subtypep): Likewise.
          (charset-subtypep): New function.

1999-03-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * encoding.d (SYS::ENCODINGP): New function.
        * type.lsp: Implement typep for type ENCODING.
          (subtypep): Treat ENCODING as an elementary type.
        * compiler.lsp (c-typep-alist1): Implement typep for type ENCODING.

1999-03-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_genera2.d (gc_mark_old_generation): Add braces, to avoid egcs
          warning.
        * spvw_genera3.d (update_old_generation): Likewise.

1999-03-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (conditiontype): Add reader_error.
        * conditio.lsp (simple-reader-error): New condition type.
          (%defclcs call): Add simple-reader-error.
        * constsym.d (simple_*_error): Add simple_reader_error.
        * io.d (signal_reader_error): New function.
          (read_internal): Protect calls to read_rational and read_float with
          a handler for ARITHMETIC-ERROR.

1999-03-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (make_HANDLER_frame, make_HANDLER_entry_frame,
           unwind_HANDLER_frame): New macros.
        * eval.d (invoke_handlers): Distinguish handler frames with a
          bytecoded handler and handler frames with a C function as handler.

1999-03-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * format.lsp (format-character): Don't print the name of printable
          characters.

1999-03-12  Sam Steingold  <sds@gnu.org>

	* subr.d: arglists for `socket_service_port' and `resolve_host_ipaddr'.
	* stream.d (socket_service_port): moved from here to socket.d
	* pathname.d (user_data): use `fehler_string_int'.
        * socket.d (resolve_service): removed.
	(socket_service_port): moved here.  optional second arg - protocol.
	return all services as a list when called with no arguments.
	(resolve_host_ipaddr): when called with no args, localhost is returned.
	* error.d (fehler_string_int): new function.
	* lispbibl.d (fehler_string_int): declare.

1999-03-11  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * encoding.d: Make UNICODE-16 an alias for UNICODE-16-BIG-ENDIAN.
        * constsym.d: Rename the CPxxx-MS symbols to CPxxx.

1999-03-11  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * encoding.d: Add the HP-ROMAN8 character set.

1999-03-11  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (FILE-STRING-LENGTH): Depend on the stream's encoding.
          Don't look at the strm_wr_ch pointer.

1999-03-11  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pathname.d (directory_search_scandir): Avoid calling stat() if
          the given wildcard mask excludes a given directory entry.

1999-03-10  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Fix a bug: clear-input did not kill the EOF condition in terminal2
        and terminal3 streams.
        * stream.d (clear_input_keyboard): Use ls_avail_p.
          (clear_input_terminal2): Call clear_input_unbuffered, don't call
          clear_tty_input directly. Use ls_avail_p.
          (clear_input_terminal3): Likewise.

1999-03-10  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Finish implementing the iconv-based encodings.
        * lispbibl.d (Encoding): Add a stream argument to the enc_mbstowcs and
          enc_wcstombs fields.
          (Encoding_mbstowcs, Encoding_wcstombs): Update.
          (cstombs): Pass nullobj as stream.
        * error.d (write_errorstring): Likewise.
        * foreign.d (convert_from_foreign_array_fill, convert_from_foreign):
          Likewise.
        * affi.d (SYSTEM::MEM-READ): Likewise.
        * encoding.d (MAKE-ENCODING, make_string, asciz_to_string,
           string_to_asciz): Move to the end of the file.
          (fehler_unencodable): Declare as global.
          (uni16be_mbstowcs, uni16le_mbstowcs, uni16be_wcstombs,
           uni16le_wcstombs, utf8_mbstowcs, utf8_wcstombs, java_mbstowcs,
           java_wcstombs, nls_mbstowcs, nls_asciiext_mbstowcs, nls_wcstombs,
           nls_asciiext_wcstombs): Add an unused stream argument.
          (iconv_mblen, iconv_mbstowcs, iconv_wcslen, iconv_wcstombs,
           fehler_iconv_invalid_charset): Move to stream.d.
        * stream.d (strm_channel_extrafields_struct): Add iconvdesc, oconvdesc
          fields.
          (ChannelStream_iconvdesc, ChannelStream_oconvdesc): New macros.
          (CLISP_INTERNAL_CHARSET): New macro.
          (fehler_iconv_invalid_charset, iconv_mblen, iconv_mbstowcs,
           iconv_wcslen, iconv_wcstombs): New functions, moved to here from
          encoding.d. If the stream is passed, use the iconvdesc, oconvdesc
          fields.
          (ChannelStream_init, ChannelStream_fini): New functions.
          (rd_ch_unbuffered, listen_unbuffered, rd_ch_array_unbuffered): Pass
          the stream to the mbstowcs function.
          (close_ichannel): Call ChannelStream_fini.
          (wr_ch_unbuffered_unix, wr_ch_array_unbuffered_unix,
           wr_ch_unbuffered_mac, wr_ch_array_unbuffered_mac,
           wr_ch_unbuffered_dos, wr_ch_array_unbuffered_dos): Pass the stream
          to the wcstombs function.
          (close_ochannel): Call ChannelStream_fini.
          (make_unbuffered_stream): Call ChannelStream_init.
          (rd_ch_buffered, rd_ch_array_buffered): Pass the stream to the
          mbstowcs function.
          (wr_ch_buffered_unix, wr_ch_array_buffered_unix, wr_ch_buffered_mac,
           wr_ch_array_buffered_mac, wr_ch_buffered_dos,
           wr_ch_array_buffered_dos): Pass the stream to the wcstombs function.
          (make_buffered_stream): Call ChannelStream_init.
          (closed_buffered): Erase the old iconv descriptors.
          (close_buffered): Call ChannelStream_fini.
          (make_keyboard_stream): Add O(terminal_encoding), and call
          ChannelStream_init.
          (make_terminal_stream_): Call ChannelStream_init.
          (SYSTEM::SET-STREAM-EXTERNAL-FORMAT): Call ChannelStream_fini and
          ChannelStream_init.
        * pseudofun.d: Update.

1999-03-10  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Support for IPv6 sockets.
        * aclocal.m4 (CL_TCPCONN): Add checks for IPv4 and IPv6 facilities.
          Add checks for `inet_pton' and `inet_ntop' functions.
        * unixconf.h.in (CL_TCPCONN): Conditionally define HAVE_IPV4,
          HAVE_IPV6, IPV6_NEED_LINUX_IN6_H, HAVE_INET_PTON, HAVE_INET_NTOP.
        * lispbibl.d (UNIXCONN, TCPCONN): Define here, not in socket.d.
          Make SOCKET_STREAMS depend on TCPCONN.
          (host_data): Remove the `host' field. Make the `hostname' field
          large enough for IPv6. Change the `truename' field into an array,
          so it does not need to point to static or temporary data.
          (MAXHOSTNAMELEN): Define.
        * win32.d: Define HAVE_IPV4, don't define HAVE_IPV6.
        * stream.d (publish_host_data): Test hd.truename for being "", not
          NULL. Allocate the temporary string on the stack, instead of malloc.
        * misc.d (MACHINE-INSTANCE): Moved to socket.d.
        * socket.d: Don't define UNIXCONN, TCPCONN, SOCKET_STREAMS here.
          Don't define MAXHOSTNAMELEN here.
          (get_hostname): New macro.
          (ipv4_ntop, ipv6_ntop): New macros.
          (MACHINE-INSTANCE): Moved here from socket.d. Consider h->h_addrtype
          instead of blindly assuming it's AF_INET. Use ipv4_ntop macro
          for building the dotted address string, instead of doing it by hand.
          (CLOSESOCKET): Only define if UNIXCONN || TCPCONN.
          (saving_sock_errno): New macro.
          (all_digits_dots): New function, for distinguishing IPv4 addresses
          and FQDNs. The old method of looking at the first character is no
          longer valid.
          (with_hostname): New function, taken out of connect_to_x_server.
          Support IPv6. Compare the inet_addr() return value with (uint32)(-1),
          not (unsigned long)(-1) [matters for 64-bit platforms].
          (connect_to_x_via_ip): New function, taken out of
          connect_to_x_server.
          (connect_to_x_server): Use with_hostname and connect_to_x_via_ip.
          Use get_hostname.
          (memset, bzero, bcopy): Remove declarations.
          (fill_hostname): Remove function, obsoleted by ipv4_ntop.
          (sockaddr_max): New type.
          (socket_getlocalname_aux): New function, taken out of
          socket_getlocalname. Don't need to bzero() the result. Support IPv6.
          (socket_getlocalname): Use socket_getlocalname_aux. Return the true
          host name instead of "localhost".
          (socket_getpeername): Don't need to bzero() the result. Support IPv6.
          If truename unknown, return it as "" instead of NULL.
          (bindlisten_via_ip): New function, taken out of create_server_socket.
          Close the socket in case of failure.
          (create_server_socket): Use with_hostname and bindlisten_via_ip.
          Don't need to bzero() the addr. Use the true host name instead of
          "localhost". After calling getsockname(), support IPv6. Make the
          final getsockname() after listen(), not before. Don't need to
          bzero() the result.
          (accept_connection): Support IPv6.
          (connect_via_ip): New function, taken out of create_client_socket.
          If connect() fails, save errno during closesocket.
          (create_client_socket): Don't need to bzero() the sockaddr. Use
          with_hostname and connect_via_ip.

1999-03-09  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (XCFLAGS): When compiling for sparc, use
          -fno-schedule-insns, in order to avoid egcs-1.1.1 bug which
          miscompiles the division routine and causes an XGCD test failure.

1999-03-09  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_TERM): When `struct winsize' is not defined in
          <termios.h>, check whether it is defined in <sys/ioctl.h>.
        * unixconf.h.in (WINSIZE_NEED_SYS_PTEM_H): Renamed from
          NEED_SYS_PTEM_H.
          (WINSIZE_NEED_SYS_IOCTL_H): New macro.
        * unix.d: Use both.

1999-03-10  Sam Steingold  <sds@gnu.org>

	* ../configure: new option --export-syscalls.
	* makemake.in: ditto.
	* constsym.d, subr.d: added `RESOLVE-HOST-IPADDR', `FILE-STAT'
	and `USER-DATA'.
	* pathname.d: added `file_stat' and `user_data'.
	* socket.d: added `resolve_host_ipaddr'.
	* stream.d: added `stream_fd'.

1999-03-09  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make it possible to build clisp when neither libtermcap nor libncurses
        is available.
        * configure: Optionally pass/recommend --with-no-termcap-ncurses for
          makemake.
        * makemake.in (XCFLAGS): Optionally add -DNO_TERMCAP_NCURSES.
        * lispbibl.d: If NO_TERMCAP_NCURSES is defined, don't define KEYBOARD
          and SCREEN.
        * spvw_sigwinch.d (update_linelength): Respect NO_TERMCAP_NCURSES.

1999-03-09  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d: Include <string.h> also in the case of NO_READLINE,
          in order to declare `strcpy' and `strcat'.

1999-03-11  Sam Steingold  <sds@goems.com>

	* loop.lsp (expand-loop): do not nreverse for collect/nconc/append.

1999-03-09  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Remove the graphics stuff.
        * graph.d: Remove file.
        * gettext/po/Makefile.devel (DSOURCES): Remove graph.
        * unix.d (geteuid, setreuid): Remove declarations.
        * makemake.in (LIBS): Don't add -lgraph and -lvideo on EMX.
          (CPARTS): Remove graph.
          (lisp.exe rule): Don't use emx options -aim or -acmi.
        * lispbibl.d (GRAPHICS, GRAPHICS_SWITCH): Remove definitions.
          (switch_text_mode): Remove declaration.
        * spvw.d (main): Don't drop setuid-root privilege. Don't call
          switch_text_mode.
        * stream.d (low_read_unbuffered_handle, low_listen_unbuffered_handle,
           low_read_array_unbuffered_handle, low_write_unbuffered_handle,
           low_write_array_unbuffered_handle, rd_ch_terminal2,
           rd_ch_terminal3, out_char): Don't call switch_text_mode.

1999-03-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * configure: Don't tell the user to do "cd .".

1999-03-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * graph.d (GRAPHICS_X, GRAPHICS_SUN): Remove unfinished code.
        * makemake.in: Don't link with ${X_LIBS}, but keep the Makefile
          variable for possible future use.
        * clisp-link.in: Likewise.

1999-03-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pathname.d: Include <stdio.h>.

1999-03-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_FPU_CONTROL): Fix the "checking for" messages.

1999-03-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_MEMSET): Undefine memset, so we get correct types
          with glibc-2.1.

1999-03-10  Sam Steingold  <sds@gnu.org>

	* clos.lsp: moved `describe-slotted-object' and `describe-object'
	from here to describe.lsp.
	* describe.lsp: moved the bulk from `describe' to `describe-object'.
	added variables `*describe-nesting*' and `*describe-done*'.
	`describe' now calls `describe-object' and is ANSI compliant.

1999-03-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * readline/: Upgrade to readline-4.0.
        * configure: Also copy readline/shlib/.

1999-03-05  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * genclisph.d (main): Modify immediate_number_p, charp, integerp,
          fixnump, posfixnump, floatp, short_float_p according to 1999-02-02
          lispbibl.d patch.

1999-03-05  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * Renamed newnewreadline to readline, newreadline to oldreadline,
          readline to oldoldreadline.
        * Makefile.devel, configure, makemake.in: Update.

1999-03-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (SOCKET-SERVICE-PORT): When not found, return NIL instead
          of -1.

1999-03-02  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Handle SIGPIPE on Unix.
        * spvw_sigpipe.d: New file.
        * spvw.d: Include it.
          (main): Call install_sigpipe_handler.
        * makemake.in (SPVW_INCLUDES): Add spvw_sigpipe.
        * gettext/po/Makefile.devel (DSOURCES): Add spvw_sigpipe. Split line
          into multiple pieces, to avoid 1023 character line length limit of
          patch-2.1.
        * lispbibl.d (writing_to_subprocess): New declaration.
        * stream.d (low_flush_buffered_pipe): New function.
          (BufferedPipeStreamInit): New macro.
          (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM,
           MAKE-PIPE-IO-STREAM): Use it.
          (low_write_unbuffered_pipe, low_write_array_unbuffered_pipe): New
          functions.
          (UnbufferedPipeStream_output_init): Use them.
        * error.d (begin_error, tast_break): Set writing_to_subprocess=FALSE.
        * unix.d (raise): New declaration.
        * msdos.d (raise): Likewise.
        * acorn.d (raise): Likewise.
        * errunix.d (EPIPE): Improve error messages.

1999-03-01  Sam Steingold  <sds@goems.com>

	* spvw.d: removed :IEEE-FLOATING-POINT from *features*.  Use
	`pushnew' instead of `nconc'.

1999-02-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (subr_argtype_t): New enumeration items subr_argtype_1_3,
          subr_argtype_2_3.
        * spvw.d (subr_argtype): Use them.
        * eval.d (eval_subr, apply_subr, funcall_subr): Treat them.
        * stream.d (SYSTEM::SET-STREAM-ELEMENT-TYPE): Stricter restrictions.
          (check_multiple8_eltype, test_endianness_arg): New functions.
          (READ-INTEGER, WRITE-INTEGER): New functions.
        * compiler.lsp (subr-info): Add them.

1999-02-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Allow #0Y to occur on standard input.
        * stream.d (SYSTEM::SET-STREAM-EXTERNAL-FORMAT): Accept an optional
          direction argument. If it is given, recurse properly.
        * io.d (closure_reader): Call it with direction :INPUT.

1999-02-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * io.d (syntax_table_get_notinline): Swap arguments to gethash().

1999-02-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * compiler.lsp (compile-file): Create the .fas and .lib files in UTF-8.

1999-02-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Reader macro for switching the stream's encoding.
        * constobj.d (O(charset_package)): New variable.
        * package.d (init_packages): Create #<PACKAGE CHARSET> and initialize
          O(charset_package).
        * constpack.d: Remove #<PACKAGE CHARSET> here.
        * spvw.d (init_symbol_tab_2): New enum item enum_charset_index.
        * io.d (closure_reader): Accept "#0Y charset" syntax.

1999-02-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * charstrg.d (char_name): Return #\Uxxxx as a name for every Unicode
          character.
          (name_char): Accept #\Uxxxx as a name for any Unicode character.
        * io.d (char_reader): Remove #\Uxxxx recognition code, now done by
          `name_char'.
          (pr_character): For graphic standard characters, don't look up the
          name.

1999-02-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Improve error checking in parse-namestring.
        * pathname.d (legal_namechar): Don't accept Unicode characters which
          are not 1 byte in the pathname_encoding.

1999-02-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Use the system's iconv() function if available.
        * aclocal.m4 (CL_ICONV): New macro.
        * configure.in: Call it.
        * unixconf.h.in (HAVE_ICONV): New macro.
        * unix.d: Declare iconv_open, iconv, iconv_close.
        * encoding.d (MAKE-ENCODING): Accept strings as well.
          (iconv_mblen, iconv_mbstowcs, iconv_wcslen, iconv_wcstombs): New
          functions.
        * pseudofun.d: Add them.
        * stream.d (test_external_format_arg): Accept strings as well.

1999-02-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * configure: Recommend --with-unicode.
        * makemake.in (*/makefile*): Pass --with-unicode to makemake.

1999-02-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * macros2.lsp (with-output-to-printer): Declare arg as IGNORE.

1999-02-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Introduce space-efficient immutable strings.
        * lispbibl.d (Rectype_Imm_SmallSstring): New enumeration item.
          (Rectype_mdarray, Rectype_Sbvector, Rectype_bvector, Rectype_Svector,
           Rectype_vector, Rectype_Sstring, Rectype_string,
           Rectype_Imm_Sstring):
          Rearrange and define rectype_unused1 so as to get fast type checks.
          (HAVE_SMALL_SSTRING): New macro.
          (small_sstring_, SmallSstring): New types.
          (Array_type_sstring): Treat Rectype_Imm_SmallSstring like
          Rectype_Imm_Sstring.
          (TheSmallSstring): New macro.
          (vectorp, simplep, array_simplep, general_vector_p, simple_string_p,
           stringp, byte_vector_p, arrayp): Update and optimize.
          (if_recordp): Treat Rectype_Imm_SmallSstring like
          Rectype_Imm_Sstring.
          (case_Rectype_Sstring_above, case_Rectype_string_above,
           case_Rectype_array_above): Likewise.
          (allocate_imm_small_string): New declaration.
          (with_string_0, with_sstring_0, with_string, with_sstring): Update
          for unpack_string_ro change. Use unpack_sstring_alloca.
          (chartcopy, scintcopy): New declarations.
          (SstringDispatch): New macro.
          (unpack_sstring_alloca): New macro.
          (unpack_string_ro): One more argument, change return type.
          (coerce_normal_ss, coerce_imm_normal_ss): New declarations.
          (test_string_limits_rw): Remove declaration.
          (stringarg): New structure type.
          (test_string_limits_ro): Change calling convention.
          (string_eqcomp, string_eqcomp_ci): New declarations.
        * genclisph.d (main): Update vectorp, general_vector_p,
          simple_string_p, stringp, byte_vector_p, arrayp.
        * spvw_objsize.d (size_small_sstring): New macro.
          (objsize): Treat Rectype_Imm_SmallSstring.
        * spvw_update.d (update_varobject): Treat Rectype_Imm_SmallSstring
          like Rectype_Imm_Sstring.
        * spvw_genera1.d (walk_area, build_old_generation_cache): Likewise.
        * spvw_garcol.d (gc_mark): Likewise.
        * spvw_typealloc.d (allocate_imm_small_string): New function.
        * charstrg.d (chartcopy, scintcopy): New functions.
          (unpack_string_ro): Define always. One more argument, change return
          type.
          (string_gleich, string_equal): Mostly rewritten.
          (copy_string, coerce_imm_ss): Mostly rewritten.
          (coerce_normal_ss, coerce_imm_normal_ss): New functions.
          (coerce_char): Update, treat small strings too.
          (CHAR, SCHAR): Likewise.
          (test_string_limits_ro): Change calling convention.
          (test_string_limits_rw): Change calling convention, make local.
          (test_2_stringsym_limits): Change calling convention.
          (string_eqcomp, string_comp): Change calling convention. Rewritten,
          treat small strings too.
          (STRING=, STRING/=, STRING<, STRING>, STRING<=, STRING>=): Rewritten.
          (string_eqcomp_ci, string_comp_ci): Change calling convention.
          Rewritten, treat small strings too.
          (STRING-EQUAL, STRING-NOT-EQUAL, STRING-LESSP, STRING-GREATERP,
           STRING-NOT-GREATERP, STRING-NOT-LESSP): Rewritten.
          (eqcomp_fun): Change function type.
          (string_search): Change calling convention. Treat len1==0 outside of
          the loop.
          (SYS::SEARCH-STRING=, SYS::SEARCH-STRING-EQUAL): Mostly rewritten.
          (NSTRING-UPCASE, NSTRING-DOWNCASE, NSTRING-CAPITALIZE): Rewritten.
          (subsstring, SUBSTRING, string_concat): Treat small strings too.
        * array.d (datenvektor_aref): Treat small strings too.
          (datenvektor_store): Treat Rectype_Imm_SmallSstring like
          Rectype_Imm_Sstring.
          (VECTOR-PUSH-EXTEND): Treat small strings too.
          (ssstring_push_extend, ssstring_extend): Use chartcopy.
        * predtype.d (equal): Use string_eqcomp.
          (elt_compare_T_Char): Treat small strings too.
          (elt_compare_Char_Char): Use string_eqcomp_ci.
        * hashtabl.d (hashcode_string): Treat small strings too.
          (hashcode3_atom): Treat Rectype_Imm_SmallSstring like
          Rectype_Imm_Sstring.
          (hashcode4_vector_Char): Treat small strings too.
        * package.d (string_hashcode): Treat small strings too.
        * encoding.d (string_to_asciz): Call unpack_sstring_alloca, but call
          unpack_string_ro only once.
          (string_to_asciz_): Update.
        * sequence.d (WRITE-CHAR-SEQUENCE): Call unpack_sstring_alloca.
        * stream.d (wr_ss_dummy, wr_ss_dummy_nogc): Treat small strings too.
          (rd_ch_str_in, rd_ch_array_str_in): Likewise.
          (MAKE-STRING-INPUT-STREAM): Update.
          (wr_ss_str_out, wr_ss_pphelp): Treat small strings too.
          (rd_ch_buff_in): Likewise.
          (wr_ss_generic): Call unpack_sstring_alloca.
          (wr_ss_unbuffered_unix, wr_ss_unbuffered_mac, wr_ss_unbuffered_dos,
           wr_ss_buffered_unix, wr_ss_buffered_mac, wr_ss_buffered_dos):
          Likewise.
          (lisp_completion): Call unpack_sstring_alloca. Use
          O(terminal_encoding).
          (wr_ss_terminal3): Call unpack_sstring_alloca. Treat small strings
          too.
          (FILE-STRING-LENGTH): Treat small strings too.
        * io.d (PARSE-INTEGER): Treat small strings too.
          (write_sstring_case, pr_symbol_part, pr_sstring_ab): Likewise.
          (pr_orecord): Treat Rectype_Imm_SmallSstring like
          Rectype_Imm_Sstring.
          (write_string_up): Update.
        * lisparit.d (read_integer): Call unpack_sstring_alloca.
          (decimal_string): Use chartcopy.
        * foreign.d (convert_to_foreign): Call unpack_sstring_alloca.
        * affi.d (affi_call_argsa, SYSTEM::MEM-WRITE-VECTOR): Likewise.
        * pathname.d (subst_coerce_normal_ss): New function.
          (test_optional_host): Use coerce_normal_ss instead of coerce_ss.
          (PARSE-NAMESTRING): When thing is a symbol, do the case conversion
          on the :start/:end delimited part, not on the entire symbol-name.
          Accept small strings too, convert them to normal strings.
          (MAKE-PATHNAME): Call coerce_normal_ss on the device, name and type.
          Call subst_coerce_normal_ss on the directory.

1999-02-27  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * package.d (correct_packname): Convert the package name to an
          immutable string.
          (init_packages): Use immutables strings as package names and
          nicknames.
        * symbol.d (GENSYM): Make the symbol name immutable.

1999-02-27  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Bug fix for NEXTAPP model.
        * stream.d (lisp_completion): Call begin_error here.
          (lisp_completion_matches): Not here.

1999-02-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * socket.d (create_server_socket): Cast setsockopt argument.

        * modules.d (_NEXT_NULL): New macro.

1999-02-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in: Fix bug in parsing of --hyperspec argument.

        * makemake.in (XCC_DLOPENABLE_EXE_FLAG): Pass -export-dynamic to
          the linker only if the linker is GNU ld.

1999-02-22  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * clos.lsp, init.lsp: Do export GENERIC-LABELS and GENERIC-FLET here.

1999-02-22  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * compiler.lsp (compile-file): Output the SYSTEM::VERSION form in
          upper case.
        * unix/MAGIC.add: Revert last change.

1999-02-21  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Convert dotimesL with loop variables into dotimespL.
        * affi.d (bytecopy): Use dotimespL. Assume length > 0.
          (SYSTEM::MEM-READ): Use dotimespL instead of dotimesL.
        * array.d (reshape): Likewise.
        * charstrg.d (string_gleich, string_equal, SUBSTRING): Likewise.
        * control.d (PSETQ): Likewise.
        * error.d (convert_simple_condition): Likewise.
        * eval.d (sym_value, setq, sym_function, nest_env): Likewise.
        * encoding.d (make_string_, ascii_to_string): Likewise.
        * graph.d (gr_text): Likewise.
        * io.d (test_potential_number_syntax, test_number_syntax, test_dots,
           upcase_token, uninterned_reader, bit_vector_reader,
           write_sstring_case, klammer_zu): Likewise.
        * record.d (CLOS::ALLOCATE-STD-INSTANCE, CLOS::%ALLOCATE-INSTANCE,
           CLOS::%MAKE-INSTANCE): Likewise.
        * spvw.d (main): Likewise.
        * foreign.d (convert_from_foreign_array_fill, convert_to_foreign):
          Likewise.
        * hashtabl.d (clrhash): Likewise.
        * intread.d (DIGITS_to_I): Likewise.
        * pathname.d (common_case, test_optional_host, all_digits,
           parse_logical_pathnamestring, legal_name_or_type, legal_name,
           legal_type, MAKE-PATHNAME, has_wildcards, has_word_wildcards,
           SYSTEM::DYNLOAD-MODULES): Likewise.
        * predtype.d (heap_statistics_result): Likewise.
        * stream.d (wr_ss_terminal3): Likewise.
        * spvw_debug.d (mem_hex_out): Likewise.
        * spvw_typealloc.d (allocate_vector): Likewise.

        Convert dotimesC with loop variables into dotimespC.
        * affi.d (affi_call_argsa): Use dotimespC instead of dotimesC.
        * arilev1i.d (shiftleft_loop_down, shiftleftcopy_loop_down,
           shiftright_loop_up): Likewise.
        * array.d (array_dimensions, array_dims_sizes, ARRAY-IN-BOUNDS-P,
           bit_up): Likewise.
        * eval.d (get_closure, funcall_iclosure, match_subr_key,
           match_cclosure_key, apply_closure, funcall_subr, funcall_closure):
          Likewise.
        * charstrg.d (string_concat): Likewise.
        * misc.d (MACHINE-INSTANCE): Likewise.
        * control.d (LET, LET*, SYMBOL-MACROLET): Likewise.
        * foreign.d (FFI::%ELEMENT): Likewise.
        * hashtabl.d (hashcode4_atom): Likewise.
        * lisparit.d (=, /=, <, >, <=, >=): Likewise.
        * record.d (CLOS::%SHARED-INITIALIZE, CLOS::%REINITIALIZE-INSTANCE,
           do_initialize_instance, CLOS::%MAKE-INSTANCE): Likewise.
        * predtype.d (equalp): Likewise.
        * sequence.d (CONCATENATE): Likewise.
        * spvw.d (for_all_subrs, for_all_constobjs, init_subr_tab_1,
           init_object_tab_1, init_other_modules_1, init_module_2, main,
           dynload_modules): Likewise.
        * spvw_typealloc.d (allocate_xrecord_): Likewise.
        * stream.d (test_input_stream_args, test_output_stream_args,
           clear_linepart, save_line_old): Likewise.

1999-02-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Introduce immutable strings.
        * lispbibl.d (Rectype_Imm_Sstring): New enumeration item.
          (Array_type_sstring): Include it.
          (strmflags_immut_bit_B): New macro.
          (vectorp, simplep, array_simplep, general_vector_p, simple_string_p,
           stringp, byte_vector_p, arrayp, if_recordp): Update.
          (case_Rectype_Sstring_above, case_Rectype_string_above): Include
          Rectype_Imm_Sstring.
          (allocate_imm_string): New declaration.
          (with_string_0, with_string): Use unpack_string_ro.
          (unpack_string_ro, unpack_string_rw): New declarations, replace
          unpack_string.
          (coerce_imm_ss): New declaration.
          (test_string_limits_ro, test_string_limits_rw): New declarations,
          replace test_string_limits.
          (fehler_sstring_immutable): New declaration.
          (check_sstring_mutable): New macro.
        * spvw_update.d (update_varobject): Treat Rectype_Imm_Sstring like
          Rectype_Sstring.
        * spvw_garcol.d (gc_mark): Likewise.
        * spvw_genera1.d (walk_area, build_old_generation_cache): Likewise.
        * spvw_typealloc.d (allocate_imm_string): New function.
        * error.d (fehler_sstring_immutable): New function.
        * array.d (datenvektor_store): In case of Rectype_Imm_Sstring, signal
          an error.
        * charstrg.d (unpack_string_rw): Renamed from unpack_string. Add calls
          to check_sstring_mutable.
          (unpack_string_ro): New function.
          (string_gleich, string_equal, copy_string): Use unpack_string_ro
          instead of unpack_string.
          (coerce_imm_ss): New function.
          (coerce_char): Use unpack_string_ro instead of unpack_string.
          (test_index_arg): Return the index, not the new charptr.
          (CHAR, SCHAR): Update.
          (SYS::STORE-CHAR): Update. Call unpack_string_rw instead of
          unpack_string.
          (SYS::STORE-SCHAR): Update. Add check_sstring_mutable call.
          (test_string_limits_ro): Renamed from test_string_limits.
          Use unpack_string_ro instead of unpack_string.
          (test_string_limits_rw): New function.
          (test_2_stringsym_limits): Use unpack_string_ro instead of
          unpack_string.
          (NSTRING-UPCASE, NSTRING-DOWNCASE, NSTRING-CAPITALIZE): Use
          test_string_limits_rw instead of test_string_limits.
          (SUBSTRING, string_concat): Use unpack_string_ro instead of
          unpack_string.
        * stream.d (strmflags_immut_bit_B, strmflags_immut_B): New macros.
          (make_twoway_stream, make_echo_stream): Inherit the immut_B from
          the input stream.
          (rd_ch_str_in, rd_ch_array_str_in): Use unpack_string_ro instead of
          unpack_string.
          (MAKE-STRING-INPUT-STREAM): Use test_string_limits_ro instead of
          test_string_limits.
          (rd_ch_buff_in): Likewise. Use unpack_string_ro instead of
          unpack_string.
          (make_unbuffered_stream, make_buffered_stream): Put strmflags_immut_B
          into the strmflags if asked for.
          (FILE-STRING-LENGTH): Use unpack_string_ro instead of unpack_string.
        * io.d (string_reader): Create an immutable string, if the stream
          allows this.
          (uninterned_reader): Likewise.
          (PARSE-INTEGER): Use test_string_limits_ro instead of
          test_string_limits.
          (pr_orecord): Treat Rectype_Imm_Sstring like Rectype_Sstring.
          (write_string_up): Use test_string_limits_ro instead of
          test_string_limits.
        * affi.d (affi_call_argsa): Use unpack_string_ro instead of
          unpack_string.
          (SYSTEM::MEM-READ): Use unpack_string_rw instead of unpack_string.
          (SYSTEM::MEM-WRITE-VECTOR): Use unpack_string_ro instead of
          unpack_string.
        * package.d (string_hashcode): Use unpack_string_ro instead of
          unpack_string.
          (intern): Make the symbol-name strings immutable if possible.
          (shadow): Likewise.
          (MAKE-SYMBOL): Likewise.
          (test_names_args): Make the package-name and package-nicknames
          strings immutable if possible.
        * spvw.d (init_symbol_tab_2): Make the symbol-name strings immutable
          if possible.
        * pathname.d (PARSE-NAMESTRING): Use test_string_limits_ro instead of
          test_string_limits.
        * encoding.d (string_to_asciz): Use unpack_string_ro instead of
          unpack_string.
        * foreign.d (convert_to_foreign): Use unpack_string_ro instead of
          unpack_string.
        * hashtabl.d (hashcode_string): Use unpack_string_ro instead of
          unpack_string.
          (hashcode3_atom): Treat Rectype_Imm_Sstring like Rectype_Sstring.
        * sequence.d (READ-CHAR-SEQUENCE): Treat an empty string specially.
          Then call unpack_string_rw instead of unpack_string.
          (WRITE-CHAR-SEQUENCE): Treat an empty string specially.
          Then call unpack_string_ro instead of unpack_string.

1999-02-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make room in the strmflags.
        * stream.d (strmflags_i_B, strmflags_ia_B, strmflags_ib_B,
           strmflags_ic_B): Remove macros.
          (decoded_eltype): kind==eltype_ch implies size==0.
          (test_eltype_arg): When setting eltype_ch, set size = 0.
          (strm_channel_extrafields_struct): bitsize is now unconditional.
          (close_ichannel, close_ochannel): Test for bitsize > 0.
          (make_unbuffered_stream): Set ChannelStream_bitsize in all cases.
          Don't set strmflags_i...
          (position_file_i_buffered): Dispatch on bitsize, not flags.
          (logical_position_file_start, logical_position_file,
           logical_position_file_end): Likewise.
          (fill_pseudofuns_buffered): Likewise.
          (make_buffered_stream): Set ChannelStream_bitsize in all cases.
          Don't set strmflags_i...
          (buffered_flush_everything): Dispatch on bitsize, not flags.
          (closed_buffered): Test for bitsize > 0.
          (SYSTEM::SET-STREAM-ELEMENT-TYPE): Simplify accordingly.

1999-02-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make BASE-CHAR equivalent to CHARACTER.
        * lispbibl.d (small_char_int_len): Renamed from base_char_int_len.
          (small_char_int_limit): Renamed from base_char_int_limit.
          (scint): Renamed from bcint.
          (small_char_code_limit): Renamed from base_char_code_limit.
          (base_char_int_len, base_char_code_limit): New macros.
          (base_char_p): Define only when needed.
          (small_char_p): New macro.
        * charstrg.d (SYSTEM::BASE-CHAR-P): Define only when needed.
        * spvw.d (init_object_tab): Add :BASE-CHAR=CHARACTER to *features*.
        * io.d: Update.
        * defs2.lsp (dispatch-reader): Don't use base-char-p and
          base-char-code-limit.
          (designator): Depend upon :BASE-CHAR=CHARACTER.
          (base-char-designator-p): Define only when needed.
        * type.lsp (BASE-CHAR, EXTENDED-CHAR, canonicalize-type): Depend
          upon :BASE-CHAR=CHARACTER.
        * compiler.lsp (c-typep-alist1, c-typep-alist2): Treat BASE-CHAR
          and EXTENDED-CHAR depending upon :BASE-CHAR=CHARACTER.

1999-02-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Improve the speed of NLS charset conversions.
        * utils/unicode/nls_table.java: Emit a value for is_ascii_extension.
        * encoding.d (nls_table): New field `is_ascii_extension'.
          (nls_asciiext_mbstowcs, nls_asciiext_wcstombs): New functions.
          (init_encodings): Choose them if possible.
        * pseudofun.d (nls_asciiext_mbstowcs, nls_asciiext_wcstombs): New
          declarations.

1999-02-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (init_streamvars): Avoid gcc warning.

1999-02-19  Sam Steingold  <sds@goems.com>

	* defs3.lsp, clos.lsp, init.lsp: do not export `generic-flet',
	`generic-labels'.
	* _impnotes.html is now HTML 3.2 compliant.

1999-02-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in: Improve parsing of --hyperspec argument.

1999-02-18  Sam Steingold  <sds@goems.com>

	* affi.txt, ansicl.txt, cltl2.txt, foreign.txt, module.txt,
	vgagraph.txt: removed.

1999-02-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in: Improve parsing of --hyperspec argument.

1999-02-17  Sam Steingold  <sds@goems.com>

	* spvw.d: user ascii* instead of asciz* for constant string
	when initializing *features*.
	* _impnotes.txt, impnotes.html: removed.
	* _impnotes.html: new file.
	* makemake.in, ../configure: new option --hyperspec.

1999-02-12  Sam Steingold  <sds@goems.com>

	* socket.d (create_client_socket): port is unsigned int.
	* stream.d: declare `create_client_socket' appropriately.

1999-02-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pseudofun.d: Enclose all XPSEUDOs in #ifdef UNICODE.

1999-02-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Unicode support.
        * makemake.in (--with-unicode): New command line option.
          (XCFLAGS): Conditionally add -DUNICODE.
          (UNICODE_INCLUDES, NLS_INCLUDES): New variables.
          (CFILES): Add them.
          Symlink them.
          (depends): Add $UNICODE_INCLUDES for charstrg. Add $NLS_INCLUDES for
          encoding.
        * lispbibl.d (CHART_STRUCT): Don't define on m68k and arm CPUs.
          (char_int_len): Define as 16 for UNICODE.
          (Encoding) [UNICODE]: Add more fields.
          (encoding_length): Change value.
          (encoding_xlength): New macro.
          (Encoding_mblen, Encoding_mbstowcs, Encoding_wcslen,
           Encoding_wcstombs, cslen, cstombs): New macros.
          (allocate_encoding): Use encoding_xlength.
          (make_string): Add an encoding argument.
          (asciz_to_string, string_to_asciz): Likewise.
          (ascii_to_string): New function.
          (with_string_0, with_sstring_0, with_string, with_sstring): Add an
          encoding argument.
          (pseudofun_): Remove type.
          (Pseudofun): Change definition.
          (P): New macro, moved here from stream.d.
          (max_bytes_per_chart): New macro.
        * genclisph.d (main): Remove `asciz_to_string' declaration.
          Add `ascii_to_string' declaration.
        * modules/clx/new-clx/e2d.c (care_about_packages): Use ascii_to_string
          instead of asciz_to_string.
        * constpack.d (LISPPACK_B): Use ascii_to_string instead of
          asciz_to_string.
          (charset): New package.
        * constsym.d (CHARSET:...): New symbols.
        * constobj.d (O(internal_encoding), O(pathname_encoding),
           O(terminal_encoding), O(foreign_encoding), O(misc_encoding)): New
          variables.
        * spvw.d (make_string, asciz_to_string, string_to_asciz): Moved out
          to encoding.d.
          (fehler_notreached): Use ascii_to_string instead of asciz_to_string.
          (fehler_code_alignment): Use O(terminal_encoding).
          (init_symbol_tab_2): Export symbols in package CHARSET as well.
          Use ascii_to_string instead of asciz_to_string.
          (init_object_tab): Add :UNICODE to features_initstring. Use
          ascii_to_string instead of asciz_to_string. Use O(internal_encoding).
          (init_module_2): Use O(internal_encoding).
          (print_license, print_banner): Use O(internal_encoding).
          (main): Use O(internal_encoding) and O(pathname_encoding) and
          O(misc_encoding). Use ascii_to_string.
          (fehler_dlerror): Use O(misc_encoding) and O(internal_encoding).
        * spvw_language.d (localized_string, localized_object): Use
          S(iso8859_1).
        * spvw_memfile.d (memflags): Depends on UNICODE.
          (loadmem_update): Use the Pseudofun type instead of void*.
        * encoding.d (MAKE-ENCODING): Accept constant symbols for the :charset
          argument. Copy the trailing encoding_xlength bytes too.
          (make_string): Moved here from spvw.d. Add encoding argument.
          (asciz_to_string): Likewise.
          (ascii_to_string): New function.
          (string_to_asciz): Moved here from spvw.d. Add encoding argument.
          (hex_table): New variable.
          (fehler_unencodable): New function.
          (uni16_mblen, uni16be_mbstowcs, uni16le_mbstowcs, uni16_wcslen,
           uni16be_wcstombs, uni16le_wcstombs): New functions.
          (fehler_utf8_invalid1, fehler_utf8_invalid2, fehler_utf8_invalid3,
           utf8_mblen, utf8_mbstowcs, utf8_wcslen, utf8_wcstombs): New
          functions.
          (java_mblen, java_mbstowcs, java_wcslen, java_wcstombs): New
          functions.
          (nls_table): New struct type.
          (nopage): New constant array.
          (nls_*.c): New include files.
          (nls_first_sym, nls_last_sym, nls_num_encodings): New macros.
          (nls_tables): New constant array.
          (nls_mblen, nls_mbstowcs, nls_wcslen, nls_wcstombs): New functions.
          (init_encodings): Entirely rewritten.
        * pseudofun.d (PSEUDOFUN_C): Renamed from PSEUDOFUN_B.
          (PSEUDOFUN_B): New macro.
          (XPSEUDO_A, XPSEUDO_B, XPSEUDO_C): New macros.
          New XPSEUDO declarations for the functions and tables defined in
          encoding.d.
        * charstrg.d (nop_page): New variable.
          (up_case, down_case): Add UNICODE support.
          (uni_attribute.c): New include file.
          (unicode_attribute): New macro.
          (alphap): Add UNICODE support.
          (numericp): New macro.
          (alphanumericp): Add UNICODE support.
          (graphic_char_p): Add UNICODE support.
          (SYSTEM::BASE-CHAR-P): Fix comparison with base_char_code_limit.
          (DIGIT-CHAR-P): Add UNICODE support.
        * predtype.d (TYPE-OF): Fix comparison with base_char_code_limit.
        * package.d (init_packages): Use ascii_to_string instead of
          asciz_to_string.
        * io.d (unicode_attribute, graphic_char_p): New macros.
          (allocate_perchar_table, perchar_table_get, perchar_table_put,
           copy_perchar_table): Add UNICODE support.
          (allocate_syntax_table, syntax_table_get, syntax_table_put): Move
          macros. Add UNICODE support.
          (orig_syntax_table): Size is only base_char_code_limit. Add UNICODE
          support.
          (orig_syntax_table_get): New macro.
          (orig_readtable, copy_readtable_contents): Add UNICODE support.
          (SET-SYNTAX-FROM-CHAR): Permit syntax_table_put to call GC.
          (SET-MACRO-CHARACTER): Likewise.
          (MAKE-DISPATCH-MACRO-CHARACTER): Likewise.
          (attribute_table): Size is only base_char_code_limit. Add UNICODE
          support.
          (attribute_of): Add UNICODE support.
          (char_reader): Declare code as uintL, so it can hold value up to
          10*char_code_limit. Recognize #\uxxxx syntax.
          (PARSE-INTEGER): Use orig_syntax_table_get instead of accessing
          orig_syntax_table directly.
          (pr_orecord): For Rectype_Encoding, also print the charset symbol.
        * defs2.lsp (dispatch-reader): Modify to match changes in the
          perchar_table_get macro.
        * pathname.d (asciz_dir_to_pathname): Add an encoding argument.
          (PARSE-NAMESTRING): Use O(misc_encoding).
          (default_directory_of, directory_truename, default_directory,
           canonicalise_filename, canonicalise_dirname, assure_dir_exists):
          Use O(pathname_encoding).
          (change_default): Likewise.
          (file_exists, directory_exists): Likewise.
          (DELETE-FILE, rename_file, create_backup_file, open_file): Likewise.
          (extract, subdirs, subfiles, with_stat_info,
           directory_search_1subdir, directory_search_hashcode,
           directory_search_direntry_ok, directory_search_scandir, DIRECTORY):
          Likewise.
          (MAKE-DIR, DELETE-DIR, ENSURE-DIRECTORIES-EXIST): Likewise.
          (init_pathnames): Use O(pathname_encoding) and O(misc_encoding).
          (FILE-WRITE-DATE, FILE-AUTHOR): Use O(pathname_encoding).
          (EXECUTE): Use O(pathname_encoding) and O(misc_encoding).
          (SHELL): Use O(misc_encoding).
          (SYSTEM::DYNLOAD-MODULES): Use O(pathname_encoding).
          (SYSTEM::PROGRAM-NAME): Likewise.
        * stream.d (P): Move to lispbibl.d.
          (test_external_format): Accept constant symbols.
          (strm_unbuffered_extrafields_struct): Extend the meaning of status.
          Rename field `lastbyte' to `bytebuf'.
          (UnbufferedStream_lastbyte): Remove macro.
          (UnbufferedStream_bytebuf): New macro.
          (UnbufferedStreamLow_push_byte, UnbufferedStreamLow_pushfront_byte,
           UnbufferedStreamLow_pushfront_bytes, UnbufferedStreamLow_pop_byte):
          New macros.
          (low_read_unbuffered_handle): Use UnbufferedStreamLow_pop_byte and
          UnbufferedStreamLow_push_byte.
          (low_listen_unbuffered_handle): Use UnbufferedStreamLow_push_byte.
          (low_read_array_unbuffered_handle): Use UnbufferedStreamLow_pop_byte
          in a loop.
          (rd_ch_unbuffered): Add UNICODE support.
          (listen_unbuffered): Likewise. Use UnbufferedStreamLow_pushfront_byte.
          (rd_ch_array_unbuffered): Add UNICODE support.
          (wr_ch_unbuffered_unix, wr_ch_array_unbuffered_unix): Likewise.
          (wr_ch_unbuffered_mac, wr_ch_array_unbuffered_mac): Likewise.
          (wr_ch_unbuffered_dos, wr_ch_array_unbuffered_dos): Likewise.
          (rd_ch_buffered, rd_ch_array_buffered): Likewise.
          (wr_ch_buffered_unix, wr_ch_array_buffered_unix): Likewise.
          (wr_ch_buffered_mac, wr_ch_array_buffered_mac): Likewise.
          (wr_ch_buffered_dos, wr_ch_array_buffered_dos): Likewise.
          (finish_output_buffered): Use O(pathname_encoding).
          (make_key_event): Use ascii_to_string instead of asciz_to_string.
          (lisp_completion): Use O(terminal_encoding).
          (rd_ch_terminal3): Use O(terminal_encoding).
          (wr_ch_terminal3): Call wr_ch_unbuffered_unix, instead of direct
          `write' call.
          (wr_ss_terminal3): Call wr_ch_array_unbuffered_unix, instead of
          direct `full_write' call.
          (make_terminal_stream_): Initialize the encoding. Use
          O(pathname_encoding).
          (init_term): Use O(misc_encoding).
          (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM,
           MAKE-PIPE-IO-STREAM): Use O(misc_encoding).
          (low_read_unbuffered_socket): Use UnbufferedStreamLow_pop_byte.
          (low_listen_unbuffered_socket): Use UnbufferedStreamLow_push_byte.
          (low_read_array_unbuffered_socket): Use UnbufferedStreamLow_pop_byte
          in a loop.
          (SYS::MAKE-SOCKET-STREAM, SOCKET-SERVER, SOCKET-CONNECT): Use
          O(misc_encoding).
          (SOCKET-SERVICE-PORT): Use S(ascii).
          (publish_host_data): Use O(misc_encoding).
          (make_terminal_io): Use ascii_to_string instead of asciz_to_string.
          (init_streamvars): Likewise.
          (SYSTEM::SET-STREAM-ELEMENT-TYPE): Use UnbufferedStreamLow_push_byte.
          (pseudofun_tab): Include pseudofun.c once more.
        * error.d (write_errorstring): Add UNICODE support. Use
          O(internal_encoding).
        * misc.d (LISP-IMPLEMENTATION-VERSION): Use ascii_to_string instead of
          asciz_to_string.
          (MACHINE-TYPE, MACHINE-VERSION, MACHINE-INSTANCE): Use
          O(misc_encoding). Use ascii_to_string instead of asciz_to_string.
          (SYSTEM::GETENV, SYSTEM::REGISTRY): Use O(misc_encoding).
        * rexx.d (REXX-PUT): Use with_sstring and O(misc_encoding).
          (rexx_getmsg): Use O(misc_encoding).
          (REXX-REPLY): Use with_string and O(misc_encoding). No need to call
          coerce_ss.
        * graph.d (SYS::GRAPH-INIT): Use ascii_to_string instead of
          asciz_to_string.
          (SYS::GRAPH-TEXT): Use with_string and an encoding corresponding to
          the font.
        * foreign.d (register_foreign_variable, register_foreign_function):
          Use O(internal_encoding).
          (convert_from_foreign_array_fill, convert_from_foreign): Add UNICODE
          support. Use O(foreign_encoding).
          (convert_to_foreign): Add UNICODE support. Use O(foreign_encoding).
          (open_library): Use O(misc_encoding).
        * affi.d (affi_callit): Use O(foreign_encoding).
          (affi_call_argsa): Add UNICODE support. Use O(foreign_encoding).
          (SYS::MEM-READ, SYSTEM::MEM-WRITE-VECTOR): Likewise.

1999-02-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (init_streamvars): Initialize the keyboard stream after
          the standard streams, not before them.

1999-02-15  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * autoconf/aclocal.m4 (CL_IREG_FLOAT_RETURN): New macro.

1999-02-14  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * utils/unicode/: New directory.
        * uni_upcase.c, uni_downcase.c, uni_attribute.c, nls_*.c: New files,
          automatically generated by utils/unicode/ tools.

1999-02-14  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * compiler.lsp (compile-toplevel-form): Put a newline on
          *fasoutput-stream* after the form, not before it.
          (compile-file): Put a newline after the first form, and none before
          closing *fasoutput-stream*.

1999-02-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (with_sstring): Assign a value to lenvar.

1999-02-13  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Introduce encodings.
        * lispbibl.d (Rectype_Encoding): New enum value.
          (Encoding): New structure type.
          (encoding_length): New macro.
          (strm_file_name, strm_file_truename, strm_buffered_channel,
           strm_pipe_pid, strm_x11socket_connect, strm_socket_port,
           strm_socket_host): Offset by 1.
          (TheEncoding, encodingp, allocate_encoding): New macros.
          (init_encodings): New declaration.
          (make_file_stream): Change calling convention.
        * constobj.d (O(default_file_encoding)): New variable.
        * encoding.d: New file.
        * makemake.in (CPARTS): Add encoding.d.
        * gettext/po/Makefile.devel (DSOURCES): Add encoding.d.
        * spvw.d (initmem): Call init_encodings.
        * io.d (pr_orecord): Treat Rectype_Encoding.
        * predtype.d (TYPE-OF, CLOS:CLASS-OF): Treat Rectype_Encoding.
          (enum_hs_encoding): New enum value.
          (heap_statistics_mapper): Treat Rectype_Encoding.
        * stream.d (test_external_format_arg): New function.
          (strm_encoding): New macro.
          (strm_bitbuffer, strm_buffer, strm_isatty, strm_ichannel,
           strm_ochannel, strm_field1, strm_field2, strm_channel_extrafields,
           strm_channel_len): Offset by 1.
          (strm_unbuffered_extrafields_struct): New field ignore_next_LF.
          (UnbufferedStream_ignore_next_LF): New macro.
          (rd_ch_unbuffered): Perform CR/LF->NL and CR->NL conversion.
          (listen_unbuffered): Likewise.
          (clear_input_unbuffered): Update.
          (rd_ch_array_unbuffered): Perform CR/LF->NL and CR->NL conversion.
          (wr_ch_unbuffered_unix): Renamed from wr_ch_unbuffered.
          (wr_ch_array_unbuffered_unix): Renamed from wr_ch_array_unbuffered.
          (wr_ss_unbuffered_unix): Renamed from wr_ss_unbuffered.
          (wr_ch_unbuffered_mac, wr_ch_array_unbuffered_mac,
           wr_ss_unbuffered_mac): New functions.
          (wr_ch_unbuffered_dos, wr_ch_array_unbuffered_dos,
           wr_ss_unbuffered_dos): New functions.
          (wr_ch_unbuffered_x, wr_ch_array_unbuffered_x, wr_ss_unbuffered_x):
          Remove macros.
          (fill_pseudofuns_unbuffered): Choose among the
          wr_*_unbuffered_{unix,mac,dos} functions.
          (make_unbuffered_stream): Change calling convention. Set the
          stream's encoding.
          (rd_ch_buffered): Perform CR/LF->NL and CR->NL conversion.
          (rd_ch_array_buffered): Likewise.
          (wr_ch_buffered_unix): Renamed from wr_ch_buffered.
          (wr_ch_array_buffered_unix): Renamed from wr_ch_array_buffered.
          (wr_ss_buffered_unix): Renamed from wr_ss_buffered.
          (wr_ch_buffered_mac, wr_ch_array_buffered_mac, wr_ss_buffered_mac):
          New functions.
          (wr_ch_buffered_dos, wr_ch_array_buffered_dos, wr_ss_buffered_dos):
          New functions.
          (fill_pseudofuns_buffered): Choose among the
          wr_*_buffered_{unix,mac,dos} functions.
          (make_buffered_stream): Change calling convention. Set the stream's
          encoding.
          (make_file_stream): Change calling convention. Call
          test_external_format_arg.
          (strm_terminal_index): Offset by 1.
          (rd_ch_terminal1): Remove CR/LF->NL conversion, already done by
          rd_ch_unbuffered.
          (wr_ch_terminal1, wr_ss_terminal1): Update.
          (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM,
           MAKE-PIPE-IO-STREAM): Call test_external_format_arg.
          (make_socket_stream): Change calling convention.
          (SOCKET-ACCEPT, SOCKET-CONNECT): Call test_external_format_arg.
          (make_terminal_io, init_streamvars): Update.
          (SYSTEM::SET-STREAM-ELEMENT-TYPE): Reset the ignore_next_LF flag.
          (STREAM-EXTERNAL-FORMAT): Rewritten.
          (SYSTEM::SET-STREAM-EXTERNAL-FORMAT): New function.
          (FILE-STRING-LENGTH): Update.
        * pseudofun.d: Update.
        * pathname.d (open_file): Change calling convention.
          (OPEN): Don't check the :external-format argument here.
        * places.lsp (stream-external-format): New defsetf.
        * macros2.lsp (with-output-to-printer, make-printer-stream): Accept
          a :external-format argument.

1999-02-11  Christian Jullien  <eligis@wanadoo.fr>

        * time.d (get_run_time) [TIME_WIN32]: Add missing semicolon.

1999-02-10  Sam Steingold  <sds@goems.com>

	* spvw.d: added :ANSI-CL and :IEEE-FLOATING-POINT to *features*
        when invoked with "-a".

	* io.d: when lisp:*ansi* is non-nil, do not print pathnames with
	#S() when *print-readably* is non-nil.

1999-02-05  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * unixaux.d (full_read): Call handle_fault_range before the system
          call, in order to avoid EFAULT.
          (full_write): Likewise.
        * win32aux.d (lowlevel_full_read, full_write, lowlevel_sock_read,
           lowlevel_sock_write): Likewise.

1999-02-05  Sam Steingold  <sds@goems.com>

	* spvw.d (usage): added the URL and replaced "oder" with "or".

1999-02-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * intgcd.d (I_I_xgcd_I_I_I): Use C comments, not C++ comments.

1999-02-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (publish_host_data): If hd.truename is NULL, use
          hd.hostname, not hd.truename.

1999-02-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d: Big renaming orgy.
          (strm_ichannel): was strm_ihandle.
          (strm_ochannel): was strm_ohandle.
          (strm_channel_extrafields): was strm_handle_extrafields.
          (strm_channel_len): was strm_handle_len.
          (strm_channel_extrafields_struct): was
          strm_handle_extrafields_struct.
          (strm_unbuffered_extrafields_struct): was
          strm_u_file_extrafields_struct.
          (ChannelStream_eltype): was HandleStream_eltype.
          (ChannelStream_isatty): was HandleStream_isatty.
          (ChannelStream_ichannel): was HandleStream_ihandle.
          (ChannelStream_ochannel): was HandleStream_ohandle.
          (ChannelStream_buffered): was HandleStream_buffered.
          (ChannelStreamLow_close): was HandleStreamLow_close.
          (ChannelStream_lineno): was HandleStream_lineno.
          (ChannelStream_bitsize): was HandleStream_bitsize.
          (UnbufferedStreamLow_read): was FileStreamLow_read.
          (UnbufferedStreamLow_listen): was FileStreamLow_listen.
          (UnbufferedStreamLow_clear_input): was FileStreamLow_clear_input.
          (UnbufferedStreamLow_read_array): was FileStreamLow_read_array.
          (UnbufferedStream_status): was FileStream_status.
          (UnbufferedStream_lastbyte): was FileStream_lastbyte.
          (UnbufferedStream_rawp): was FileStream_rawp.
          (UnbufferedStreamLow_write): was FileStreamLow_write.
          (UnbufferedStreamLow_write_array): was FileStreamLow_write_array.
          (UnbufferedStreamLow_finish_output): was FileStreamLow_finish_output.
          (UnbufferedStreamLow_force_output): was FileStreamLow_force_output.
          (UnbufferedStreamLow_clear_output): was FileStreamLow_clear_output.
          (wr_by_ixu_sub): was wr_by_ixu_file.
          (wr_by_ixs_sub): was wr_by_ixs_file.
          (low_read_unbuffered_handle): was file_low_read.
          (low_listen_unbuffered_handle): was file_low_listen.
          (low_clear_input_unbuffered_handle): was file_low_clear_input.
          (low_read_array_unbuffered_handle): was file_low_read_array.
          (rd_by_aux_iax_unbuffered): was rd_by_aux_iax_handle.
          (rd_by_iau_unbuffered): was rd_by_iau_handle.
          (rd_by_ias_unbuffered): was rd_by_ias_handle.
          (rd_by_iau8_unbuffered): was rd_by_iau8_handle.
          (rd_by_array_iau8_unbuffered): was rd_by_array_iau8_handle.
          (rd_ch_unbuffered): was rd_ch_handle.
          (listen_unbuffered): was listen_handle.
          (clear_input_unbuffered): was clear_input_handle.
          (rd_ch_array_unbuffered): was rd_ch_array_handle.
          (UnbufferedHandleStream_input_init): was HandleStream_input_init.
          (UnbufferedHandleStream_input_init_amiga): was
          HandleStream_input_init_amiga.
          (close_ichannel): was close_ihandle.
          (low_write_unbuffered_handle): was file_low_write.
          (low_write_array_unbuffered_handle): was file_low_write_array.
          (low_finish_output_unbuffered_handle): was file_low_finish_output.
          (low_force_output_unbuffered_handle): was file_low_force_output.
          (low_clear_output_unbuffered_handle): was file_low_clear_output.
          (wr_by_aux_ia_unbuffered): was wr_by_aux_ia_handle.
          (wr_by_iau_unbuffered): was wr_by_iau_handle.
          (wr_by_ias_unbuffered): was wr_by_ias_handle.
          (wr_by_iau8_unbuffered): was wr_by_iau8_handle.
          (wr_by_array_iau8_unbuffered): was wr_by_array_iau8_handle.
          (wr_ch_unbuffered): was wr_ch_handle.
          (wr_ch_array_unbuffered): was wr_ch_array_handle.
          (wr_ss_unbuffered): was wr_ss_handle.
          (wr_ch_unbuffered_x): was wr_ch_handle_x.
          (wr_ch_array_unbuffered_x): was wr_ch_array_handle_x.
          (wr_ss_unbuffered_x): was wr_ss_handle_x.
          (finish_output_unbuffered): was finish_output_handle.
          (force_output_unbuffered): was force_output_handle.
          (clear_output_unbuffered): was clear_output_handle.
          (UnbufferedHandleStream_output_init): was HandleStream_output_init.
          (close_ochannel): was close_ohandle.
          (strm_buffered_channel): was strm_file_handle.
          (strm_buffered_bufflen): was strm_file_bufflen.
          (strm_buffered_buffer): was strm_file_buffer.
          (strm_buffered_extrafields_struct): was strm_file_extrafields_struct.
          (strm_i_buffered_extrafields_struct): was
          strm_i_file_extrafields_struct.
          (BufferedStream_channel): was FileStream_handle.
          (BufferedStream_buffer): was FileStream_buffer.
          (BufferedStreamLow_fill): was FileStreamLow_fill.
          (BufferedStreamLow_flush): was FileStreamLow_flush.
          (BufferedStream_buffstart): was FileStream_buffstart.
          (BufferedStream_eofindex): was FileStream_eofindex.
          (BufferedStream_index): was FileStream_index.
          (BufferedStream_modified): was FileStream_modified.
          (BufferedStream_regular): was FileStream_regular.
          (BufferedStream_blockpositioning): was FileStream_blockpositioning.
          (BufferedStream_position): was FileStream_position.
          (BufferedStream_bitindex): was FileStream_bitindex.
          (BufferedStream_eofposition): was FileStream_eofposition.
          (handle_lseek): was file_lseek.
          (low_fill_buffered_handle): was b_file_fill.
          (low_flush_buffered_handle): was b_file_finish_flush.
          (BufferedHandleStream_init): was HandleStream_init.
          (buffered_full_flush): was b_file_full_flush.
          (buffered_half_flush): was b_file_half_flush.
          (buffered_flush): was b_file_flush.
          (buffered_nextbyte): was b_file_nextbyte.
          (buffered_eofbyte): was b_file_eofbyte.
          (buffered_writebyte): was b_file_writebyte.
          (position_file_buffered): was position_b_file.
          (read_byte_array_buffered): was read_byte_array_b_file.
          (write_byte_array_buffered): was write_byte_array_b_file.
          (rd_ch_buffered): was rd_ch_ch_file.
          (listen_buffered): was listen_ch_file.
          (rd_ch_array_buffered): was rd_ch_array_ch_file.
          (write_byte_buffered): was write_b_file.
          (wr_ch_buffered): was wr_ch_ch_file.
          (wr_ch_array_buffered): was wr_ch_array_ch_file.
          (wr_ss_buffered): was wr_ss_ch_file.
          (position_file_i_buffered): was position_i_file.
          (rd_by_aux_iax_buffered): was rd_by_aux_iax_file.
          (rd_by_aux_ibx_buffered): was rd_by_aux_ibx_file.
          (rd_by_aux_icx_buffered): was rd_by_aux_icx_file.
          (rd_by_iau_buffered): was rd_by_iau_file.
          (rd_by_ias_buffered): was rd_by_ias_file.
          (rd_by_ibu_buffered): was rd_by_ibu_file.
          (rd_by_ibs_buffered): was rd_by_ibs_file.
          (rd_by_icu_buffered): was rd_by_icu_file.
          (rd_by_ics_buffered): was rd_by_ics_file.
          (rd_by_iau8_buffered): was rd_by_iau8_file.
          (rd_by_array_iau8_buffered): was read_byte_array_iau8_file.
          (wr_by_aux_ia_buffered): was wr_by_aux_ia_file.
          (wr_by_aux_ib_buffered): was wr_by_aux_ib_file.
          (wr_by_aux_ic_buffered): was wr_by_aux_ic_file.
          (wr_by_iau_buffered): was wr_by_iau_file.
          (wr_by_ias_buffered): was wr_by_ias_file.
          (wr_by_ibu_buffered): was wr_by_ibu_file.
          (wr_by_ibs_buffered): was wr_by_ibs_file.
          (wr_by_icu_buffered): was wr_by_icu_file.
          (wr_by_ics_buffered): was wr_by_ics_file.
          (wr_by_iau8_buffered): was wr_by_iau8_file.
          (wr_by_array_iau8_buffered): was write_byte_array_iau8_file.
          (logical_position_file_start): was position_file_start.
          (logical_position_file): was position_file.
          (logical_position_file_end): was position_file_end.
          (buffered_flush_everything): was file_flush.
          (finish_output_buffered): was finish_output_file.
          (force_output_buffered): was force_output_file.
          (closed_buffered): was closed_file.
          (close_buffered): was close_file.
          (UnbufferedPipeStream_input_init): was PipeStream_input_init.
          (low_finish_output_unbuffered_pipe): was pipe_low_finish_output.
          (low_force_output_unbuffered_pipe): was pipe_low_force_output.
          (low_clear_output_unbuffered_pipe): was pipe_low_clear_output.
          (UnbufferedPipeStream_output_init): was PipeStream_output_init.
          (low_read_unbuffered_socket): was socket_low_read.
          (low_listen_unbuffered_socket): was socket_low_listen.
          (low_clear_input_unbuffered_socket): was socket_low_clear_input.
          (low_read_array_unbuffered_socket): was socket_low_read_array.
          (UnbufferedSocketStream_input_init): was SocketStream_input_init.
          (low_write_unbuffered_socket): was socket_low_write.
          (low_write_array_unbuffered_socket): was socket_low_write_array.
          (low_finish_output_unbuffered_socket): was socket_low_finish_output.
          (low_force_output_unbuffered_socket): was socket_low_force_output.
          (low_clear_output_unbuffered_socket): was socket_low_clear_output.
          (UnbufferedSocketStream_output_init): was SocketStream_output_init.
          (listen_socket): Remove function.
          (low_fill_buffered_socket): was b_socket_fill.
          (low_flush_buffered_socket): was b_socket_finish_flush.
          (BufferedSocketStream_init): was SocketStream_init.
        * lispbibl.d (strm_buffered_channel): was strm_file_handle.
        * pseudofun.d: Update.
        * pathname.d: Update.
        * spvw_memfile.d: Update.

1999-02-02  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (oint_type_{shift,len,mask}, oint_data_{shift,len,mask}):
          New definitions for Sparc-Linux.
          (garcol_bit_o): Move definition.
          (imm_type_shift): New macro.
          (fixnum_type, sfloat_type, char_type, read_label_type, system_type,
           sign_bit_t, immediate_number_p, charp, read_label_p, systemp,
           if_realp, if_rationalp, integerp, fixnump, posfixnump, floatp,
           short_float_p): Use it.
          (FB5, FB4, FB3, FB2, FB1): Depend on garcol_bit_o.

1999-02-02  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * hashtabl.d (sxhash_atom): Use `bitm' instead of `bit', in case
          oint_type_len==32.

1999-02-02  Sam Steingold  <sds@goems.com>

	* clisp.spec: update 'release' with each build.

1999-02-02  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (LPARTS): Add back config.lsp.

1999-02-02  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Implement unbuffered file-streams, and buffered pipes and socket
        streams.
        * lispbibl.d (strmtype_twoway_socket): New enum value.
          (strm_twoway_socket_input): New macro.
          (make_file_stream): Change calling convention.
        * error.d (OS_filestream_error): Use the truename only for file
          streams, as opposed to pipe and socket streams.
        * stream.d (test_buffered_arg): New function.
          (strm_handle_extrafields_struct): New field low_close.
          (HandleStreamLow_close): New macro.
          (low_close_handle): New function.
          (close_ihandle, close_ohandle): Call HandleStreamLow_close(stream).
          (strm_file_extrafields_struct): New fields low_fill, low_flush,
          regular, blockpositioning.
          (FileStreamLow_fill, FileStreamLow_flush, FileStream_regular,
           FileStream_blockpositioning): New macros.
          (b_file_fill): New function.
          (HandleStream_init): New macro.
          (b_file_full_flush): Use FileStream_blockpositioning and
          FileStreamLow_flush.
          (b_file_half_flush): Likewise.
          (b_file_nextbyte): Use FileStream_blockpositioning and
          FileStreamLow_fill.
          (position_b_file): Use FileStream_blockpositioning.
          (position_file_end): Likewise. If no repositioning is needed, call
          lseek only once.
          (make_buffered_stream): New function.
          (make_file_stream): Change calling convention. Rewritten to call
          make_buffered_stream. Deal with buffered, handle_regular,
          handle_fresh. Support :APPEND for unbuffered streams as well.
          (finish_output_file): Call fsync or close/open on regular files only.
          If no repositioning is needed, don't call position_b_file.
          (close_file): Call HandleStreamLow_close(stream).
          (strm_pipe_in_other, strm_pipe_out_other): Remove macros.
          (strm_pipe_other): New macro.
          (low_close_pipe): New function.
          (close_pipe_in, close_pipe_out): Remove functions.
          (MAKE-PIPE-INPUT-STREAM): Call test_buffered_arg. Call either
          make_unbuffered_stream or make_buffered_stream. Set the
          HandleStreamLow_close function.
          (MAKE-PIPE-OUTPUT-STREAM): Likewise.
          (MAKE-PIPE-IO-STREAM): Likewise.
          (low_close_socket): New function.
          (close_socket): Remove function.
          (SYSTEM::MAKE-SOCKET-STREAM): Set the HandleStreamLow_close
          function.
          (b_socket_fill, b_socket_finish_flush): New functions.
          (SocketStream_init): New macro.
          (strm_twoway_socket_input, strm_twoway_socket_output): New macros.
          (low_close_socket_nop): New function.
          (make_socket_stream): Change signature. Call either
          make_unbuffered_stream, or make_buffered_stream and allocate a
          two-way-socket stream. Set the HandleStreamLow_close function.
          (SOCKET-SERVER): Deal with both strmtype_socket and
          strmtype_twoway_scoket. Check that the stream argument is open.
          (SOCKET-ACCEPT, SOCKET-CONNECT): Call test_buffered_arg.
          (test_socket_stream): Optionally check that the stream argument is
          open.
          (SOCKET-STREAM-PORT, SOCKET-STREAM-HOST): Update.
          (publish_host_data, SOCKET-STREAM-HANDLE): Update.
          (make_terminal_io): Remove the file positioning code, now done by
          make_file_stream.
          (init_streamvars): Set the HandleStreamLow_close function.
          (STREAM-ELEMENT-TYPE, SYSTEM::SET-STREAM-ELEMENT-TYPE,
           interactive_stream_p): Treat strmtype_twoway_socket.
          (stream_close): Treat pipes and sockets like file streams. Treat
          strmtype_twoway_socket.
          (stream_listen, clear_input): Treat strmtype_twoway_socket.
          (finish_output, force_output, clear_output): Likewise.
          (get_line_position): Likewise.
          (stream_isbuffered): Treat pipes and sockets like file streams.
          Treat strmtype_twoway_socket.
        * io.d (pr_stream): Print a "buffered"/"unbuffered" for pipes and
          sockets as well. Treat strmtype_twoway_socket.
        * pathname.d (open_file): Change calling convention.
          (OPEN): Update.

1999-02-01  Sam Steingold  <sds@goems.com>

	* defs2.lsp (with-standard-io-syntax): set `*print-right-margin*'.

1999-01-30  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Split user1.lsp and user2.lsp into pieces.
        * init.lsp: Change loading order. First room.lsp and saveinitmem.lsp,
          then the language stuff up to conditio.lsp, then the user interface
          and all kinds of extensions.
          (cerror): Moved here from user1.lsp.
        * defs1.lsp (fbound-string): Moved here from user2.lsp.
          (*error-handler*): Moved here from user1.lsp.
        * room.lsp: New file.
          (room-format, room, %space1, %space2, %space, space-format,
           space-tabulate): Moved here from user2.lsp.
        * savemem.lsp: New file.
          (%saveinitmem, saveinitmem): Moved here from user2.lsp.
        * compile.lsp (*toplevel-environment*, *toplevel-denv*, eval-env):
          Moved here from user1.lsp.
        * conditio.lsp (break): Integrate with non-CLCS code from user1.lsp.
          (*break-on-warnings*, batchmode-break-driver): Moved here from
          user1.lsp.
        * keyboard.lsp: New file.
          (*keyboard-input*, with-keyboard, exec-with-keyboard): Moved here
          from user1.lsp.
        * runprog.lsp: New file.
          (execute, run-shell-command, run-program): Moved here from
          user2.lsp.
        * query.lsp: New file.
          (y-or-n-p, y-or-n, yes-or-no-p, yes-or-no): Moved here from
          user1.lsp.
        * reploop.lsp: New file.
          (*prompt*, main-loop, break-loop, step et al.): Moved here from
          user1.lsp.
        * dribble.lsp: New file.
          (dribble): Moved here from user2.lsp.
        * complete.lsp: New file.
          (completion): Moved here from user2.lsp.
        * describe.lsp: New file.
          (apropos-list, apropos, describe): Moved here from user2.lsp.
        * edit.lsp: New file.
          (*editor*, editor-name, editor-tempfile, edit-file, ed, uncompile):
          Moved here from user2.lsp.
        * user1.lsp: Remove file.
        * user2.lsp: Remove file.
        * makemake.in (LPARTS): Update.
        * gettext/po/Makefile.devel (LSPSOURCES): Likewise.

1999-01-30  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * Makefile.devel (win32msvc/makefile.msvc4, win32msvc/makefile.msvc5,
          acorn/makefile.cc, acorn/makefile.gcc): Fix rule.

1999-01-29  Sam Steingold  <sds@goems.com>

	* spvw.d (print_banner): do not cut the copyright on narrow
	screens.

1999-01-28  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Mutable STREAM-ELEMENT-TYPE.
        * stream.d (fill_pseudofuns_unbuffered): New function.
          (make_unbuffered_stream): Call it. Always initialize lineno.
          (fill_pseudofuns_buffered): New function.
          (make_file_stream): Call it. Always initialize lineno.
          (SYSTEM::SET-STREAM-ELEMENT-TYPE): New function.
        * places.lsp (stream-element-type): New defsetf.

1999-01-27  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Treat pipe and socket streams like unbuffered file streams.
        * stream.d (check_unbuffered_eltype): New function.
          (strm_pipe_in_handle): Replace with strm_ihandle.
          (rd_ch_pipe_in, rd_ch_array_pipe_in, rd_by_pipe_in,
           rd_by_array_pipe_in): Remove macros.
          (PipeStream_input_init): New macro.
          (close_pipe_in): Update.
          (listen_pipe_in): Remove macro.
          (MAKE-PIPE-INPUT-STREAM): Check the :ELEMENT-TYPE argument. Call
          make_unbuffered_stream.
          (strm_pipe_out_handle): Replace with strm_ohandle.
          (wr_ch_pipe_out, wr_ch_array_pipe_out, wr_ss_pipe_out,
           wr_by_pipe_out, wr_by_array_pipe_out): Remove macros.
          (pipe_low_finish_output, pipe_low_force_output,
           pipe_low_clear_output): New functions.
          (PipeStream_output_init): New macro.
          (close_pipe_out): Update.
          (MAKE-PIPE-OUTPUT-STREAM): Check the :ELEMENT-TYPE argument. Call
          make_unbuffered_stream.
          (MAKE-PIPE-IO-STREAM): Likewise.
          (socket_low_finish_output, socket_low_force_output,
           socket_low_clear_output): Define always.
          (SocketStream_output_init): Use them in all cases.
          (SYS::MAKE-SOCKET-STREAM): Call make_unbuffered_stream.
          (make_socket_stream): Change signature. Call make_unbuffered_stream.
          (SOCKET-ACCEPT, SOCKET-CONNECT): Check the :ELEMENT-TYPE argument.
          (STREAM-ELEMENT-TYPE): Treat pipe and socket streams like file
          streams.
          (stream_listen, clear_input, finish_output, force_output,
           clear_output): Likewise.
        * pseudofun.d: Update.
        * io.d (pr_stream): For pipe and socket stream, print the element-type
          as well.

1999-01-27  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (make_buffered_stream): Renamed from make_unbuffered_stream.
          Change the calling convention. Don't call isatty. Don't store the
          strm_field1/strm_field2 values. Don't call HandleStream_input_init,
          HandleStream_output_init here. Don't add the stream to O(open_files).
          (make_file_stream): Update. Call isatty only for :INPUT or :IO
          streams. Store the strm_field1/strm_field2 values here. Call
          HandleStream_input_init, HandleStream_output_init here. Add the
          stream to O(open_files).
          (init_streamvars): Update. Store the strm_field1/strm_field2 values
          here. Call HandleStream_output_init here.

1999-01-27  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Simplify the element-type handling.
        * stream.d (eltype_kind, decoded_eltype): New types.
          (test_eltype_arg): Moved. Changed signature.
          (canon_eltype): New function.
          (strmtype_ch_file, strmtype_iu_file, strmtype_is_file): Remove
          macros.
          (make_unbuffered_file_stream): Changed signature.
          (make_file_stream): Use a decoded_eltype. Call canon_eltype.
          (init_streamvars): Update.

1999-01-27  Sam Steingold  <sds@goems.com>

        * spvw.d (print_banner): updated copyright statements.
	(print_license): new function.
	(main): call print_banner and print_license.

1999-01-27  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw.d (print_banner): Make the menorah more kosher.

1999-01-27  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw.d (usage): Tweak message.

1999-01-26  Sam Steingold  <sds@goems.com>

	* Makefile.devel: do not use `utils/move-if-change'.
        * utils/move-if-change: Remove file.

1999-01-26  Sam Steingold  <sds@goems.com>

	MT-safe get_real_time:
	* time.d (get_real_time): take pointer argument; no internal
	statics.
	* lisparit.d: fix calls to `get_real_time'.
	* lispbibl.d: fix declaration of `get_real_time'.

1999-01-25  Sam Steingold  <sds@goems.com>

	* spvw.d (main): expanded --help, added --license, removed trailing
	whitespace.
	(print_banner): New function.
	(argv_license): New variable.
	(copyright_notice): Remove.

1999-01-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (strm_file_name, strm_file_truename, strm_file_handle,
           strm_pipe_pid, strm_x11socket_connect, strm_socket_port,
           strm_socket_host): Offset by 1.
        * stream.d (strm_bitbuffer): New macro, replaces strm_file_bitbuffer.
          (strm_isatty, strm_ihandle, strm_ohandle, strm_field1, strm_field2):
          Offset by 1.
          (strm_field3): Remove macro.
          (strm_handle_extrafields_struct): New field bitsize.
          (HandleStream_bitsize): New macro, replaces FileStream_bitsize.
          (rd_by_iu_I, rd_by_is_I): Update.
          (wr_by_aux_ix): Renamed from wr_by_ix.
          (wr_by_ixu_file, wr_by_ixs_file): Update.
          (rd_by_aux_iax_handle, rd_by_iau_handle, rd_by_ias_handle): New
          functions.
          (rd_by_iau8_handle): Renamed from rd_by_handle.
          (rd_by_array_iau8_handle): Renamed from rd_by_array_handle.
          (close_ihandle): Free the bitbuffer.
          (wr_by_aux_ia_handle, wr_by_iau_handle, wr_by_ias_handle): New
          functions.
          (wr_by_iau8_handle): Renamed from wr_by_handle.
          (wr_by_array_iau8_handle): Renamed from wr_by_array_handle.
          (close_ohandle): Free the bitbuffer.
          (make_unbuffered_file_stream): Add arguments type, eltype_size.
          Create a stream with proper element type, not (OR CHARACTER INTEGER).
          (strm_i_file_extrafields_struct): Remove field bitsize.
          (strm_file_bitbuffer, FileStream_bitsize): Remove macros.
          (position_i_file): Update.
          (rd_by_aux_iax_file): Renamed from rd_by_iax_file. Update.
          (rd_by_aux_ibx_file): Renamed from rd_by_ibx_file. Update.
          (rd_by_aux_icx_file): Renamed from rd_by_icx_file. Update.
          (rd_by_iau_file, rd_by_ias_file, rd_by_ibu_file, rd_by_ibs_file,
           rd_by_icu_file, rd_by_ics_file): Update.
          (rd_by_iau8_file): New function, for symmetry with the unbuffered
          case.
          (wr_by_aux_ia_file): Renamed from wr_by_ia. Update.
          (wr_by_aux_ib_file): Renamed from wr_by_ib. Update.
          (wr_by_aux_ic_file): Renamed from wr_by_ic. Update.
          (wr_by_iau_file, wr_by_ias_file, wr_by_ibu_file, wr_by_ibs_file,
           wr_by_icu_file, wr_by_ics_file): Update.
          (wr_by_iau8_file): New function, for symmetry with the unbuffered
          case.
          (position_file, position_file_end): Update.
          (make_file_stream): For the unbuffered case, accept any bitsize
          which is a multiple of 8. Use {rd,wr}_by_iau8_file when possible.
          (strm_terminal_index, strm_terminal_outbuff): Change.
          (terminalcase): Update.
          (rd_by_pipe_in, rd_by_array_pipe_in): Update.
          (wr_by_pipe_out, wr_by_array_pipe_out): Update.
          (SYS::MAKE-SOCKET-STREAM, SYS::LISTEN-BYTE, test_n_bytes_args,
           make_socket_stream, init_streamvars): Update.
        * pseudofun.d: Update accordingly.

        * stream.d (rd_by_*, wr_by_*): Move some functions.
        * pseudofun.d: Update accordingly.

1999-01-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Optimize read-byte and write-byte for integer streams of type ia.
        * stream.d (read_byte_array_b_file): Don't update the position.
          (write_byte_array_b_file): Likewise.
          (wr_ch_array_ch_file): Increment the position here.
          (rd_by_iu_I, rd_by_is_I): Assume the bitbuffer contents is in little
          endian order.
          (rd_by_iax_file): Fill bitbuffer in little endian order. Use
          read_byte_array_b_file for speed.
          (rd_by_icx_file): Fill bitbuffer in little endian order.
          (wr_by_ia): Fill bitbuffer in little endian order. Use
          write_byte_array_b_file for speed.
          (wr_by_ic): Fill bitbuffer in little endian order.
          (wr_by_ixu_file, wr_by_ixs_file): Assume the bitbuffer contents is
          in little endian order.
          (read_byte_array_iau8_file, write_byte_array_iau8_file): Increment
          the position here.

1999-01-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pathname.d (OPEN): Add keyword argument :BUFFERED.
          (SYS::OLD-OPEN): Temporary hack, in order to preserve binary
          compatibility.
        * stream.d (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM,
           MAKE-PIPE-IO-STREAM): Add keyword arguments :ELEMENT-TYPE,
          :EXTERNAL-FORMAT, :BUFFERED.
          (SOCKET-ACCEPT, SOCKET-CONNECT): Likewise.
        * eval.d (FUNTAB): Replace OPEN with SYS::OLD-OPEN.
        * compiler.lsp (funtab): Likewise.
          (subr-info): Update.

1999-01-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (make_socket_stream): Fix a potential GC crash: host was
          not GC-safe.

1999-01-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Prepare for making socket streams either binary or character, not both.
        * stream.d (SYS::LISTEN-BYTE): New function.
        * modules/clx/mit-clx/depdefs.lsp (:have-listen-byte): Define
          conditionally.
        * modules/clx/mit-clx/dependent.lsp (buffer-read-default): Use
          sys::listen-byte if available.

1999-01-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Handle-streams and socket-streams now use a byte-oriented low-level
        layer.
        * stream.d (clear_tty_input) [AMIGAOS]: Define.
          (strm_u_file_extrafields_struct): Add low-level function pointers.
          (FileStreamLow_read, FileStreamLow_listen,
           FileStreamLow_clear_input, FileStreamLow_read_array,
           FileStreamLow_write, FileStreamLow_write_array,
           FileStreamLow_finish_output, FileStreamLow_force_output,
           FileStreamLow_clear_output): New macros.
          (fehler_interrupt): New function.
          (file_low_read, file_low_listen, file_low_clear_input,
           file_low_read_array): New functions.
          (rd_by_handle, rd_by_array_handle, rd_ch_handle, listen_handle,
           clear_input_handle, rd_ch_array_handle): Rewritten from scratch.
          Much nicer now that the ugly machine-dependent stuff is in the
          low-level layer.
          (HandleStream_input_init, HandleStream_input_init_data): New macros.
          (file_low_write, file_low_write_array, file_low_finish_output,
           file_low_force_output, file_low_clear_output): New functions.
          (wr_by_handle, wr_by_array_handle, wr_ch_handle, wr_ch_array_handle,
           finish_output_handle, force_output_handle, clear_output_handle):
          Rewritten from scratch. Much nicer too.
          (HandleStream_output_init): New macro.
          (make_unbuffered_file_stream, make_keyboard_stream,
           make_terminal_stream_, MAKE-PIPE-INPUT-STREAM,
           MAKE-PIPE-OUTPUT-STREAM, MAKE-PIPE-IO-STREAM): Use the
          HandleStream_*_init macros.
          (socket_low_read, socket_low_listen, socket_low_clear_input,
           socket_low_read_array) [WIN32_NATIVE]: New functions.
          (SocketStream_input_init): New macro.
          (socket_low_write, socket_low_write_array, socket_low_finish_output,
           socket_low_force_output, socket_low_clear_output) [WIN32_NATIVE]:
          New functions.
          (SocketStream_output_init): New macro.
          (rd_ch_socket, rd_ch_array_socket, wr_ch_socket, wr_ch_array_socket,
           wr_ss_socket, rd_by_socket, rd_by_array_socket, wr_by_socket,
           wr_by_array_socket): Remove functions.
          (listen_socket): Define as a macro.
          (rd_ch_x11socket, listen_x11socket, rd_ch_array_x11socket,
           wr_ch_x11socket, wr_ch_array_x11socket, wr_ss_x11socket,
           rd_by_x11socket, rd_by_array_x11socket, wr_by_x11socket,
           wr_by_array_x11socket, close_x11socket): Remove macros.
          (SYS::MAKE-SOCKET-STREAM): Update. Use the HandleStream_*_init
          macros.
          (test_n_bytes_args): Update.
          (SYS::READ-N-BYTES): Simplify by calling read_byte_array. Upon EOF,
          issue an error message instead of endless loop.
          (SYS::WRITE-N-BYTES): Simplify by calling write_byte_array.
          (make_socket_stream): Update. Use the HandleStream_*_init macros.
          (stream_close, stream_listen): Update.
        * pseudofun.d (*_x11socket, *_socket): Remove.

1999-01-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Introduce symbolic codes for the `listen' return value.
        * lispbibl.d (ls_avail, ls_eof, ls_wait): New macros.
          (ls_avail_p, ls_eof_p, ls_wait_p): New macros.
        * stream.d (listen_concat, listen_str_in, listen_buff_in,
           listen_handle, listen_ch_file, listen_keyboard, listen_terminal,
           listen_terminal2, listen_terminal3, listen_socket, stream_listen):
          Use the new ls_* macros.
        * io.d (LISTEN, READ-CHAR-NO-HANG): Likewise.
        * debug.d (read_form): Likewise.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Merge handle streams and file streams. Add line number information to
        unbuffered file streams as well.
        * lispbibl.d (strmtype_handle): Remove enum value.
          (if_strm_file_p): Remove macro.
          (stream_isbuffered): New declaration.
        * stream.d (strm_handle_extrafields_struct): New field lineno.
          (HandleStream_lineno): New macro.
          (rd_ch_handle, listen_handle, rd_ch_array_handle): When reading a
          newline, increment lineno.
          (make_unbuffered_file_stream): Change the stream type from
          strmtype_handle to strmtype_file. Initialize lineno.
          (strm_ch_file_extrafields_struct): Remove structure.
          (FileStream_lineno): Remove macro.
          (rd_ch_ch_file, rd_ch_array_ch_file, make_file_stream): Update.
          (SYS::FILE-STREAM-P): Update.
          (SYS::TERMINAL-RAW) [AMIGAOS]: Update.
          (STREAM-ELEMENT-TYPE, interactive_stream_p, stream_close,
           stream_listen, clear_input, finish_output, force_output,
           clear_output): Update.
          (FILE-POSITION): For unbuffered streams, return NIL, no error.
          (FILE-LENGTH): Likewise.
          (stream_isbuffered): New function.
          (stream_line_number): Update.
        * io.d (pr_stream): Update.
        * pathname.d (as_file_stream, openp): Update.
        * predtype.d (TYPE-OF, CLOS:CLASS-OF, heap_statistics_mapper): Update.

        Start merging handle-streams and file-streams.
        * lispbibl.d (strm_eltype, strm_file_handle): Change.
        * stream.d (strm_eltype, strm_isatty, strm_ihandle, strm_ohandle):
          Change.
          (strm_buffer, strm_field1, strm_field2, strm_field3): New macros.
          (strm_handle_extrafields): New macro.
          (strm_handle_len): Change.
          (strm_handle_extrafields_struct, strm_u_file_extrafields_struct):
          New structure types.
          (HandleStream_eltype, HandleStream_isatty, HandleStream_ihandle,
           HandleStream_ohandle, HandleStream_buffered, FileStream_status,
           FileStream_lastbyte, FileStream_rawp): New macros.
          (close_handle): Remove macro.
          (make_unbuffered_file_stream): Renamed from make_handle_stream.
          Allocate room for an unbuffered handle stream. Initialize the
          buffered, status, rawp fields.
          (strm_file_name, strm_file_truename, strm_file_handle,
           strm_file_buffer, strm_file_bitbuffer): Change.
          (strm_file_extrafields, strm_file_length): Remove macros.
          (strm_file_extrafields_struct): Inherit from
          strm_handle_extrafields_struct.
          (FileStream_buffstart, FileStream_eofindex, FileStream_index,
           FileStream_modified, FileStream_position, FileStream_lineno,
           FileStream_bitsize, FileStream_bitindex, FileStream_eofposition):
          Update.
          (make_file_stream): Allocate room for a buffered handle stream.
          Initialize the buffered field.
          (strm_keyboard_buffer, strm_keyboard_keytab, strm_keyboard_len):
          Change.
          (strm_keyboard_xlen): New macro.
          (make_keyboard_stream): Allocate room for an unbuffered handle
          stream. Initialize the buffered, status, rawp fields.
          (strm_terminal_inbuff, strm_terminal_index, strm_terminal_outbuff):
          Change.
          (strm_terminal1_len, strm_terminal2_len, strm_terminal3_len): Remove
          macros.
          (strm_terminal_len): New macro.
          (terminalcase): Rewritten.
          (make_terminal_stream_): Allocate room for an unbuffered handle
          stream. Initialize the buffered, status, rawp fields.
          (SYS::TERMINAL-RAW) [AMIGAOS]: Update.
          (strm_pipe_pid): Change.
          (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM,
           MAKE-PIPE-IO-STREAM): Allocate room for an unbuffered handle
          stream. Initialize the buffered, status, rawp fields.
          (strm_x11socket_connect): Change.
          (SYS::MAKE-SOCKET-STREAM): Allocate room for an unbuffered handle
          stream. Initialize the buffered, status, rawp fields.
          (strm_socket_port, strm_socket_host): Change.
          (make_socket_stream): Allocate room for an unbuffered handle stream.
          Initialize the buffered, status, rawp fields.
          (init_streamvars): Update.
          (stream_close): Call either close_ihandle or close_ohandle.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (regular_handle_p) [UNIX]: Treat block devices like regular
          files.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d: Move the file-streams next to the handle-streams.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (make_file_stream): Change declaration and calling
          convention.
        * stream.d (make_handle_stream): Change calling convention.
          (test_eltype_arg): New function.
          (make_file_stream): Change calling convention. Check the
          :element-type argument here.
          (make_terminal_io, init_streamvars): Update.
        * pathname.d (open_file): Change calling convention.
          (OPEN): Update. Don't check the :element-type argument here.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Support for unbuffered file streams on all platforms.
        * lispbibl.d (HANDLES): Remove macro, assume it to be defined to 1.
          (case_strmtype_file): Remove macro.
          (if_strm_file_p): Update.
        * spvw_memfile.d (memflags): Assume HANDLES to be 1.
        * stream.d: Likewise.
        * pseudofun.d: Likewise.
        * io.d (pr_stream): Likewise.
        * predtype.d: Update.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (strmtype_ch_file, strmtype_iu_file, strmtype_is_file):
          Remove enum values.
          (strmtype_file): New enum value.
          (strm_eltype): New stream field.
          (strm_file_name, strm_file_truename, strm_pipe_pid,
           strm_x11socket_connect, strm_socket_port, strm_socket_host):
          Offset by 1.
          (strm_ch_file_lineno): Remove obsolete macro.
          (if_strm_bfile_p): Remove macro.
          (case_strmtype_file): Update.
          (strmtype_ch_file, strmtype_iu_file, strmtype_is_file): Define for
          the sake of make_file_stream.
        * stream.d (strm_eltype): New stream field.
          (strm_handle_rawp, strm_handle_len): Offset by 1.
          (make_handle_stream): Expect the element-type on the stack.
          (strm_file_name, strm_file_truename, strm_file_extrafields,
           strm_file_length): Offset by 1.
          (make_file_stream): Construct and fill in the element-type.
          (strm_pipe_pid): Offset by 1.
          (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM,
           MAKE-PIPE-IO-STREAM): Update.
          (strm_x11socket_connect): Offset by 1.
          (SYS::MAKE-SOCKET-STREAM): Update.
          (strm_socket_port, strm_socket_host): Offset by 1.
          (make_socket_stream): Update.
          (init_streamvars): Pass element type to make_handle_stream.
          (STREAM-ELEMENT-TYPE): For strmtype_file and strmtype_handle,
          fetch the strm_eltype field.
          (interactive_stream_p, stream_close, closed_all_files,
           stream_listen, finish_output, force_output, clear_output,
           check_open_file_stream, stream_line_number): Update.
        * io.d (pr_stream): Change printing of file and handle stream to
          include buffered/unbuffered and the element-type.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (Stream): New fields strm_rd_by_array, strm_wr_by_array,
          strm_rd_ch_array, strm_wr_ch_array.
        * stream.d (rd_by_array_Pseudofun, wr_by_array_Pseudofun,
           rd_ch_array_Pseudofun, wr_ch_array_Pseudofun): New types.
          (rd_by_array, wr_by_array, rd_ch_array, wr_ch_array): New macros.
          (rd_by_error): Renamed from rd_by_dummy.
          (rd_by_array_error, rd_by_array_dummy): New functions.
          (wr_by_error): Renamed from wr_by_dummy.
          (wr_by_array_error, wr_by_array_dummy): New functions.
          (rd_ch_error): Renamed from rd_ch_dummy.
          (rd_ch_array_error, rd_ch_array_dummy): New functions.
          (wr_ch_error): Renamed from wr_ch_dummy.
          (wr_ch_array_error, wr_ch_array_dummy): New functions.
          (read_byte_array, write_byte_array, read_char_array,
           write_char_array): Rewritten to call the stream's corresponding
          pseudofunction.
          (close_dummys): Update.
          (rd_by_array_synonym, wr_by_array_synonym, rd_ch_array_synonym,
           wr_ch_array_synonym): New functions.
          (make_synonym_stream): Update.
          (wr_by_array_broad0, wr_by_array_broad1, wr_ch_array_broad0,
           wr_ch_array_broad1): New functions.
          (make_broadcast_stream): Update.
          (rd_by_array_concat, rd_ch_array_concat): New functions.
          (make_concatenated_stream): Update.
          (wr_by_array_twoway, wr_ch_array_twoway): New functions.
          (rd_by_array_twoway, rd_ch_array_twoway): New functions.
          (make_twoway_stream, make_echo_stream): Update.
          (rd_ch_array_str_in): New function.
          (MAKE-STRING-INPUT-STREAM): Update.
          (make_string_output_stream, SYSTEM::MAKE-STRING-PUSH-STREAM): Update.
          (make_pphelp_stream): Update.
          (MAKE-BUFFERED-INPUT-STREAM, MAKE-BUFFERED-OUTPUT-STREAM): Update.
          (MAKE-GENERIC-STREAM): Update.
          (rd_ch_array_handle, rd_by_array_handle, wr_by_array_handle): New
          functions.
          (wr_ch_array_handle): Renamed from write_char_array_handle.
          (wr_ss_handle): Update.
          (wr_ch_array_handle_x): New macro.
          (make_handle_stream): Update.
          (rd_ch_keyboard) [NEXTAPP]: Update.
          (make_keyboard_stream, make_terminal_stream_, make_window): Update.
          (read_byte_array_b_file): New function.
          (rd_ch_array_ch_file): New function.
          (wr_ch_array_ch_file): Renamed from write_char_array_ch_file.
          (wr_ss_ch_file): Update.
          (read_byte_array_iau8_file): New macro.
          (write_byte_array_iau8_file): Update.
          (make_file_stream): Update.
          (make_printer_stream): Update.
          (rd_ch_array_pipe_in, rd_by_array_pipe_in): New macros.
          (MAKE-PIPE-INPUT-STREAM): Update.
          (wr_ch_array_pipe_out, wr_by_array_pipe_out): New macros.
          (MAKE-PIPE-OUTPUT-STREAM): Update.
          (MAKE-PIPE-IO-STREAM): Update.
          (rd_ch_array_socket): New function.
          (wr_ch_array_socket): Renamed from write_char_array_socket.
          (wr_ss_socket): Update.
          (rd_by_array_socket, wr_by_array_socket): New functions.
          (rd_ch_array_x11socket, wr_ch_array_x11socket, rd_by_array_x11socket,
           wr_by_array_x11socket): New macros.
          (SYS::MAKE-SOCKET-STREAM, make_socket_stream): Update.
        * pseudofun.d: Update accordingly.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Implement weak-pointers.
        * lispbibl.d (Rectype_Weakpointer): New enum value.
          (Weakpointer): New type.
          (weakpointer_length, weakpointer_xlength): New macros.
          (TheWeakpointer, weakpointerp, allocate_weakpointer): New macros.
        * constobj.d (O(all_weakpointers)): New variable.
          (O(all_finalizers), O(pending_finalizers)): Initial value 0, not NIL.
        * spvw.d (init_object_tab_1): Initialize O(all_weakpointers),
          O(all_finalizers), O(pending_finalizers) to 0.
        * spvw_update.d (update_weakpointers, update_weakpointers_mod): New
          macros.
        * spvw_garcol.d (gar_col_normal): Walk O(all_weakpointers).
          O(all_finalizers) and O(pending_finalizers) end with 0, not NIL.
          Call update_weakpointers_mod.
          (gar_col_done): O(pending_finalizers) ends with 0, not NIL.
          (gar_col_compact, move_conses): Call update_weakpointers_mod.
        * spvw_memfile.d (savemem, loadmem): Call update_weakpointers.
        * record.d (MAKE-WEAK-POINTER, WEAK-POINTER-P, WEAK-POINTER-VALUE):
          New functions.
        * io.d (pr_orecord): Treat Rectype_Weakpointer.
        * predtype.d (TYPE-OF, CLOS:CLASS-OF): Treat Rectype_Weakpointer.
          (enum_hs_weakpointer): New enum value.
          (heap_statistics_mapper): Treat Rectype_Weakpointer.
        * compiler.lsp (subr-info): Add make-weak-pointer, weak-pointer-p,
          weak-pointer-value.
        * user2.lsp (describe): Treat WEAK-POINTER.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (gcinvariant_object_p) [TYPECODES]: New macro.
        * record.d (FINALIZE): No need to allocate a finalizer for an
          eternally alive object.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_garcol.d (alive) [NO_TYPECODES]: Treat immediate values
          correctly, instead of crashing.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (listen_handle) [WIN32]: When a keyboard event is pending,
          read a character in order to test whether to return :INPUT-AVAILABLE
          of :EOF.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (strm_concat_list2): Remove macro.
          (strm_concat_totallist): New macro.
          (rd_by_concat, rd_ch_concat, pk_ch_concat, listen_concat): Simplify.
          (make_concatenated_stream, CONCATENATED-STREAM-STREAMS): Simplify.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * debug.d (read_form): After EOF, call clear_input on istream, not on
          the concatenated-stream. This fixes a strange REP loop behaviour on
          Win32.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw.d (main): If no memfile is specified, option "-norc" is
          implied.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * comment5.d (main): Remove a gcc warning.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (strmtype_*): Change the order of stream types.
        * io.d (pr_stream): Likewise.
        * stream.d: Move the OS dependent stream stuff after the portable
          stuff.
          (STREAM-ELEMENT-TYPE): Change the order of stream types.
          (interactive_stream_p, stream_close, stream_listen, clear_input,
           finish_output, force_output, clear_output): Likewise.

1999-01-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Change the string element type from `uintB' to `chart' (an abstract
        equivalent of `cint').
        * lispbibl.d (OBJECT_STRUCT): Define macro.
          (chart): New type.
          (as_cint, as_chart): New macros.
          (code_char, char_code): Convert from/to chart now, instead of cint.
          (chareq, charlt, chargt): New macros.
          (ascii, ascii_char): New macros.
          (sstring_): Change element type to `chart'.
          (with_string_0, with_sstring_0, with_string, with_sstring): Update.
          (ssstring_push_extend): Change declaration.
          (up_case, down_case, alphanumericp, graphic_char_p, unpack_string,
           char_name, test_string_limits, nstring_upcase, nstring_downcase,
           nstring_capitalize): Likewise.
          (write_ascii_char): Update.
          (read_char_array, write_char_array): Change delaration.
        * genclisph.d (chart): New type.
          (as_cint, as_chart): New macros.
          (code_char, char_code): Convert from/to chart now, instead of cint.
        * spvw.d (make_string, string_to_asciz, main): Update.
        * spvw_objsize.d (size_sstring): Update.
        * charstrg.d (up_case, down_case, alphap, alphanumericp,
           graphic_char_p, unpack_string, string_gleich, string_equal,
           copy_string, coerce_char, char_name, STANDARD-CHAR-P, UPPER-CASE-P,
           LOWER-CASE-P, BOTH_CASE-P, DIGIT-CHAR-P, CHAR-CODE, CODE-CHAR,
           DIGIT-CHAR, CHAR-INT, INT-CHAR, test_index_arg, CHAR, SCHAR,
           SYSTEM::STORE-CHAR, SYSTEM::STORE-SCHAR, test_string_limits,
           test_1_stringsym_limits, test_2_stringsym_limits, string_eqcomp,
           string_comp, STRING=, STRING/=, STRING<, STRING>, STRING<=,
           STRING>=, string_eqcomp_ci, string_comp_ci, STRING-EQUAL,
           STRING-NOT-EQUAL, STRING-LESSP, STRING-GREATERP,
           STRING-NOT-GREATERP, STRING-NOT-LESSP, string_search,
           SYS::SEARCH-STRING=, SYS::SEARCH-STRING-EQUAL, MAKE-STRING,
           nstring_upcase, NSTRING-UPCASE, STRING-UPCASE, nstring_downcase,
           NSTRING-DOWNCASE, STRING-DOWNCASE, nstring_capitalize,
           NSTRING-CAPITALIZE, STRING-CAPITALIZE, subsstring, SUBSTRING,
           string_concat): Update
        * io.d (RM_anzahl, DRM_anzahl): Remove, replace with char_code_limit.
          (allocate_syntax_table, syntax_table_get, syntax_table_put): New
          macros.
          (allocate_perchar_table, perchar_table_get, perchar_table_put,
           copy_perchar_table): New macros.
          (orig_syntax_table, orig_readtable, copy_readtable_contents,
           copy_readtable, SET-SYNTAX-FROM-CHAR, SET-MACRO-CHARACTER,
           GET-MACRO-CHARACTER, MAKE-DISPATCH-MACRO-CHARACTER,
           test_disp_sub_char, SET-DISPATCH-MACRO-CHARACTER,
           GET-DISPATCH-MACRO-CHARACTER, read_char_syntax, wpeek_char_syntax,
           wpeek_char_eof, attribute_table): Update.
          (attribute_of): New macro.
          (read_token_1, token_info, test_potential_number_syntax,
           test_number_syntax, upcase_token, case_convert_token, read_macro,
           lpar_reader, line_comment_reader, comment_reader, char_reader,
           radix_2, bit_vector_reader, vector_reader, hexziffer,
           closure_reader, unix_executable_reader, READ-LINE, PARSE-INTEGER,
           write_sstring_case, klammer_zu, pr_enter_1, pr_symbol_part,
           pr_character, pr_sstring_ab, pr_list_splice, pr_list_nsplice,
           pr_sbvector_ab): Update.
        * stream.d (wr_ss_dummy, wr_ss_dummy_nogc, wr_ss_lpos, write_char,
           rd_ch_handle, listen_handle, wr_ch_handle, write_char_array_handle,
           key_event): Update.
          (key_ascii, key_special): New macros.
          (listen_keyboard, rd_ch_keyboard, add_keybinding): Update.
          (keybinding): Take only one argument.
          (make_keyboard_stream, lisp_completion, rd_ch_terminal,
           rd_ch_terminal1, rd_ch_terminal2, rd_ch_terminal3, wr_ch_terminal3,
           wr_ss_terminal3, wr_ch_window, rd_ch_ch_file, wr_ch_ch_file,
           write_char_array_ch_file, rd_ch_str_in, wr_ss_str_out,
           wr_ch_pphelp, wr_ss_pphelp, rd_ch_buff_in, wr_ch_buff_out,
           wr_ch_printer, rd_ch_socket, listen_socket, wr_ch_socket,
           write_char_array_socket, read_char_array, write_char_array,
           FILE-STRING-LENGTH): Update.
        * pathname.d (common_case, legal_logical_word_char, legal_hostchar,
           test_optional_host, equal_pathchar, legal_namechar,
           singlewild_char_p, slashp, parse_logical_word, all_digits,
           parse_logical_pathnamestring, parse_name_or_type, split_name_type,
           PARSE-NAMESTRING, legal_logical_word, legal_name_or_type,
           legal_name, legal_type, MAKE-PATHNAME, has_wildcards,
           has_word_wildcards, wildcard_match_ab, wildcard_diff_ab,
           translate_nametype_aux, use_default_dir, OSdirnamestring, SHELL):
          Update.
        * array.d (VECTOR-PUSH-EXTEND, ssstring_push_extend, ssstring_extend,
           make_datenvektor): Update.
        * hashtabl.d (hashcode_string, hashcode4_char, hashcode4_vector_Char):
          Update.
        * package.d (string_hashcode): Update.
        * predtype.d (equal, elt_compare_T_Char, elt_compare_Char_Char,
           equalp): Update.
        * sequence.d (MAKE-SEQUENCE, READ-CHAR-SEQUENCE, WRITE-CHAR-SEQUENCE):
          Update.
        * debug.d (read_form): Update.
        * error.d (write_errorstring): Update.
        * lisparit.d (read_float, print_integer, print_float, decimal_string):
          Update.
        * intprint.d (DIGITS, UDS_to_DIGITS): Update.
        * intread.d (DIGITS_to_I): Update.
        * foreign.d (convert_from_foreign_array_fill, convert_from_foreign,
           convert_to_foreign): Update.
        * affi.d (affi_call_argsa, SYSTEM::MEM-READ,
           SYSTEM::MEM-WRITE-VECTOR): Update.

1999-01-21  Sam Steingold  <sds@goems.com>

	* user2.lsp (signature-to-list, arglist): new functions.
	(describe-signature): use `signature-to-list'.

1999-01-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        For being able to use a C++ compiler in place of a C compiler.
        * acgeneral.m4 (AC_HAVE_LIBRARY, AC_CHECK_SIZEOF): Declare `main' with
          return type `int'.
        * acspecific.m4 (AC_PROG_CC_WORKS, AC_DIR_HEADER, AC_TYPE_GETGROUPS,
           AC_FUNC_CLOSEDIR_VOID, AC_FUNC_FNMATCH, AC_FUNC_GETPGRP,
           AC_FUNC_SETPGRP, AC_FUNC_VFORK, AC_FUNC_WAIT3, AC_FUNC_ALLOCA,
           AC_FUNC_UTIME_NULL, AC_FUNC_STRCOLL, AC_FUNC_SETVBUF_REVERSED,
           AC_FUNC_MEMCMP, AC_C_CHAR_UNSIGNED, AC_INT_16_BITS,
           AC_LONG_64_BITS, AC_C_BIGENDIAN, AC_SYS_RESTARTABLE_SYSCALLS):
          Likewise.
        * aclocal.m4 (CL_CC_WORKS, CL_CXX_WORKS, CL_SHELLARGS,
           CL_PCC_STRUCT_RETURN, CL_SMALL_STRUCT_RETURN, CL_LONGLONG,
           CL_LONGDOUBLE, CL_SIGNAL_REINSTALL, CL_SIGNAL_UNBLOCK,
           CL_SIGNAL_BLOCK_OTHERS, CL_SIGACTION_REINSTALL,
           CL_SIGACTION_UNBLOCK, CL_ELOOP, CL_IOCTL, CL_TIMES_CLOCK,
           CL_ADDRESS_RANGE, CL_MMAP, CL_MPROTECT, CL_CODEEXEC, CL_SHM,
           CL_SHM_RMID, CL_FILECHARSET, CL_CHAR_UNSIGNED,
           CL_WORDS_LITTLEENDIAN): Likewise.

1999-01-18  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * acgeneral.m4, acspecific.m4: Upgrade to autoconf-2.13.
        * config.guess, config.sub: Likewise.
        * aclocal.m4 (CL_ALLOCA): Test for _MSC_VER and alloca being a macro.
          Use ${ac_objext}.
        * lispbibl.d (alloca): Put _MSC_VER test before the others, conforming
          with CL_ALLOCA.

1999-01-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw.d (copyright_notice): Use a long string, because gcc stores an
          array of strings in reverse order.

1999-01-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_garcol.d (gar_col_compact): Conditionalize declaration.

1999-01-12  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * intgcd.d (I_I_xgcd_I_I_I): Now really ensure the 2nd and 3rd value
          are of minimum absolute value.

1999-01-15  Sam Steingold  <sds@goems.com>

        * clos.lsp (*gf-warn-on-replacing-method*): new variable.
        (std-add-method): use it.

1999-01-13  Sam Steingold  <sds@goems.com>

	* clos.lsp (*gf-warn-on-removing-all-methods*): new variable.
	(do-defgeneric): use it.
	(*warn-if-gf-already-called*): new variable.
	(warn-if-gf-already-called): use it.

1999-01-11  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw.d (main): Option --version implies -norc.
          A batch file argument implies -norc as well.

1999-01-10  Michael Somos  <somos@grail.cba.csuohio.edu>

        * spvw_garcol.d: Move the "#undef update_stackobj".

1999-01-10  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_FILECHARSET): Generate formula with &&-connected
          terms enclosed in parentheses, to avoid gcc warning.
        * time.d (SYS::DEFAULT-TIME-ZONE): Add parentheses, to avoid gcc
          warning.
        * intbyte.d (ldb_extract_test): Add braces, to avoid gcc warning.
        * spvw_circ.d (get_circ_mark): Likewise.

1999-01-10  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d: (write_schar): Remove.
          (write_code_char, write_ascii_char): New macros.
        * debug.d: Update all callers of write_schar.
        * error.d: Likewise.
        * eval.d: Likewise.
        * io.d: Likewise.
        * lisparit.d: Likewise.
        * stream.d (wr_ss_dummy, wr_ss_dummy_nogc): Likewise.

1999-01-09  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (string_to_asciz, TheAsciz): ASCIZ strings are now
          simple-bit-vectors, not strings.
        * genclisph.d (TheAsciz): Update.
        * spvw.d (string_to_asciz): Allocate a bit vector, not a string.
        * pathname.d (EXECUTE): Update, don't call string_concat.
        * stream.d (rd_ch_terminal3): Update.
          (finish_output_file): Use with_sstring_0 instead of TheAsciz.
          (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM,
           MAKE-PIPE-IO-STREAM): Update.

1999-01-09  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        with_sstring and with_sstring_0 must not be called in a loop which
        is executed a lot of times, otherwise SP overflow danger.
        * pathname.d (subdirs): Change argument from char* to simple-string.
          (subfiles, directory_search_1subdir, directory_search_hashcode,
           directory_search_direntry_ok, directory_search_scandir): New
          functions, moved out of the body of directory_search.
          (allsubdirs, directory_search): Update.

        Minimize the use of heap-allocated ASCIZ strings.
        * constobj.d (O(null_string)): Remove.
        * spvw.d (init_object_tab): Update.
        * pathname.d (asciz_dir_to_pathname): Make a temporary copy in the
          stack instead of destructively modifying the argument.
          (OSnamestring): Renamed from namestring_asciz. Now returns a simple-
          string without trailing zero byte.
          (assure_dir_exists): Avoid destructive modifications of a string.
          Use with_sstring_0 instead of TheAsciz.
          (default_directory) [AMIGAOS]: Release break_sem_4 in case of error.
          (assure_dir_exists) [AMIGAOS]: Likewise.
          (assure_dir_exists) [UNIX]: Allocate the readlink buffer in the
          stack.
          (canonicalise_filename) [RISCOS]: Use with_sstring_0 instead of
          TheAsciz.
          (canonicalise_dirname) [RISCOS]: Likewise.
          (prepare_create) [non-RISCOS]: Define as empty.
          (change_default): Use with_sstring_0 instead of TheAsciz.
          (file_exists): Use with_sstring_0.
          (directory_exists): Avoid destructive modifications of a string.
          Use with_sstring_0 instead of TheAsciz.
          (DELETE-FILE): Use with_sstring_0 instead of TheAsciz.
          (rename_file): Likewise.
          (create_backup_file): New function.
          (open_file): Call it. Use with_sstring_0 instead of TheAsciz.
          (directory_search): Use with_sstring_0 instead of TheAsciz.
          (shorter_directory): Now returns a simple-string without trailing
          zero byte.
          (MAKE-DIR, DELETE-DIR): Use with_sstring_0 instead of TheAsciz.
          (ENSURE-DIRECTORIES-EXIST, FILE-WRITE-DATE, FILE-AUTHOR): Likewise.
          (EXECUTE): Call string_to_asciz to compensate for assure_dir_exists
          change.
          (SHELL): Use with_sstring_0 instead of TheAsciz.

        * pathname.d (PARSE-NAMESTRING): Don't create an ASCIZ string in the
          heap. Use macro with_sstring_0 instead of TheAsciz.
          (OSdirnamestring): Renamed from OSnamestring.
          (assure_dir_exists, change_default, directory_exists)
          [PATHNAME_AMIGAOS]: Use macro with_sstring_0 instead of TheAsciz.
          (stat_for_search): New function.
          (subdirs): Change argument from ASCIZ string to char*.
          (allsubdirs, directory_search): Use with_sstring_0.

        * lispbibl.d (with_sstring_0, with_sstring): New macros.

        * pathname.d (check_stat_directory): New macro.
          (directory_search): Use it.

        * pathname.d (READDIR_*): New macros.
          (subdirs, directory_search): Use them.

1999-01-07  Sam Steingold  <sds@goems.com>

        * clisp.spec: this is the first truly working version. (fixed
	doc files and full version installation).

1999-01-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * unix.d: Don't declare memset if it's a macro.
        * spvw.d: Likewise.
        * socket.d: Likewise.

1999-01-07  Sam Steingold  <sds@goems.com>

	* bindings/linuxlibc6/linux.lsp: commented out *gammaf?_*.

1999-01-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pathname.d (create_new_file, open_input_file, open_output_file): New
          functions.
          (open_file): Use them.

1999-01-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (write_byte_array_b_file): New function, renamed from
          write_byte_array_iau8_file.
          (write_char_array_ch_file, write_byte_array_b_file): Use it.

1999-01-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Fix a compilation problem on new glibc2 systems.
        * aclocal.m4 (CL_FPU_CONTROL): Check for fpu_control_t too.
        * unixconf.h.in (HAVE_FPU_CONTROL_T): New macro.
        * spvw.d (main): Don't call __setfpucw if the control word can be
          initialized statically.
        * unixaux.d: Initialize the control word statically if possible.

1999-01-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (lisplibdir): Change to $(libdir)/clisp.
        * _distmakefile (lisplibdir): Likewise.
        * clisp.spec: Change installation directory.

1999-01-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        When getwd and getcwd both exist, prefer getcwd.
        * aclocal.m4 (CL_GETWD): Remove macro.
          (CL_GETCWD): First, check for getcwd.
        * configure.in (CL_GETWD): Remove call.
        * unixconf.h.in (HAVE_GETWD): Remove.
          (HAVE_GETCWD): New macro.
        * unix.d: Test for HAVE_GETCWD, not HAVE_GETWD.
        * spvw_language.d (init_language): Revert last patch.

1999-01-04  Sam Steingold  <sds@goems.com>

	* socket.d (socket_getlocalname): declare return value to be
	pointer to host_data, not const char.

1999-01-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_CANONICAL_HOST): Set ac_aux_dir before the cache
          check.

1999-01-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (subsstring): New declaration.
        * charstrg.d (subsstring): New function.
        * pathname.d (split_name_type, PARSE-NAMESTRING, wildcard_diff_ab,
           translate_nametype_aux): Use it.

1999-01-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (make_ssbvector, ssbvector_push_extend): New
          declarations.
        * array.d (make_ssbvector, ssbvector_push_extend): New functions.
        * io.d (get_buffers): The second buffer is a ssbvector.
          (read_token_1, test_potential_number_syntax, test_dots,
           case_convert_token, read_internal): Likewise.
          (string_reader): Use the first buffer, not the second.
          (uninterned_reader): The second buffer is a ssbvector.
          (READ-LINE): Use the first buffer, not the second.
          (pr_symbol_part): The second buffer is a ssbvector.

1999-01-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pathname.d (make_directory): Move function, make inline.
          (delete_directory, change_current_directory, delete_existing_file,
           delete_file_if_exists, delete_file_before_rename,
           rename_existing_file, rename_file_to_nonexisting): New functions.
          (change_default): Use change_current_directory.
          (access0): Make inline.
          (FILE_EXISTS_TRIVIAL): New macro.
          (DELETE-FILE): Use FILE_EXISTS_TRIVIAL and delete_file_if_exists.
          (rename_file): Use rename_file_to_nonexisting.
          (open_file): Use delete_file_before_rename, rename_existing_file,
          delete_existing_file.
          (DELETE-DIR): Use delete_directory.

1999-01-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        allocate_handle can call GC!
        * stream.d (make_keyboard_stream, make_terminal_stream_,
           finish_output_file): Call allocate_handle() at GC-safe moments.

1999-01-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * constsym.d (char-code-limit, base-char-code-limit): New symbols.
        * spvw.d (init_symbol_values): Initialize them.
        * init.lsp: export char-code-limit.
        * defs1.lsp (char-code-limit, base-char-code-limit): Remove variables.

1999-01-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (strm_file_buffer): A byte vector instead of a string.
          (b_file_finish_flush, b_file_nextbyte, b_file_eofbyte,
           write_char_array_ch_file, write_byte_array_iau8_file): Access a
          byte vector instead of a string.
          (make_file_stream): Allocate a byte vector instead of a string.

1999-01-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (decimal_string): New declaration.
        * lisparit.d (decimal_string): New function.
          (SYS::DECIMAL-STRING): Call it.
        * pathname.d (nametype_namestring_parts, version_diff): Likewise.

1999-01-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (stream_line_number): New declaration.
        * stream.d (stream_line_number): New function.
          (SYS::LINE-NUMBER): Call it.
        * io.d (read_delimited_list, pr_stream): Likewise.

1999-01-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Speed up exponentiation.
        * intmal.d (UDS_square_UDS): New macro.
          (square_2loop_down, square_2bigloop_down, I_square_I): New functions.
          (I_I_expt_I): Use I_square_I.
        * intsqrt.d (I_rootp): Use I_square_I.
        * rational.d (RA_square_RA): New function.
        * lfloat.d (LF_square_LF): New function.
        * flo_rest.d (SF_square_SF, FF_square_FF, DF_square_DF): New macros.
          (F_square_F): New functions.
        * realelem.d (R_square_R): New function.
          (R_I_expt_R): Use R_square_R.
        * realtran.d (pi_F_float_F): Use LF_square_LF.
          (GEN_F_atanx, GEN_F_sinx, R_cos_sin_R_R, F_expx_F, R_cosh_sinh_R_R):
          Use F_square_F.
        * compelem.d (N_square_N): New function.
          (SFC_durch_SFC): Use SF_square_SF.
          (FFC_durch_FFC): Use FF_square_FF.
          (DFC_durch_DFC): Use DF_square_DF.
          (LFC_durch_LFC): Use LF_square_LF.
          (N_durch_N): Use RA_square_RA.
          (SF_SF_hypot_SF): Use SF_square_SF.
          (FF_FF_hypot_FF): Use FF_square_FF.
          (DF_DF_hypot_DF): Use DF_square_DF.
          (LF_LF_hypot_LF): Use LF_square_LF.
          (R_R_hypot_R): Use RA_square_RA.
        * comptran.d (N_I_expt_N): Use N_square_N.
          (R_R_atanh_R_R): Use R_square_R.
          (R_R_asinh_R_R): Use F_square_F, N_square_N.
          (N_acos_N, N_acosh_N): Use F_square_F.
        * lisparit.d (*): Call N_square_N for squaring.

1999-01-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        DEFSTRUCT with option :INCLUDE should not define accessors which were
        already defined in a superclass DEFSTRUCT.
        * init.lsp (remove-old-definitions): Also remprop
          SYSTEM::DEFSTRUCT-READER.
        * places.lsp (define-setf-expander, defsetf): Also remprop
          SYSTEM::DEFSTRUCT-WRITER.
        * defstruc.lsp (ds-make-accessors): One more argument. Check property
          SYSTEM::DEFSTRUCT-READER.
          (ds-make-defsetfs): One more argument. Check property
          SYSTEM::DEFSTRUCT-WRITER.
          (defstruct): Update.

1999-01-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * conditio.lsp: Export STYLE-WARNING.
          (STYLE-WARNING): New condition type.
        * defs3.lsp: Export STYLE-WARNING.
        * compiler.lsp (*style-warning-count*): New variable.
          (c-style-warn): New function.
          (ignore-check): Call c-style-warn instead of c-warn.
          (c-CASE): Likewise.
          (compile-lambda): Bind *style-warning-count*.
          (compile, compile-file): Bind *style-warning-count*. Return three
          values depending on *style-warning-count*.

1999-01-02  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (I_to_uint8, I_to_sint8, I_to_uint16, I_to_sint16,
           I_to_uint32, I_to_sint32): Define always.
        * predtype.d (elt_compare_T_T, elt_compare_T_Char, elt_compare_T_Bit,
           elt_compare_T_2Bit, elt_compare_T_4Bit, elt_compare_T_8Bit,
           elt_compare_T_16Bit, elt_compare_T_32Bit, elt_compare_Char_Char,
           elt_compare_Bit_Bit, elt_compare_Bit_2Bit, elt_compare_Bit_4Bit,
           elt_compare_Bit_8Bit, elt_compare_Bit_16Bit, elt_compare_Bit_32Bit,
           elt_compare_2Bit_2Bit, elt_compare_2Bit_4Bit, elt_compare_2Bit_8Bit,
           elt_compare_2Bit_16Bit, elt_compare_2Bit_32Bit,
           elt_compare_4Bit_4Bit, elt_compare_4Bit_8Bit,
           elt_compare_4Bit_16Bit, elt_compare_4Bit_32Bit,
           elt_compare_8Bit_8Bit, elt_compare_8Bit_16Bit,
           elt_compare_8Bit_32Bit, elt_compare_16Bit_16Bit,
           elt_compare_16Bit_32Bit, elt_compare_32Bit_32Bit, elt_compare):
          New functions.
          (equalp): Rewrite the comparison code for arrays, to ignore the
          array element type.
        * realelem.d (hashcode4_uint32): New function.
          (hashcode4_uint4): New array.
        * hashtabl.d (hashcode4_string): Remove function.
          (hashcode4_char, hashcode4_vector_T, hashcode4_vector_Char,
           hashcode4_vector_Bit, hashcode4_vector_2Bit, hashcode4_vector_4Bit,
           hashcode4_vector_8Bit, hashcode4_vector_16Bit,
           hashcode4_vector_32Bit, hashcode4_vector): New functions.
          (hashcode4_atom): For arrays, return a hash code independent of the
          array element type. For characters, multi-dimensional arrays,
          pathnames, and records, return a hash code consistent with EQUALP.

1999-01-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pathname.d (host_match): Treat muster=NIL as wild.
          (device_match): Likewise.
          (nametype_match_aux): Renamed from nametype_match.
          (subdir_match): Adjust.
          (directory_match): Treat muster=(:RELATIVE) as wild.
          (nametype_match): New function.
          (version_match): Treat muster=NIL as wild.
          (host_diff): Treat muster=NIL as wild.
          (device_diff): Likewise. Produce NIL instead of "".
          (nametype_diff_aux): Renamed from nametype_diff. Produce NIL instead
          of "".
          (subdir_diff): Adjust. Produce NIL instead of "".
          (directory_diff_ab): Produces lists prefixed with :DIRECTORY.
          (directory_diff): Treat muster=(:RELATIVE) as wild.
          (nametype_diff): New function.
          (version_diff): Treat muster=NIL as wild. Always produce a result.
          Produce NIL instead of "".
          (translate_host): Treat muster=NIL as wild.
          (translate_device): Likewise. Accept NIL instead of "".
          (translate_nametype_aux): Renamed from translate_nametype. Accept
          NIL instead of "".
          (translate_subdir): Adjust.
          (translate_directory): Treat muster=(:RELATIVE) as wild. Accept
          lists prefixed with :DIRECTORY.
          (translate_nametype): New function.
          (translate_version): Treat muster=NIL as wild. Accept NIL instead of
          "". Always consume an item.
        * defs1.lsp (set-logical-pathname-translations for SYS): Simplify.

1998-11-22  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        * lispbibl.d (STRM_WR_SS): Assume to be 1.
          (PSEUDOFUNSS): Remove definition.
        * pseudofun.d: Use PSEUDOFUN instead of PSEUDOFUNSS.
        * array.d, io.d, stream.d, spvw_memfile.d: Assume STRM_WR_SS is 1.

1998-11-21  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        Avoid a Purify(TM) warning.
        * intbyte.d (ldb_extract): Only access newMSDptr[0] if really needed.

1998-12-31  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        * defs1.lsp (union, nunion, intersection, nintersection,
          set-difference, nset-difference): Rewrite to use iteration instead
          of recursion.

1998-12-31  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        * loop.lsp (expand-loop): Fix bug introduced by 1998-12-21 patch.

1998-12-22  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        * intgcd.d (I_I_xgcd_I_I_I): Ensure the 2nd and 3rd value are
          normalized to be of minimum absolute value.

1998-12-22  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_IOCTL): Allow the second argument of ioctl to be of
          type `void*'.
        * unixconf.h.in (IOCTL_ARGUMENT_T): New definition.
        * unix.d (ioctl, nonintr_ioctl): Change declarations.
          (IOCTL_ARGUMENT_T): New definition.
        * unixaux.d (nonintr_ioctl): Likewise.

1998-12-21  Sam Steingold  <sds@goems.com>

	* spvw_language.d (init_language): use `getcwd' instead of `getwd'.

1998-12-21  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        * makemake.in: Don't remove full/* for DOS,OS/2, as it doesn't exist.
          On Unix, create the full/ directory during `make installdirs'.

1998-12-21  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        * stream.d (FILE-POSITION): Accept any integer >= 0, < 2^32, not only
          fixnums.

1998-12-21  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        * stream.d (SOCKET-SERVER, publish_host_data): Remove call to
          undeclared function `bzero'. Pass 3rd argument to
          `create_server_socket'.
        * socket.d (create_server_socket, socket_getpeername,
          socket_getlocalname): Move to here.
          (create_server_socket): Port is passed as argument, not in hd->port.

1998-12-21  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        * loop.lsp (expand-loop): Generalize 1998-11-05 patch: The FOR
          FROM/TO/BY clauses can come in any order. Make sure the order of
          evaluation is preserved.

1998-12-20  Sam Steingold  <sds@goems.com>

	* _clisp.c (main): accept an '-F' argument to run the full version
	of CLISP (with modules).
	* spvw.d (usage): mention -F.
	* makemake.in: install the full CLISP version too.
	* _distmakefile: ditto.

1998-12-18  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        * makemake.in (clean7): Add "rm -f -r bindings clx queens regexp
          wildcard".

1998-12-18  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        * lispbibl.d (strm_len): Correct definition, was one too large if
          not compiling with gcc.
          (stream_xlength, Stream_xlength): New macros.
          (allocate_stream): One more argument.
        * spvw_typealloc.d (allocate_stream): Likewise.
        * stream.d (make_handle_stream, make_keyboard_stream,
          make_terminal_stream_, SYS::MAKE-WINDOW): One more argument to
          `allocate-stream'.
          (strm_file_extrafields_struct, strm_ch_file_extrafields_struct,
          strm_i_file_extrafields_struct): New structures.
          (strm_file_buffstart): Remove macro.
          (FileStream_buffstart): New macro.
          (strm_file_eofindex): Remove macro.
          (FileStream_eofindex, eofindex_all_valid, eofindex_all_invalid): New
          macros.
          (strm_file_index): Remove macro.
          (FileStream_index): New macro.
          (modified_flag, set_modified_flag, reset_modified_flag): Remove
          macros.
          (FileStream_modified): New macro.
          (strm_file_position): Remove macro.
          (FileStream_position): New macro.
          (strm_ch_file_lineno): Remove macro.
          (FileStream_lineno): New macro.
          (strm_file_bitsize): Remove macro.
          (FileStream_bitsize): New macro.
          (strm_file_bitindex): Remove macto.
          (FileStream_bitindex): New macro.
          (strm_file_eofposition): Remove macro.
          (FileStream_eofposition): New macro.
          (strm_file_buffer, strm_file_bitbuffer): Change.
          (b_file_finish_flush, b_file_half_flush, b_file_flush,
          b_file_nextbyte, b_file_eofbyte, b_file_writebyte, position_b_file,
          rd_ch_ch_file, write_b_file, write_char_array_ch_file,
          position_i_file, rd_by_iax_file, rd_by_ibx_file, rd_by_icx_file,
          wr_by_ia, wr_by_ib, wr_by_ic, wr_by_ixu_file, wr_by_ixs_file,
          write_byte_array_iau8_file, position_file_start, position_file,
          position_file_end): Use new macros.
          (make_file_stream): One more argument to `allocate_stream'. Use new
          macros.
          (file_flush, finish_output_file, closed_file): Use new macros.
          (make_synonym_stream, make_broadcast_stream,
          make_concatenated_stream, make_twoway_stream, make_echo_stream,
          MAKE-STRING-INPUT-STREAM, make_string_output_stream,
          SYSTEM::MAKE-STRING-PUSH-STREAM, make_pphelp_stream,
          MAKE-BUFFERED-INPUT-STREAM, MAKE-BUFFERED-OUTPUT-STREAM,
          make_printer_stream, MAKE-PIPE-INPUT-STREAM,
          MAKE-PIPE-OUTPUT-STREAM, MAKE-PIPE-IO-STREAM,
          SYS::MAKE-SOCKET-STREAM, make_socket_stream, MAKE-GENERIC-STREAM):
          One more argument to `allocate_stream'.
          (STREAM-ELEMENT-TYPE, read_byte_array, write_byte_array,
          read_char_array, FILE-POSITION, FILE-LENGTH, SYS::LINE-NUMBER): Use
          new macros.
        * io.d (pr_stream): Adjust printing of character streams.

1998-12-18  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        * makemake.in (echol): Partially revert the 1998-10-14 change. The
          Openstep hack doesn't work on Solaris.

1998-12-16  Sam Steingold  <sds@goems.com>

	* bindings/linuxlibc6/linux.lsp: replaced _IO_std* with _IO_std*_.

1998-12-15  Bruno Haible  <haible@linuix.math.u-bordeaux.fr>

        * lispbibl.d (host_data): Adjust type definition to be valid C++.

1998-12-15  Sam Steingold  <sds@goems.com>

	* constsym.d: added `SOCKET-STREAM-LOCAL', renamed
	`SOCKET-STREAM-PEER-HOST' to `SOCKET-STREAM-PEER'.
	* subr.d: ditto.
	* socket.d (create_server_socket, socket_getpeername,
	socket_getlocalname): use `host_data' structure instead of statics.
	(fill_hostname): new function (renamed from `ip_to_string'.
	(socket_getlocalname): new function (renamed from `socket_getmyname').
	* stream.d (socket_server): use `host_data' structure.
	(publish_host_data): new function.
	(socket_stream_peer, socket_stream_local): use it.
	* _impnotes.txt, impnotes.html: document the changes.
        * lispbibl.d: added `typedef host_data'.

1998-12-15  Sam Steingold  <sds@goems.com>

	* makemake.in: added --fsstnd options `redhat' and `debian'.

1998-12-15  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * configure: Don't lndir modules/CVS over to src/CVS.
        * configure: Don't pass the --fsstnd argument to src/configure.

1998-12-11  Sam Steingold  <sds@goems.com>

	* socket.d (create_server_socket): take 2 arguments, pointer to
	unsigned int (port) and SOCKET.
	(ip_to_string): new function.
	(socket_getmyname): new function.
	* constsym.d: added `SOCKET-SERVER-HOST'.
	* subr.d: ditto.
	* io.d (pr_orecord): print host of `SOCKET-SERVER'.
	* lispbibl.d (struct *Socket_server): new field: host.
	(socket_stream_p): new predicate.
	* stream.d (socket_server): accept socket-stream as the optional
	argument.
	(socket_server_host): new function.

1998-12-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * makemake.in (MODULES): New variables. Accept --with-module=MODULE
          syntax.
        * configure: Update.

1998-11-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (read_byte_array, read_char_array): When reading from
          handle-streams, use `full_read' not `read', because `full_read'
          handles EFAULT gracefully.

1998-11-07  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (base_char_int_len, base_char_int_limit, bcint,
          base_char_code_limit, base_char_p): New definitions.
        * charstrg.d (SYS::BASE-CHAR-P): New function.
        * predtype.d (TYPE-OF): May return [SIMPLE-]BASE-STRING instead of
          [SIMPLE-]STRING, and BASE-CHAR instead of CHARACTER.
          (COERCE): Treat BASE-CHAR, BASE-STRING, SIMPLE-BASE-STRING.
        * sequence.d (valid_type): Treat BASE-STRING, SIMPLE-BASE-STRING.
        * defs1.lsp (base-char-code-limit): Define.
        * defs2.lsp (designator): Recognize (DESIGNATOR BASE-CHAR).
        * type.lsp: New types BASE-CHAR, EXTENDED-CHAR, BASE-STRING,
          SIMPLE-BASE-STRING.
          (canonicalize-type): Force STANDARD-CHAR to be a subtype of
          BASE-CHAR.
        * compiler.lsp (*declaration-types*): Add base-char, base-string,
          extended-char, simple-base-string.
          (c-typep-alist1): Add base-string, simple-base-string.
          (c-typep-alist2): Add base-char, extended-char.
          (c-typep-alist3): Add base-string, simple-base-string.
        * init.lsp: Export base-char, base-string, extended-char,
          simple-base-string.
        * defs3.lsp: Likewise.

1998-11-05  Sam Steingold  <sds@goems.com>

        * loop.lsp (expand-loop): allow `by' to precede `upto' &c.

1998-11-05  Sam Steingold  <sds@goems.com>

	* type.lsp (canonicalize-type): handle `SIGNED-BYTE' and
	  `UNSIGNED-BYTE', thus recognize them as subtypes of `INTEGER'.

1998-11-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Replace STRING-CHAR with CHARACTER.
        * array.d (eltype_code): No need to test for STRING-CHAR, the SUBTYPEP
          test catches it. Test for subtype of CHARACTER, not STRING-CHAR.
          (datenvektor_store): Test for CHARACTER, not STRING-CHAR.
          (array_element_type): Return CHARACTER, not STRING-CHAR.
          (VECTOR-PUSH-EXTEND): Test for CHARACTER, not STRING-CHAR.
          (make_datenvektor): Likewise.
        * charstrg.d (coerce_char): Use code_char instead of int_char.
          (STANDARD-CHAR-P, GRAPHIC-CHAR-P): Use char_code instead of char_int.
          (STRING-CHAR-P): Always return T.
          (ALPHA-CHAR-P, UPPER-CASE-P, LOWER-CASE-P, BOTH-CASE-P, DIGIT-CHAR-P,
           ALPHANUMERICP, CHAR-UPCASE, CHAR-DOWNCASE, CHAR-INT): Use char_code
          instead of char_int.
          (INT-CHAR): Use code_char instead of int_char.
          (CHAR-NAME): Use char_code instead of char_int.
          (test_newchar_arg, test_stringsymchar_arg): Test for CHARACTER, not
          STRING-CHAR.
          (MAKE-STRING): No need to test for STRING-CHAR, the SUBTYPEP test
          catches it. Test for CHARACTER, not STRING-CHAR.
        * error.d (fehler_string_char): Remove, replaced by fehler_char.
        * foreign.d (convert_from_foreign_array_alloc): Make an array of
          element type CHARACTER, not STRING-CHAR.
          (convert_to_foreign): Test for CHARACTER, not STRING-CHAR.
        * genclisph.d (main): Simplify code_char and char_code. Remove
          string_char_p. Replace char_string_char by check_char.
        * io.d (SET-SYNTAX-FROM-CHAR, SET-MACRO-CHARACTER, GET-MACRO-CHARACTER,
          MAKE-DISPATCH-MACRO-CHARACTER, test_disp_sub_char, read_char_syntax,
          wpeek_char_syntax, wpeek_char_eof, read_macro): Test for CHARACTER,
          not STRING-CHAR.
          (char_reader): Use code_char instead of int_char. Simplify.
          (array_reader): Use CHARACTER, not STRING-CHAR.
          (READ-DELIMITED-LIST, READ-LINE): Test for CHARACTER, not
          STRING-CHAR.
          (pr_character): Use char_code instead of char_int.
        * lispbibl.d (char_int_len): Set to 8, not 16.
          (char_code_shift_c, char_code_len_c, char_code_mask_c): Remove.
          (char_code_limit, code_char, char_code): Simplify.
          (Atype_Char): Renamed from Atype_String_Char.
          (strmtype_ch_file): Remove.
          (strmtype_ch_file): Renamed from strmtype_sch_file.
          (string_char_p): Remove.
          (fehler_string_char): Remove declaration.
          (check_char): Replaces check_string_char.
          (read_char_array): Renamed from read_schar_array.
          (write_char_array): Renamed from write_schar_array.
        * pathname.d (OPEN): Accept element type CHARACTER, synonymous to
          STRING-CHAR. No need to test for subtype of STRING-CHAR, subtype of
          CHARACTER catches it.
        * predtype.d (COERCE): No need to check for STRING-CHAR after coercion
          to CHARACTER.
        * stream.d (write_char): Use char_code instead of char_int.
          (fehler_wr_string_char): Remove.
          (wr_ch_handle): Test for CHARACTER, not STRING-CHAR.
          (write_char_array_handle): Renamed from write_schar_array_handle.
          (wr_ch_terminal, wr_ch_terminal3, wr_ch_window): Test for CHARACTER,
          not STRING-CHAR.
          (char_size, rd_ch_ch_file, listen_ch_file, wr_ch_ch_file): Remove.
          (rd_ch_ch_file): Renamed from rd_ch_sch_file.
          (listen_ch_file): Renamed from listen_sch_file.
          (wr_ch_ch_file): Renamed from wr_ch_sch_file.
          (write_char_array_ch_file): Renamed from write_schar_array_sch_file.
          (wr_ss_ch_file): Renamed from wr_ss_sch_file.
          (position_file, position_file_end, make_file_stream): Simplify.
          (wr_ch_str_out): Test for CHARACTER, not STRING-CHAR.
          (MAKE-STRING-OUTPUT-STREAM): No need to test for STRING-CHAR, the
          SUBTYPEP test catches it.
          (wr_ch_str_push, wr_ch_pphelp, wr_ch_buff_out, wr_ch_printer,
          wr_ch_socket): Test for CHARACTER, not STRING-CHAR.
          (write_char_array_socket): Renamed from write_schar_array_socket.
          (STREAM-ELEMENT-TYPE): Return CHARACTER instead of STRING-CHAR.
          For the keyboard stream, return T.
          (read_char_array): Renamed from read_schar_array. Test for
          CHARACTER, not STRING-CHAR.
          (write_char_array): Renamed from write_schar_array.
          (FILE-STRING-LENGTH): Test for CHARACTER, not STRING-CHAR. Simplify.
        * compiler.lsp (c-typep-alist1): Add STRING-CHAR.
          (c-typep-alist2): Remove STRING-CHAR.
        * defs2.lsp (dispatch-reader): Test for CHARACTER, not STRING-CHAR.
          (read-sequence, write-sequence): Don't test for STRING-CHAR, that's
          not a used stream element type any more.
          (designator): Use char-code-limit instead of char-int-limit.
          Remove definition of type (DESIGNATOR STRING-CHAR).
          Use CHARACTER instead of STRING-CHAR.
        * format.lsp (digit-string): Create with element type CHARACTER, not
          STRING-CHAR.
        * init.lsp (load): Call open with element type CHARACTER, not
          STRING-CHAR.
        * type.lsp (STRING-CHAR): Make synonymous to CHARACTER.
          (upgraded-array-element-type): No need to test for STRING-CHAR, the
          SUBTYPEP test catches it. Return CHARACTER, not STRING-CHAR.
          (canonicalize-type): Simplify STANDARD-CHAR and STRING-CHAR.
          Element type of SIMPLE-STRING and STRING is CHARACTER, not
          STRING-CHAR.
        * user2.lsp (shell-quote): Create with element type CHARACTER, not
          STRING-CHAR.

1998-11-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Remove font and bits attributes of characters.
        * lispbibl.d (char_bits_*, char_font_*, char_*_c): Remove definitions.
        * io.d (char_reader): Font must be 0, bitnames are not supported any
          more.
          (pr_character): Remove support for font and bitnames.
        * constobj.d (charname_hyper_*): Remove extra character names for keys.
          (bitnamekw_*): Remove bitnames.
        * charstrg.d (charname_table_extra): Remove definition.
          (charname_table_codes): Remove extra characters.
          (name_char): Don't test for extra characters.
          (CHAR-BITS, CHAR-FONT, MAKE-CHAR): Remove functions.
          (test_font_arg, test_bits_arg, test_bitname_arg): Remove.
          (CODE-CHAR, DIGIT-CHAR): Remove the optional font and bits arguments.
          (CHAR-BIT, SET-CHAR-BIT): Remove functions.
        * eval.d (FUNTAB): Remove CHAR-BITS, CHAR-FONT, MAKE-CHAR, CHAR-BIT,
          SET-CHAR-BIT.
        * compiler.lsp (funtab): Remove CHAR-BITS, CHAR-FONT, MAKE-CHAR,
          CHAR-BIT, SET-CHAR-BIT.
          (subr-info): Remove CHAR-BITS, CHAR-FONT, MAKE-CHAR, CHAR-BIT,
          SET-CHAR-BIT, update for CODE-CHAR, DIGIT-CHAR.
          (c-DIRECT-FUNCTION-CALL): Remove CHAR-BITS, CHAR-FONT, MAKE-CHAR,
          CHAR-BIT.
        * format.lsp (format-character): Remove handling of font and bits.
        * user2.lsp (describe): Likewise.

        * xcharin.lsp: New file.
        * makemake.in (LPARTS): Add xcharin.
        * defs1.lsp (char-font-limit, char-bits-limit, char-int-limit,
          char-control-bit, char-meta-bit, char-super-bit, char-hyper-bit):
          Moved to xcharin.lsp.
        * init.lsp: Load xcharin.
        * defs3.lsp: Don't export COMMON, STRING-CHAR, CHAR-FONT-LIMIT,
          CHAR-BITS-LIMIT, CHAR-CONTROL-BIT, CHAR-META-BIT, CHAR-SUPER-BIT,
          CHAR-HYPER-BIT, STRING-CHAR-P, CHAR-BITS, CHAR-FONT, MAKE-CHAR,
          INT-CHAR, CHAR-BIT, SET-CHAR-BIT.

        * stream.d (key_event): New structure type.
          (make_key_event): New function.
          (char_control_c, char_meta_c, char_super_c, char_hyper_c): Define.
          (scancode_table): Use key_event data.
          (listen_keyboard): Call make_key_event and make-char.
          (rd_ch_keyboard): Likewise.
          (add_keybinding): Renamed from keybinding.
          (keybinding): New macro.
          (make_keyboard_stream): Use key_event data.
          (wr_ch_terminal1): Leave a #error for Jrg to fix.

        * type.lsp (upgraded-array-element-type): Treat CHARACTER as synonym
          of STRING-CHAR.
        * array.d (eltype_code): Likewise.

1998-10-31  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (MAKE-STRING-OUTPUT-STREAM): Replace optional argument by
          keyword arguments :ELEMENT-TYPE and :LINE-POSITION.
        * compiler.lsp (subr-info): Update for MAKE-STRING-OUTPUT-STREAM.
        * format.lsp (format-case-conversion, format-justification,
          formatter-main-1): Pass keywords to MAKE-STRING-OUTPUT-STREAM.
        * macros2.lsp (with-output-to-string): Add keyword argument
          :ELEMENT-TYPE.

1998-10-31  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * charstrg.d (MAKE-STRING): Add keyword argument :ELEMENT-TYPE.
        * compiler.lsp (subr-info): Update for MAKE-STRING.

1998-10-31  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pathname.d (OPEN): Add keyword argument :EXTERNAL-FORMAT.
        * stream.d (STREAM-EXTERNAL-FORMAT): New function.
        * eval.d (FUNTAB): Add stream-external-format.
        * compiler.lsp (funtab): Add stream-external-format.
          (subr-info): Update for OPEN and STREAM-EXTERNAL-FORMAT.
        * init.lsp: Export STREAM-EXTERNAL-FORMAT from package LISP.
        * defs3.lsp: Export STREAM-EXTERNAL-FORMAT from package COMMON-LISP.

1998-10-31  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * constobj.d (O(version)): Bump version number.

1998-10-31  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * editor.lsp: Remove file.
        * makemake.in (LPARTS): Adjust.

1998-10-22  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * charstrg.d (coerce_char): An integer is coercible to a character
          only if *ansi* is false.
        * defs2.lsp (DESIGNATOR): Likewise.

1998-10-30  Sam Steingold  <sds@goems.com>

	* init.lsp (date-format): use ISO date/time format for English.

1998-10-29  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* spvw.d (main): Use `merge-pathnames' instead of explicit
	  `make-pathname'. Also make the #ifs consistent with _clisp.1.

1998-10-29  Sam Steingold  <sds@goems.com>

	* spvw.d (main): replace `load_rc_file' with explicit load.
	* user1.lsp: remove `load-rc-file'.
	* constsym.d: ditto.

1998-10-29  Sam Steingold  <sds@goems.com>

	* spvw.d (usage): new function; replace 'goto usage' with a call
	  to it, thus the exit code for "-h" and "--help" is 0 now.

1998-10-29  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* makemake.in: Keep "-norc" out of the localeflags.
	* user1.lsp (load-rc-file): Use `load'. Filename is OS dependent.
	  (help): Don't mention Ctrl-D, it's Ctrl-Z on DOS, OS/2, Win32.
	* _clisp.1: Update accordingly.

1998-10-28  Sam Steingold  <sds@goems.com>

	* spvw.d (main): added a new command line option -norc; load
	  ~/.clisprc when it is not given.
	* _clisp.c (main): ditto.
	* makemake.in: give lisp.run options -norc on build
	* user1.lsp (load-rc-file): new function.
	  (help): more verbose message.
	* _clisp.1: document it.

1998-10-27  Sam Steingold  <sds@goems.com>

	* configure: remind the user to edit config.lsp.
	* cfgacorn.lsp, cfgamiga.lsp, cfgdos.lsp:
	  (machine-instance): init from $HOSTNAME.
	* cfgacorn.lsp, cfgamiga.lsp, cfgdos.lsp, cfgsunux.lsp, cfgunix.lsp:
	  (short-site-name, long-site-name): init from $ORGANIZATION.
	  In both cases, when the environment variable is undefined, return
	  an instruction to edit `config.lsp'.

1998-10-23  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* time.d (SYS::DEFAULT-TIME-ZONE): Treat dates <= 1.1.1970 or
	  >= 1.1.2050 like 1.1.1970 or 1.1.2050, respectively.

1998-10-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* stream.d (FILE-STRING-LENGTH): New function.
	* init.lsp: Export it from package LISP.
	* defs3.lsp: Export it from package COMMON-LISP.
	* compiler.lsp (subr-info): Add FILE-STRING-LENGTH.

1998-10-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	Encode the "last read character has been pushed back" state of a
	stream in the strmflags, instead of in strm_rd_ch_last.
	* stream.d (strmflags_unread_bit_B, strmflags_unread_B): New defines.
	  (pk_ch_dummy): Set the bit, unless the return value is eof_value.
	  (read_char): Clear the bit.
	  (unread_char): Set the bit.
	  (peek_char): Test the bit.
	  (close_dummys): Clear the bit.
	  (rd_ch_handle for AMIGAOS): Set the bit before entering a break loop.
	  (listen_handle): Set the bit when a character is available.
	  (listen_keyboard): Likewise.
	  (listen_socket): Likewise.
	  (position_file_start, position_file, position_file_end): Clear the
	  bit.
	  (SYSTEM::STRING-INPUT-STREAM-INDEX): Test the bit.
	  (SYSTEM::BUFFERED-INPUT-STREAM-INDEX): Likewise.
	  (pk_ch_generic): Simplify. Don't check for a character any more.
	  (stream_listen): Test the bit.
	  (clear_input): Clear the bit.
	  (read_schar_array): Test and clear the bit.

1998-10-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* type.lsp (upgraded-array-element-type): Fix so that for
	  STANDARD-CHAR it returns STRING-CHAR.
	* array.d (eltype_code): Likewise.

1998-10-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* lispbibl.d (nonreturning): Remove definition.
	  (nonreturning_function): Use __attribute__((__noreturn__)).
	* genclisph.d (main): Likewise.

1998-10-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* _clisp.c (main): New option "-a".
	* spvw.d (main): Likewise.
	  (argv_ansi): New variable.
	* constsym.d (*ANSI*): New variable.
	* spvw.d (init_symbol_values): Initialize it.

1998-10-21  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* _distmakefile (CC): Set to "cc -Aa" on HP-UX, because "cc" is not
	  ANSI C compliant and doesn't grok `main' in clisp.c.
	  (CC): Set to "gcc" on SunOS4, because the normal "cc" is not ANSI C
	  compliant.

1998-10-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* loop.lsp (expand-loop): Rework a little bit to improve the syntax
	  checking after `of-type' in sum/max/count.

1998-10-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* control.d (TAGBODY, GO): Allow NIL as GO tag.
	* compiler.lsp (c-TAGBODY, c-GO): Likewise.

1998-10-17  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* list.d (LDIFF): Allow dotted lists, like for TAILP.

1998-10-15  Sam Steingold  <sds@goems.com>

	* loop.lsp (expand-loop): fixed handling of `of-type' in
	sum/max/count.

1998-10-14  Leigh Smith  <leigh@antechinus.cs.uwa.oz.au>

	* makemake.in (echol): Use `cat', not `printf'.
	  (echoline): Don't access $3 and $4 inside the loop.

1998-10-12  Sam Steingold  <sds@goems.com>

	* utils/modprep.d: #include <errno.h>.

1998-10-11  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* utils/modprep.d: New file.
	* makemake.in: Build it.
	* genclisp.d: Define DEFMODULE, DEFUN, DEFVAR, for use by modules.

1998-10-10  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* stream.d (rd_ch_terminal3): Don't need to put newlines into the
	  prompt string when using newnewreadline.
	  (xmalloc, xrealloc): Change declaration when using newnewreadline.

1998-10-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* configure, makemake.in: Add support for newnewreadline directory.

1998-10-08  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* stream.d (make_keyboard_stream): Restore the handling of most keypad
	  keys in xterm, broken by the 1998-10-03 patch.

1998-10-09  Sam Steingold  <sds@goems.com>

	* spvw.d (init_symbol_values): define LISP:*PPRINT-FIRST-NEWLINE*.
	* io.d (pr_enter_1): use `pprint_first_newline' to determine
	whether to output a newline before the object.
	* constsym.d: new symbol LISP:*PPRINT-FIRST-NEWLINE*.
	* bindings/linuxlibc6/linux.lsp: do not include <stdlib.h>, fixed
	declaration of `lldiv', removed: `setkey', `crypt', `encrypt',
	`__pwdopen', `__pwdread', `__pwdalloc', `__pwdscan', `__grpopen',
	`__grpread', `__grpalloc', `__grpscan'.
	* foreign1.lsp (to-c-typedecl): more elaborate handling of `c-ptr',
	`c-ptr-null', `c-array-ptr' and `c-function'.
	* user1.lsp (prompt-index): removed; *prompt* modified accordingly.

1998-10-06  Sam Steingold  <sds@goems.com>

	* user1.lsp (package-short-name): respect `*print-case*'.
	(break-loop): add a space after "Break".
	(step-hook-fn): added a space after "Step nn".
	(prompt-index, prompt-new-package): Rewrite.
	(*command-index*, *home-package*): New variables.

1998-10-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* lndir: Add code to perform the equivalent of "mkdir -p".
	  (mkdirparent): New function.

1998-10-06  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* makemake.in: If SRCDIR is empty, emit "./lndir" instead of "lndir".

1998-10-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* lispbibl.d (STACK_reg, mv_count_reg, value1_reg, subr_self_reg):
	  Declare even if HAVE_SAVED_REGISTERS is not defined.

1998-10-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* stream.d (make_keyboard_stream): Recognize the End key sequence
	  sent by the Linux console even when it is lacking from the termcap
	  entry. (The "kH" termcap entry apparently got lost during the
	  termcap -> terminfo/ncurses switch.)

1998-09-30  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* stream.d (make_keyboard_stream): Recognize the XF86-3.3.2 xterm's
	  Home/End key sequences Esc [ H and Esc [ F. Recognize the SuSE-5.3
	  kvt's Home/End key sequences Esc O H and Esc O F.

1998-09-21  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

	* array.d (vectorof): New function.
	  (VECTOR): Call it.
	* lispbibl.d (vectorof): New declaration.
	* genclisph.d (main): Declare vectorof.
	* predtype.d (statistics_statistics): Use vectorof.

1998-09-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * user1.lsp: Fix German message, broken by last patch.

1998-09-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * bytecode.html: New file.
        * compiler.lsp: Remove description of instruction set.

1998-09-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * condition.lsp (prompt-for-new-value): Change message, to be
          consistent with prompt-for-new-value-string.
          (assert): Make more readable. Prefer `append' to `nconc'.

1998-09-11  Sam Steingold  <sds@goems.com>

	* conditio.lsp (prompt-for-new-value): returns a list now; works
	with multiple value places.
	(check-type): adopt for new semantics od `prompt-for-new-value'.
	(assert): work with multiple value places.

1998-09-10  Sam Steingold  <sds@goems.com>

        * user1.lsp (prompt-new-package): removed the `values' declaration.

1998-09-10  Sam Steingold  <sds@goems.com>

	* places.lsp (setf-VALUES-aux): replaced `get-setf-method' with
	`get-setf-expansion' therefore comply with SETF-OF-VALUES:ADD.

1998-09-09  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw.d (init_object_tab): Put only keywords into *features*.
        * clos.lsp: Likewise. Don't export CLOS.
        * compiler.lsp: Likewise. Don't export COMPILER.
        * loop.lsp: Likewise.
        * editor.lsp: Likewise. Don't export EDITOR.
        * init.lsp: Don't import/export the contents of *features*.
        * io.d (interpret_feature): Search in *features* by EQ.
          (feature): Bind *package*.

1998-09-09  Sam Steingold  <sds@goems.com>

	* user1.lsp: replaced `*prompt-with-package*' with `*prompt*' with
	CMUCL's semantics.  Added `prompt-new-package', `prompt-index' and
	`package-short-name'.

1998-09-03  Sam Steingold  <sds@goems.com>

	* places.lsp (shiftf): fixed the return values, as well as the
	failed test setf.tst.

1998-09-02  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * pathname.d (legal_namechar): On DOS, accept more misc characters
          as valid.

1998-09-02  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (const, __const): Define to empty when using gcc-2.7.x.

1998-09-01  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_mmap.d (mprotect): Declare with MPROTECT_CONST.
        * win32.d (MPROTECT_CONST): Define.

1998-08-31  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw.d (init_object_tab:features_initstring): Replace CLTL1 by
          CLTL2.

1998-08-31  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_garcol.d (gar_col_compact): Fix update_STACKs call.

1998-08-30  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * places.lsp: Fix German and French messages, broken by last patch.
          (define-setf-expander, get-setf-expansion): Change format of
          SYSTEM::SETF-EXPANDER property list entry. Don't call
          FUNCTION-SIGNATURE.
          (PUSH): Rewrite. Do not call COPY-TREE.
          (POP): Rewrite. Do not call COPY-TREE. Be sure to fetch the CARs
          before the CDRs.
          (PUSHNEW): Rewrite. Do not call COPY-TREE.
          (SETF): Don't nreverse bindlist.
          (SHIFTF, ROTATEF): Don't call NREVERSE on some unknown piece of code.
          (SETF THE): Fix totally broken code.
        * defs3.lsp: Don't export `get-setf-method',
          `get-setf-method-multiple-value', `define-setf-method' any more.

1998-07-29  Sam Steingold  <sds@goems.com>

        Implemented ANSI CL issue SETF-MULTIPLE-STORE-VARIABLES:ALLOW:
        * places.lsp (get-setf-method-multiple-value): renamed into
          `get-setf-expansion'; made it treat multiple value `defsetf'
          properly.
          (simple-assignment-p, simple-use-p): use `=' to compare numbers,
          not `eql'.
          (push, pop, psetf, psetf, rotatef, shiftf, the): rewrote from
          scratch to accept multiple value places.
          (define-setf-method): renamed into `define-setf-expander'.
          (defsetf): made it accept multiple values.
          (setf): minor code simplification.
        * init.lsp (export): added `get-setf-expansion' and
          `define-setf-expander'.
        * defs3.lsp (export): added `get-setf-expansion' and
          `define-setf-expander'.

1998-08-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d: Add a lot of `const' qualifiers.
        * spvw.d, spvw_memfile.d, spvw_sigwinch.d, spvw_multimap.d,
          spvw_genera1.d, eval.d, io.d, stream.d, socket.d, array.d,
          charstrg.d, hashtabl.d, list.d, sequence.d, package.d, debug.d,
          time.d, lisparit.d, intelem.d, intgcd.d, int2adic.d, flo_konv.d,
          foreign.d, graph.d, affi.d, unix.d, unixaux.d, genclisph.d: Likewise.

1998-08-03  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_NOWARN): Remove.
        * configure.in (CL_NOWARN): Remove.
        * unixconf.h.in (__nowarn__): Remove definition.
        * lispbibl.d (nowarn): Remove definition.
        * unix.d, acorn.d: Remove occurrences of `nowarn'.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_walk.d: New file.
        * spvw.d (map_heap_objects): Move out.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_memfile.d: New file.
        * spvw.d (memflags, memdump_header, memdump_page,
           memdump_physpage_state, memdump_reloc_header, page_alignment,
           WRITE_page_alignment, READ_page_alignment, savemem, loadmem_update,
           loadmem_update_fsubr, loadmem, loadmem_from_handle): Move out.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_language.d: New file.
        * spvw.d (mysetenv, language, init_language_from, init_language,
           cvgettext, clgettext, localized_string, localized_object): Move out.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_typealloc.d: New file.
        * spvw.d (allocate_cons, make_symbol, allocate_vector,
           allocate_bit_vector, allocate_string, allocate_iarray,
           allocate_srecord_, allocate_xrecord_, allocate_stream,
           allocate_fpointer, allocate_handle, allocate_bignum,
           allocate_ffloat, allocate_dfloat, allocate_lfloat, make_ratio,
           make_complex): Move out.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_allocate.d: New file.
        * spvw.d (fehler_speicher_voll, error_speicher_voll, relax_reserve,
           pointable_usable_test, mymalloc, make_space, make_space_gc,
           allocate): Move out.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_garcol.d: New file.
        * spvw.d (gc_mark, mark_stack, gc_markphase, alive,
           unmark_fixed_varobjects, gc_compact_cons_page, gc_morris1,
           gc_morris2, gc_morris3, set_GCself, gc_sweep1_varobject_page,
           update, move_aligned_p1_p2, gc_sweep2_varobject_page,
           gc_unmarkcheck, nullobjcheck, free_some_unused_pages,
           gar_col_normal, gar_col_done, free_page_later, free_delayed_pages,
           gc_compact_from_varobject_page, gc_compact_from_cons_page,
           gc_compact_heap, gar_col_compact, gar_col_simple, gar_col,
           move_conses): Move out.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_sigsegv.d, spvw_sigcld.d, spvw_sigint.d, spvw_sigwinch.d: New
          files.
        * spvw.d (gc_signalblock_on, gc_signalblock_off, interrupt_pending,
           update_linelength, sigwinch_handler, install_sigcld_handler,
           begin_want_sigcld, end_want_sigcld, interrupt_handler,
           alarm_handler, sigsegv_handler_failed, sigsegv_handler,
           install_segv_handler, stackoverflow_handler): Move out.
          (main): Call install_stackoverflow_handler, install_sigwinch_handler,
          install_sigint_handler, install_segv_handler, install_sigcld_handler.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_gcstat.d: New file.
        * spvw.d (gc_count, gc_space, gc_time, gc_timer_on, gc_timer_off):
          Move out.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_genera1.d, spvw_genera2.d, spvw_genera3.d: New files.
        * spvw.d (xfree, xrealloc, prepare_old_generation, in_old_generation,
           walk_physpage, walk_area, walk_physpage_, walk_area_,
           update_old_generation, build_old_generation_cache,
           rebuild_old_generation_cache, gc_cache_check, gc_overall_check,
           save_gc_data): Move out.
          (gc_markphase): Call gc_mark_old_generation().
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_fault.d: New file.
        * spvw.d (physpagesize, physpageshift, handle_fault_result,
           handle_mmap_fault, handle_read_fault, handle_readwrite_fault,
           handle_fault, handle_fault_range, selfmade_mmap, xmprotect,
           xmmprotect): Move out.
          (main): Call init_physpagesize().
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_mark.d: New file.
        * spvw.d (mark, unmark, marked, with_mark_bit, without_mark_bit): Move
          out.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_update.d: New file.
        * spvw.d (aktualisiere_STACK, aktualisiere_subr_tab,
           aktualisiere_symbol_tab, aktualisiere_object_tab, aktualisiere_tab,
           aktualisiere_conspage_normal, aktualisiere_conses,
           aktualisiere_page_normal, aktualisiere_varobject): Move out.
          (update): Renamed from aktualisiere.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_objsize.d: New file.
        * spvw.d (typecode_at, case_symbolwithflags, speicher_laenge,
           Varobject_aligned_size, size_symbol, size_sbvector, size_sstring,
           size_svector, size_iarray, size_srecord, size_xrecord, size_bignum,
           size_ffloat, size_dfloat, size_lfloat, speicher_laengen,
           init_speicher_laengen, var_speicher_laenge_, calc_speicher_laenge,
           varobject_bytelength): Move out.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_space.d: New file.
        * spvw.d (static_space, used_space, free_space, recalc_space): Move
          out.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_page.d: New file.
        * spvw_heap.d: New file.
        * spvw_global.d: New file.
        * spvw.d (typecount, _Page, Page, Pages, Heap, oint_addr_relevant_len,
           min_page_size_brutto, std_page_size, old_new_pointer,
           physpage_state, heapcount, is_cons_heap, is_varobject_heap,
           is_heap_containing_objects, is_unused_heap, map_heap,
           for_each_cons_page, for_each_cons_page_reversed,
           for_each_varobject_page, for_each_page, mem, RESERVE,
           MINIMUM_SPACE, RESERVE_FOR_MALLOC, check_avl_consistency,
           check_gc_consistency, check_gc_consistency_2,
           check_pack_consistency): Move out.
          (memfile_handle, memfile_still_being_read): Move into the mem struct.
          (main): Call init_mem_heaptypes() and init_mem_heapnr_from_type().
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_singlemap.d: New file.
        * spvw.d (map_pagesize, initmap, prepare_zeromap, zeromap): Move out.
          (main): Call init_map_pagesize().
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_multimap.d: New file.
        * spvw.d (map_pagesize, MM_TYPECASES, combine, mm_types_count,
           initmap, remember_mmap_interval, msync_mmap_intervals, fdmap,
           zeromap, open_temp_fd, fdsave, close_temp_fd, open_shmid, idmap,
           shmsave, close_shmid, open_mapid, map_mapid, close_mapid, multimap1,
           done_mapid, exitmap, multimap): Move out.
          (main): Call init_map_pagesize() and use map_pagesize.
          (main): Don't close zero_fd, it might be needed in the case of
          DYNAMIC_MODULES.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_mmap.d (mmap_zero_fd): Renamed from zero_fd.

1998-07-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_circ.d: New file.
        * spvw.d (mlbitmap, mlb_alloc, mlb_add, mlb_free, get_circ_global,
           get_circ_mark, get_circ_unmark, get_circularities,
           subst_circ_global, subst_circ_mark, subst_circ_unmark, subst_circ):
          Move out.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Remove support for immutable objects. It was limited to a small range
        of systems (those with good shared memory support), introduced a 16 MB
        limit on 32-bit machines, required specially compiled binaries, and
        added a lot of complexity to spvw.d, which is in the way now. Not
        worth it.
        * lispbibl.d: Remove IMMUTABLE support.
          (coerce_imm_ss): Remove declaration.
        * genclisph.d (main): Remove IMMUTABLE support.
        * spvw.d: Remove IMMUTABLE support.
        * hashtabl.d: Likewise.
        * io.d: Likewise.
        * list.d: Likewise.
        * stream.d: Remove strmflags_immut_bit_B.
        * package.d: Use coerce_ss instead of coerce_imm_ss.
        * constpack.d: Likewise.

1998-07-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * Makefile.devel, configure: Incorporate the sigsegv package.
        * lispbibl.d: Include sigsegv.h.
          Rename CAN_HANDLE_WP_FAULT to HAVE_SIGSEGV_RECOVERY.
          Use HAVE_STACK_OVERFLOW_RECOVERY.
        * spvw.d (install_segv_handler, catch_exception_raise,
           exception_thread_main, sigsegv_handler, install_sigsegv_handler,
           stack_overflow_handler): Remove all low-level, platform-dependent
          stuff. Use the sigsegv package instead.
          (main): Call stackoverflow_install_handler.
        * unix.d: Remove CAN_HANDLE_WP_FAULT database, now part of the sigsegv
          package.
        * win32.d: Likewise.
        * makemake.in: (USE_SIGSEGV, XCL_SIGSEGVLIB): New variables.

1998-07-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * aclocal.m4 (CL_MPROTECT, CL_CODEEXEC): Require CL_MALLOC.

1998-07-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_alloca.d: New file.
        * spvw.d (malloca_header, malloca_list, malloca, freea): Move out.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-20  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw.d (cpu_is_68000, CPU_IS_68000, default_allocmemflag,
          retry_allocmemflag, MemBlockHeader, allocmemblocks, allocmem,
          freemem, stdin_handle, stdout_handle, orig_dir_lock, init_amiga,
          exit_amiga): Move out.
        * amigaaux.d (cpu_is_68000, CPU_IS_68000, default_allocmemflag,
          retry_allocmemflag, MemBlockHeader, allocmemblocks, allocmem,
          freemem, stdin_handle, stdout_handle, orig_dir_lock, init_amiga,
          exit_amiga): Move to here.
          (malloc, free): New functions.
        * amiga.d (default_allocmemflag, retry_allocmemflag, allocmem, freemem,
          malloc, free): Declare.

1998-07-19  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw.d (abort): Move to amigaaux.d.
        * amigaaux.d (abort): Moved here.
        * amiga.d (abort): Adjust comment.

1998-07-05  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d: Add a comment about CFLAGS.

1998-07-05  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d: Don't use CPU registers when compiling for MULTITHREAD,
          for the moment.
          (SP_register, ASM_get_SP_register): Define.
          (SP): Use it.
          (thread): New structure.
          (thread_size, thread_objects_offset, thread_objects_anz, roughly_SP,
           sp_to_thread): New macros.
          (current_thread): New function.
          (callback_saved_registers, STACK, saved_mv_count, saved_value1,
           saved_subr_self, saved_STACK, SP_bound, STACK_bound, mv_count,
           mv_space, value1, temp_mv_count, temp_value1, subr_self, aktenv,
           unwind_protect_to_save, handler_args, inactive_handlers): Support
          for MULTITHREAD.
        * eval.d (STACK, saved_STACK, mv_count, temp_mv_count, saved_mv_count,
           temp_value1, saved_value1, subr_self, saved_subr_self): Move out to
          spvw.d.
          (unwind_protect_to_save, handler_args, stack_range,
           inactive_handlers): Move out to lispbibl.d and spvw.d.
        * spvw.d (STACK, saved_STACK, mv_count, temp_mv_count, saved_mv_count,
           temp_value1, saved_value1, subr_self, saved_subr_self,
           callback_saved_registers, SP_bound, STACK_bound, aktenv,
           unwind_protect_to_save, handler_args, inactive_handlers): Define
          all together here.
          (allthreads_lock, MAXNTHREADS, nthreads, allthreads, num_symvalues,
           maxnum_symvalues): New definitions.
          (init_multithread, create_thread, delete_thread,
           make_symvalue_perthread): New functions.
          (for_all_threadobjs, for_all_STACKs): Reimplement.
          (main): Call init_multithread and create_thread.

1998-07-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_mmap.d: New file.
        * spvw.d (getpagesize, initmap, prepare_zeromap, zeromap, filemap,
          munmap, mprotect): Move out.
          (main): Call mmap_init_pagesize() and use mmap_pagesize.
        * makemake.in (SPVW_INCLUDES): Adjust.

1998-07-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_debug.d: New file.
        * spvw.d (asciz_out, hex_out_, dez_out_, asciz_out_s, asciz_out_ss,
          asciz_out_aux_hex, asciz_out_aux_dez, asciz_out_1_, asciz_out_2_,
          asciz_out_3_, mem_hex_out, object_out): Move out.
        * makemake.in: (SPVW_INCLUDES): Adjust.

1998-07-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw_module.d: New file.
        * spvw.d (main_module, last_module, init_modules_0, add_module,
          for_modules, all_modules, all_other_modules): Move out.
        * makemake.in (SPVW_MODULES): New variable. Adjust.

1998-07-04  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (OS_error): Move declaration.
          (xthread.c): Move #include.

1998-06-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Make the *print-circle* subroutines multithread-safe.
        * spvw.d (mlb[0-6], mlbs[0-5], mlb_levels): New macros.
          (mlbitmap): New struct type.
          (mlb_alloc, mlb_expand, mlb_add, mlb_free): New functions.
          (get_circularities, get_circ_mark): New implementations for
          MULTITHREAD.
          (subst_circ, subst_circ_mark): New implementations for MULTITHREAD.

1998-06-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * xthread.d: New file.
        * lispbibl.d: Include it if defined(MULTITHREAD).
          (_REENTRANT): Define if defined(MULTITHREAD).
        * makemake.in (OS_includes): Add xthread.
        * FILES.1: Update.
        * gettext/po/Makefile.devel (DSOURCES): Likewise.

1998-06-21  Gilbert Baumann  <unk6@rz.uni-karlsruhe.de>

        * impnotes.html: Fix a couple of syntax errors.

1998-06-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * screen.lsp (generic-stream-listen): Adapt return value.

1998-06-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * defs1.lsp (load-logical-pathname-translations): Signal an error if
          no translations were found.

1998-06-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * defs3.lsp (COMMON-LISP:IN-PACKAGE): New macro.

1998-06-20  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * lispbibl.d (OS_file_error, OS_filestream_error): New declarations.
        * errunix.d (OS_error_internal): New function, extracted from OS_error.
          (OS_error): Call it.
          (OS_file_error): New function.
        * erramiga.d (OS_error_internal): New function, extracted from OS_error.
          (OS_error): Call it.
          (OS_file_error): New function.
        * errwin32.d (OS_error_internal): New function, extracted from OS_error.
          (OS_error): Call it. Start with an optional end_system_call().
          (OS_file_error): New function.
        * errdjgpp.d (OS_error_internal): New function, extracted from OS_error.
          (OS_error): Call it.
          (OS_file_error): New function.
        * error.d (OS_filestream_error): New function.
        * spvw.d (savemem): Add missing end_system_call(). Call OS_file_error
          instead of OS_error.
        * pathname.d (default_directory_of): Add pathname argument. Call
          OS_file_error instead of OS_error.
          (use_default_dir): Change accordingly.
          (assure_dir_exists for DOS/OS2/Win32): Call OS_file_error instead of
          OS_error.
          (directory_truename for AMIGAOS): Move end_system_call().
          (default_directory for AMIGAOS): Add missing end_system_call().
          (assure_dir_exists for AMIGAOS): Call OS_file_error instead of
          OS_error.
          (assure_dir_exists for UNIX): Likewise.
          (canonicalise_dirname for RISCOS): Likewise.
          (assure_dir_exists_ for RISCOS): Likewise.
          (change_default for DOS/OS2/Win32): Likewise.
          (change_default for AMIGAOS): Likewise.
          (change_default for UNIX): Likewise.
          (change_default for RISCOS): Likewise.
          (file_exists): Force pathname to be in STACK_0.
          (access0 for Win32): Call OS_file_error instead of OS_error.
          (directory_exists): Likewise.
          (DELETE-FILE): Likewise.
          (rename_file): Adapt to changed file_exists(). Call OS_file_error
          instead of OS_error.
          (open_file): Call OS_file_error instead of OS_error.
          (subdirs, directory_search): Likewise.
          (shorter_directory): Leave the pathname on the STACK.
          (make_directory): Force pathname to be in STACK_0. Call
          OS_file_error instead of OS_error.
          (MAKE-DIR, DELETE-DIR, ENSURE-DIRECTORIES-EXIST): Change accordingly.
          Call OS_file_error instead of OS_error.
          (FILE-WRITE-DATE): Call OS_filestream_error and OS_file_error instead
          of OS_error.
          (FILE-AUTHOR): Call OS_file_error instead of OS_error.
        * stream.d (file_lseek): Call OS_filestream_error instead of OS_error.
          (b_file_finish_flush, b_file_nextbyte): Likewise.
          (finish_output_file, close_file): Likewise.

1998-06-20  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * package.d (unintern): Signal a continuable error of type
          PACKAGE-ERROR instead of ERROR.
          (import, export, use_package, correct_packname): Likewise.
          (DELETE-PACKAGE): Likewise.

1998-06-20  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * error.d (SYS::CERROR-OF-TYPE): New function.

1998-06-20  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * conditio.lsp (coerce-to-condition): Don't signal an error if
          there are arguments and the caller is CERROR.

1998-06-20  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * conditio.lsp (retry-loop): New argument expected-type. Signal an
          error of type TYPE-ERROR.
          (ctypecase, ccase): Call case-expected-type.

1998-06-11  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * user2.lsp (describe): Don't mention STRUCTURE-OBJECT as type of
          all structure objects.

1998-06-06  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * control.d (make_variable_frame): For LET, LET*, MULTIPLE-VALUE-BIND,
          check that the variable is not a constant. For SYMBOL-MACROLET,
          check that the variable is not proclaimed special.
        * init.lsp (%expand-form): For SYMBOL-MACROLET, check that the
          variable is not proclaimed special and is not declared special
          in the same binding.
        * compiler.lsp (c-SYMBOL-MACROLET): Likewise.

1998-06-04  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * lispbibl.d (Stream): New field strm_pk_ch.
        * stream.d (pk_ch_Pseudofun): New type.
          (pk_ch): New macro.
          (pk_ch_dummy): New function.
          (peek_char): Call the stream's pk_ch function.
          (close_dummys, make_handle_stream, make_keyboard_stream,
          make_terminal_stream_, SCREEN:MAKE-WINDOW, make_file_stream,
          make_synonym_stream, make_broadcast_stream, make_concatenated_stream,
          make_twoway_stream, make_echo_stream, MAKE-STRING-INPUT-STREAM,
          make_string_output_stream, SYS::MAKE-STRING-PUSH-STREAM,
          make_pphelp_stream, MAKE-BUFFERED-INPUT-STREAM,
          MAKE-BUFFERED-OUTPUT-STREAM, make_printer_stream,
          MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM, MAKE-PIPE-IO-STREAM,
          SYS::MAKE-SOCKET-STREAM, make_socket_stream, MAKE-GENERIC-STREAM):
          Set the strm_pk_ch field.
          (pk_ch_synonym, pk_ch_concat, pk_ch_twoway, pk_ch_generic): New
          functions.
        * pseudofun.d: Update.
        * gstream.lsp: Export GENERIC-STREAM-PEEK-CHAR.
          (generic-stream-peek-char): New generic function.

1998-06-03  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * clos.lsp (slot-unbound): Signal SLOT-UNBOUND instead of ERROR.

1998-06-02  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * format.lsp (FORMAT-CALL-USER-FUNCTION): Renamed from FORMAT-SLASH.
          (format-parse-cs): Integrate format-get-symbol. Tweak error
          messages. Use *common-lisp-user-package*. Don't push a symbol
          directly on csd-parm-list.

1998-06-02  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * compiler.lsp (c-EVAL-WHEN): Treat (NOT :COMPILE-TOPLEVEL),
          consistently with control.d.

1998-06-14  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * configure: Always pass --with-included-gettext to gettext/configure.
          (Because some users have libintl.a installed and some don't,
          therefore the fact that libintl.a is present must be ignored.)

1998-05-31  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * conditio.lsp (unbound-slot): New condition type. Export it.
          (unbound-slot-instance): New function. Export it.
          (simple-unbound-slot, simple-parse-error): New condition types.
          (%defclcs): Pass them.
        * init.lsp (unbound-slot): Export it.
        * defs3.lsp (unbound-slot, unbound-slot-instance): Export them.
        * lispbibl.d (conditiontype): Add unbound_slot and parse_error.
        * genclisph.d: Likewise.
        * constsym.d: Add them here too.
        * error.d (end_error): Treat unbound_slot.
        * array.d (ARRAY-DIMENSION): For out-of-range argument, signal
          TYPE-ERROR instead of ERROR.
          (get_fill_pointer): For array without fill-pointer signal TYPE-ERROR
          instead of ERROR.
          (ADJUST-ARRAY): Likewise.
          (SYS::VECTOR-INIT-START): For out-of-range argument, signal
          TYPE-ERROR instead of ERROR.
          (SYS::VECTOR-FE-INIT-END): Likewise.
        * list.d (SYS::LIST-INIT-START): For out-of-range argument, signal
          TYPE-ERROR instead of ERROR.
          (SYS::LIST-FE-INIT-END): Likewise.
        * sequence.d (valid_type): For an invalid sequence type, signal
          TYPE-ERROR instead of ERROR.
        * defs2.lsp (recognizable-sequence-type-p): New function.
        * record.d (fehler_index): Add argument `limit'. For an invalid
          index, signal TYPE-ERROR instead of ERROR.
          (test_index): Remove function.
          (record_up): Merge both checks of index into a single one.
          (structure_up): Likewise.
          (SYS::%STRUCTURE-REF): For an unbound slot, signal UNBOUND-SLOT
          instead of error, and mention the slot's name in the error message.
          (SYS::GENERIC-FUNCTION-EFFECTIVE-METHOD-FUNCTION): For an invalid
          argument, signal TYPE-ERROR instead of ERROR.
          (keyword_test): For an invalid keyword, signal KEYWORD-ERROR
          instead of ERROR.
          (CLOS::%SHARED-INITIALIZE): For an invalid arg count, signal
          PROGRAM-ERROR instead of ERROR.
          (CLOS::%REINITIALIZE-INSTANCE): Likewise.
          (CLOS::%INITIALIZE-INSTANCE): Likewise.
          (CLOS::%MAKE-INSTANCE): Likewise.
        * eval.d (progv): For a constant, signal PROGRAM-ERROR instead of
          ERROR.
          (get_closure): For a constant used as variable, signal PROGRAM-ERROR
          instead of ERROR.
          (coerce_function): Allow all function names, not only symbols.
          (fehler_key_badkw): Fix GC safety bug in previous patch.
          (eval1): For an invalid operator, signal SOURCE-PROGRAM-ERROR
          instead of ERROR. Tweak error message.
          (apply): Correct treatment of (SETF symbol) bound to an FFI
          function. For an invalid function, signal TYPE-ERROR instead of
          ERROR. Tweak error message.
          (fehler_apply_dotted): Signal PROGRAM-ERROR instead of ERROR.
          (funcall): Correct treatment of (SETF symbol) bound to an FFI
          function. For an invalid function, signal TYPE-ERROR instead of
          ERROR. Tweak error message.
          (interpret_bytecode_.svref_kein_index): Signal TYPE-ERROR instead
          of ERROR.
        * control.d (FUNCTION): Tweak error message.
          (COMPILER-LET): For a constant, signal PROGRAM-ERROR instead of
          ERROR.
          (SYSTEM::KEYWORD-TEST): For an invalid arg count, signal
          PROGRAM-ERROR instead of ERROR. For an invalid keyword, signal
          KEYWORD-ERROR instead of ERROR.
        * symbol.d (Symbol_function_checked): For a macro, signal
          UNDEFINED-FUNCTION instead of ERROR.
          (SYS::%PUTD): For an invalid argument, signal TYPE-ERROR instead
          of ERROR.
        * stream.d (fehler_bad_integer): Signal STREAM-ERROR instead of ERROR.
          (wr_ch_terminal1): Likewise.
          (fehler_str_in_adjusted): Likewise.
          (SYSTEM::MAKE-STRING-PUSH-STREAM): For invalid argument, signal
          TYPE-ERROR instead of ERROR.
          (rd_ch_buff_in): Signal STREAM-ERROR instead of ERROR.
          (check_open_file_stream): Follow synonym streams, and return the
          resulting stream. Signal TYPE-ERROR instead of ERROR.
          (FILE-POSITION, FILE-LENGTH): Adjust appropriately.
        * pathname.d (test_optional_host): Signal PARSE-ERROR instead of
          ERROR.
          (fehler_thing): Signal TYPE-ERROR instead of ERROR.
          (PARSE-NAMESTRING): Signal PARSE-ERROR instead of ERROR.
        * intelem.d (BN_ueberlauf): Signal ARITHMETIC-ERROR instead of ERROR.
        * intlog.d (ASH): Likewise.
        * intmal.d (mal_ueberlauf): Likewise.
        * intdiv.d (fehler_exquo): Likewise.
        * lfloat.d (fehler_LF_toolong): Likewise.

1998-05-31  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * acspecific.m4 (AC_PROG_CXX): Don't add "-O" to $CXX if it is
          already present.

1998-05-20  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * stream.d (INTERACTIVE-STREAM-P): Check for stream first.

1998-05-20  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * amiga.d: Assume <stdlib.h> is available.
        * fsubr.d (LISPSPECFORM_B): Assume ANSI C prototypes, remove support
          for old C compilers.
        * subr.d (subr_norest_function_args, subr_rest_function_args):
          Likewise.
        * genclisph.d (Lsuffix, ULsuffix, ULLsuffix, main): Likewise.
        * stream.d (redisplay_help, redisplay_line): Likewise.
        * unix.d (ioctl): Likewise.

1998-05-19  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * error.d (fehler_proper_list): New function.
        * lispbibl.d (fehler_proper_list): Declare it.
        * list.d (endp): Call it.
        * lispbibl.d (list_to_mv): Check for proper list.

1998-05-19  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * stream.d (fehler_input_stream, fehler_output_stream): New functions.
          (test_input_stream, test_output_stream, test_input_stream_args,
          test_output_stream_args): New macros.
          (MAKE-BROADCAST-STREAM, MAKE-CONCATENATED-STREAM,
          MAKE-TWO-WAY-STREAM, MAKE-ECHO-STREAM): Use them.

1998-05-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * array.d (fehler_subscript_range): Signal TYPE-ERROR instead of
          ERROR. Two more arguments.
          (fehler_index_range): Signal TYPE-ERROR instead of ERROR. One more
          argument.
          (test_subscripts, test_index, ROW-MAJOR-AREF, SYS::ROW-MAJOR-STORE,
          SYS::SET-FILL-POINTER): Update.
        * list.d (elt_up): Signal TYPE-ERROR instead of ERROR.
        * charstrg.d (fehler_cmp_exclusive, fehler_cmd_exclusive): Signal
          TYPE-ERROR instead of ERROR. One more argument.
          (test_index): Update.

1998-05-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * eval.d (fehler_specialform, fehler_macro): Signal UNDEFINED-FUNCTION
          instead of ERROR.

1998-05-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * error.d (fehler_lambda_expression): New function.
        * lispbibl.d (fehler_lambda_expression): Declare it.
        * eval.d (coerce_function): Accept symbols, but reject lambda
          expressions.
          (apply, funcall): Reject lambda expressions.
        * symbol.d (SYS::%PUTD): Likewise.
        * sequence.d (seq_boolop): Check that predicate is a function
          designator, and signal an error if not.

1998-05-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * eval.d (fehler_specialform, fehler_undefined): New functions.
          (eval1, apply, funcall, interpret_bytecode_:csf_unbound): Call them.

1998-05-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * eval.d (make_STACK_env): Move macro from here...
        * lispbibl.d (make_STACK_env): ... to here.
        * predtype.d (COERCE): When creating a function, give it the right
          declaration environment, not NIL.

1998-01-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * list.d (endp): Signal TYPE-ERROR instead of ERROR.

1998-05-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * defs3.lsp: Don't export COMMONP and COMPILER-LET.

1998-05-17  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * defs1.lsp (char-int-limit): New constant.
        * defs2.lsp (designator): New type. Export it.
        * charstrg.d (CHARACTER): Signal a TYPE-ERROR instead of ERROR.
        * predtype.d (COERCE): Likewise.

1998-05-17  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * sequence.d (valid_type): Return the desired length on the stack.
          (fehler_seqtype_length): New function.
          (MAKE-SEQUENCE, coerce_sequence, CONCATENATE, MAP, MERGE): Update.
          Compare desired and actual length.

1998-05-17  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * defs2.lsp (stream-input-element-type, stream-output-element-type,
          read-sequence, write-sequence): New functions.
          Export read-sequence, write-sequence.
        * defs3.lsp: Export read-sequence, write-sequence.

1998-05-17  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * compiler.lsp (var): New slot `assignedp'.
          (*declaration-types*): New declaration `sys::read-only'.
          (process-declarations): Treat the `sys::read-only' declaration.
          Return one more value.
          (*readonlys*): New variable.
          (ignore-check): Check whether `sys::read-only' declarations are
          satisfied.
          (c-LAMBDABODY, c-LET/LET*, c-LOCALLY, c-MULTIPLE-VALUE-BIND,
          c-SYMBOL-MACROLET, c-FUNCALL-INLINE): Bind *readonlys*.
        * macros2.lsp (with-input-from-string, with-open-file,
          with-open-stream, with-output-to-string): Add READ-ONLY declaration.

1998-05-17  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * conditio.lsp (parse-error, reader-error): New classes.
          Export PARSE-ERROR and READER-ERROR.
        * init.lsp: Export PARSE-ERROR and READER-ERROR.
        * defs3.lsp: Likewise.

1998-05-17  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * record.d (SLOT-VALUE): Return only the first return value of
          SLOT-UNBOUND.
          (SYS::SET-SLOT-VALUE): Ignore the return values of SLOT-MISSING.
          (SLOT-BOUNDP, SLOT-MAKUNBOUND): Return only the first return value
          of SLOT-MISSING.

1998-05-17  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * lfloat.d (LF_decode): Declare a subexpression as possibly unused.

1998-08-14  Jrg Hhle  <hoehle@tzd.telekom.de>

        * affi.d (C_mem_write): accept Foreign-Pointer as address.
        * rexx.d (C_rexx_put): fixed ~S/~ typo.
        * pathname.d (AmigaOS C_shell): use NLstring instead of CRLFstring.

1998-08-24  Sam Steingold  <sds@gnu.org>

        * init.lsp: Export *PRINT-RIGHT-MARGIN*.
        * defs3.lsp: Likewise.

1998-08-14  Jrg Hhle  <hoehle@tzd.telekom.de>

        * rexx.d (C_rexx_put): :host argument stack arithmetic was
          broken, renamed variables to hopefully avoid confusion.

1998-08-14  Jrg Hhle  <hoehle@tzd.telekom.de>

        * spvw.d (mymalloc): retry case not needed with !TYPECODES.

1998-08-05  Jrg Hhle  <hoehle@tzd.telekom.de>

        * pathname.d, amiga.d (C_shell): return command exit code,
          better signal handling under AmigaOS using SystemTags().

1998-08-12  Bruno Haible  <haible@ilog.fr>

        * lispbibl.d (NO_TYPECODES): Don't define if alignment_long < 4.

1998-08-09  Bruno Haible  <haible@ilog.fr>

        * spvw.d (copyright_notice): Bump date to 1998.

1998-08-09  Jrg Hhle  <hoehle@zeus.gmd.de>
            Bruno Haible  <haible@ilog.fr>

        * lispbibl.d (S_help_): Change definition in the case of NO_TYPECODES
          so that it can be used as an initializer for a static variable in
          gcc-2.5.8.
        * genclisph.d (main): Likewise.

1998-08-08  Jrg Hhle  <hoehle@tzd.telekom.de>

        * lispbibl.d (define) TYPECODES is default for MC68000.
        * spvw.d (version_string) added !TYPECODES recognition.
          (retry_allocmemflag) not needed with !TYPECODES.

1998-08-05  Jrg Hhle  <hoehle@zeus.gmd.de>

        * lispbibl.d (SIXBIT_TYPECODES): Fix a collision between
          case_symbolwithflags and other typecodes, introduced by the
          NO_TYPECODES patches.
        * spvw.d (speicher_laenge): Remove overlapping case values.

1998-08-05  Bruno Haible  <haible@ilog.fr>

        * spvw.d (main): Leave more room between the executable and the heap,
          for malloc(), if SUN4_29.

1998-08-05  Bruno Haible  <haible@ilog.fr>

        * debug.d (SYS::%ROOM): Don't assume that the byte counts fit into
          fixnums.

1998-08-05  Jrg Hhle  <hoehle@zeus.gmd.de>

        * affi.d (affi_nonzerop): Fix typo: BN_positivep.

1998-08-03  Bruno Haible  <haible@ilog.fr>

        * aclocal.m4 (CL_DYNLOAD): Check for const in dlsym declaration.
        * unixconf.h: Define DLSYM_CONST.
        * unix.d (dlsym): Use DLSYM_CONST.

1998-08-03  Bruno Haible  <haible@ilog.fr>

        * makemake.in (NOASM): Don't define on Solaris/x86.
          (ASM_FILTER): Fix so it works on Solaris/x86.

1998-08-01  Bruno Haible  <haible@ilog.fr>

        * lispbibl.d (C_CODE_ALIGNMENT): Define to 2 for HPPA.
          (make_machine_code, TheMachineCode): Special case for HPPA.
        * lispbibl.d (varobject_type): Workaround gcc-2.8.1 bug.

1998-08-01  Bruno Haible  <haible@ilog.fr>

        * aclocal.m4 (CL_RUSAGE): Prefer RUSAGE_WHO_T="int" to
          RUSAGE_WHO_T="enum __rusage_who".

1998-08-01  Bruno Haible  <haible@ilog.fr>

       * makemake.in (DEEMA): Add _EMA_ in more places.

1998-08-01  Bruno Haible  <haible@ilog.fr>

        * lispbibl.d: Accept __unix__ as an alternative for __unix.

1998-08-01  Bruno Haible  <haible@ilog.fr>

        * clx/mit-clx/package.lsp: Shadow BOOLEAN and don't export it.

1998-07-31  Bruno Haible  <haible@ilog.fr>

        * control.d (make_variable_frame): Don't call Car(NIL).

1998-07-16  Sam Steingold  <sds@goems.com>

        * spvw.d, constsym.d: new symbol print_right_margin
          (ANSI CL's *print-right-margin*).
        * io.d (right_margin): New function.
          (klammer_zu, justify_end_eng, justify_end_weit): Use it.
          (pr_level): Turn into a macro.
          (write, write_to_string): added :right-margin.
        * subr.d (write, write_to_string): added :right-margin.
        * subrkw.d (write, write_to_string): added :right-margin.
        * constobj.d (version): bumped to 19980715.
        * compiler.lsp (subr-info): added :right-margin to write and
          write_to_string;
          (c-eval-when-compile, compile-toplevel-form, finalize-coutput-file):
          added `:right-margin 79' to the `write' calls.

1998-07-16  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * eval.d (get_closure): Don't call augment_decl_env with argument NIL.

1998-07-05  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (posfixnum_to_L, fixnum_to_L): Add a cast to avoid
          compilation warnings.
        * aridecl.d (FN_value_mask): Likewise.
        * sfloat.d (SF_futruncate_SF): Likewise.
        * genclisph.d (main): Adjust.

1998-06-29  Sam Steingold  <sds@usa.net>

        * compiler.lsp (compile-file): in ANSI CL, compile-file is
          required to return 3 values.

1998-06-26  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        Since keywordp is not called in funcall/apply/interpret_bytecode any
        more, it doesn't need to occupy a bit in the symbol flags.
        * lispbibl.d (keyword_bit_t, keyword_bit_f, keyword_bit_hf): Remove.
          (keywordp): Rewrite.
        * spvw.d (case_symbolwithflags): Remove cases with keyword_bit.
        * package.d (make_present): Don't set keyword_bit.

1998-06-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d: Define NO_TYPECODES by default for 32-bit machines.
        * configure: Don't pass option --with-wide to makemake.
        * makemake.in: Drop support for --with-wide.
        * clisp-link.in: Likewise.
        * _distmakefile: Likewise.
        * regexp/link.sh, regexp/Makefile.in: Likewise.
        * wildcard/link.sh, wildcard/Makefile.in: Likewise.
        * queens/link.sh, queens/Makefile: Likewise.
        * linuxlibc5/link.sh, linuxlibc5/Makefile: Likewise.
        * linuxlibc6/link.sh, linuxlibc6/Makefile: Likewise.
        * clx/mit-clx/link.sh, clx/mit-clx/Makefile.clisp: Likewise.
        * clx/new-clx/link.sh, clx/new-clx/Makefile: Likewise.
        * doc/module.txt, impnotes.html: Update.
        * _clisp.c: Ignore option -W.

1998-06-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * stream.d (finish_output_file): Fix typo.
        * makemake.in: For Win32, replace
          "-I../ffcall/avcall -I../ffcall/callback" with "-I../callback".
          For Unix, remove "-Iavcall -Icallback".
        * win32msvc/INSTALL: Simplify instructions.

1998-06-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        In the NO_TYPECODES model, add support for machine where the alignment
        of C functions is less than 4.
        * lispbibl.d (C_CODE_ALIGNMENT, log2_C_CODE_ALIGNMENT): New macros.
          (NO_TYPECODES): Remove CPU constraint.
          (make_machine_code): New macro.
          (TheMachineCode): New macro.
          (ThePseudofun): Use it.
        * spvw.d (verify_code_alignment): New macro.
          (fehler_code_alignment): New function.
          (init_symbol_functions): Call verify_code_alignment.
        * list.d (sublis_assoc): Use TheMachineCode instead of TheMachine.
          (SUBLIS, NSUBLIS): Use make_machine_code instead of make_machine.
        * stream.d (P): Likewise.

1998-06-25  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * lispbibl.d (Fsubr): Move the C code address from the recdata[] part
          to the non-Lisp-object part.
          (fsubr_length): Reduce by 1.
          (fsubr_xlength): Define.
          (allocate_fsubr): Update accordingly.
        * misc.d (SYS::CODE-ADDRESS-OF): Drop TheMachine on fsubr->function.
        * eval.d (eval_fsubr): Likewise.
        * spvw.d (do_aktualisiere_record): If aktualisiere_fsubr_function is
          TRUE and the object is an Fsubr, call the aktualisiere_fs_function
          macro.
          (gar_col_normal): No need for aktualisiere_fsubr_function here.
          (gar_col_compact): Likewise.
          (move_conses): Likewise.
          (init_symbol_functions): Drop make_machine for fsubr->function.
          (memdump_reloc_header): Add support for relocation Fsubr code
          addresses.
          (savemem): Likewise.
          (loadmem_aktualisiere): Don't look in old_fsubr_tab when updating
          a machine pointer.
          (loadmem_aktualisiere_fsubr): New function.
          (loadmem_from_handle): During aktualisiere_varobjects or during
          fast relocation phase, call loadmem_aktualisiere_fsubr.

1998-06-24  Bruno Haible  <bruno@linuix.math.u-bordeaux.fr>

        * spvw.d (make_ratio): Compute positivep(num) before doing the
          memory allocation.
        * comptran.d (R_R_atanh_R_R): Do not call R_minusp on a non-GC-safe
          object.
        * flo_rest.d (F_integer_decode_float_I_I_I): Likewise.

1998-06-20  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * io.d (pr_orecord): Reindent.
        * constobj.d (fpcontagion_warn_string): Translate.
        * macros1.lsp (do/do*-expand): Likewise.
        * macros2.lsp (parenthesize-keys et al.): Likewise.
        * conditio.lsp (parenthesize-keys et al.): Likewise.

1998-06-20  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * arilev1c.d (eqv_loop_up, nand_loop_up): Fix typo in declaration.

1998-06-20  Gilbert Baumann  <unk6@rz.uni-karlsruhe.de>

        * io.d (SYS::REAL-LISTEN): New function.

1998-06-15  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * lispbibl.d: Remove the last vestiges of STDWIN.
        * configure: Likewise.
        * clx/new-clx/clx.f, clx/new-clx/e2d.c: Likewise.

1998-06-10  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* io.d (pr_enter_1, pr_enter_2, pr_enter): New functions, generalizing
	  prin1a, prin1b, prin1.
	  (pr_external_1, pr_external_2): Moved.
	  (pr_instance): Moved.
	  (pr_structure_default): New function.
	  (SYS::PRINT-STRUCTURE): Call it through pr_enter.
	  (prin1a, prin1b): Remove functions.
	  (prin1): Use pr_enter.

1998-07-08  Sam Steingold  <sds@goems.com>

        * array.d: fixed the grammar of some English messages.

1998-05-31  Pierpaolo Bernardi  <bernardp@cli.di.unipi.it>

	* macros2.lsp (with-output-to-string): The STRING parameter
	  now accept NIL as value (with the same meaning as if it were
	  unsupplied). {Old|New} behavior {was CLtL1|is ANSI} compliant.

1998-05-25  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* lispbibl.d: Rename immediate_type_p to gcinvariant_type_p.
	* spvw.d: Update.

1998-05-24  Pierpaolo Bernardi  <bernardp@cli.di.unipi.it>

	* macros1.lsp (do/do*-expand): Barf on bad syntax.

1998-05-20  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * dbxtypes.d: Remove file.
        * makemake.in: Update.
        * gettext/po/Makefile.devel (DSOURCES): Update.

1998-05-20  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * windows.d, wintext.d, winstat.d, winmain.d, winaux.d: Remove files.
        * lispbibl.d, genclisph.d, msdos.d, makemake.in, spvw.d, pathname.d,
          stream.d, pseudofun.d, time.d: Remove support for Windows 3.1.

1998-05-20  Sam Steingold  <sds@usa.net>

	* io.d (pr_orecord): print PATHNAME with #P syntax, as
	  per ANSI CL <PRINT-READABLY-BEHAVIOR:CLARIFY>;

1998-05-19  Sam Steingold  <sds@usa.net>

	Implement the new :execute, :load-toplevel and :compile-toplevel
	keywords for eval-when as synonyms for eval, load and compile
	respectively.  The symantics is old.
	* constsym.d: add :execute, :load-toplevel and :compile-toplevel
	  keywords.
	* control.d (eval_when): handle :execute and :compile-toplevel.
	* init.lsp (%expand-form, (%put '%expand 'EVAL-WHEN)): handle
	  :compile-toplevel.
	* compiler.lsp (c-EVAL-WHEN): handle the three new keywords as
	  synonyms to the old symbols.

1998-05-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* control.d (SPECIAL-OPERATOR-P): Renamed from SPECIAL-FORM-P.
	* eval.d (FUNTAB): Update.
	* compiler.lsp (funtab, subr-info): Update.
	  (c-form-table, c-form, c-DIRECT-FUNCTION-CALL,
	  inline-callable-function-p, c-APPLY): Use SPECIAL-OPERATOR-P.
	  (note-function-used): Generate a warning for SPECIAL-FORM-P.
	* init.lsp: Export both SPECIAL-OPERATOR-P and SPECIAL-FORM-P.
	  (remove-old-definitions, %expand-form, defun): Use
	  SPECIAL-OPERATOR-P.
	* defs1.lsp (special-form-p): Define as an alias for
	  special-operator-p.
	* user2.lsp (fbound-string, describe): Use SPECIAL-OPERATOR-P.
	* trace.lsp (trace1): Use SPECIAL-OPERATOR-P.
	* defs3.lsp: Export SPECIAL-OPERATOR-P only.

1998-05-17  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* genclisph.d (main): Define sintB.

1998-05-16  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* clx/new-clx/clx.f: Update to use the new macro names.

	* realtran.d (R_cos_sin_R_R): Shift a fixnum by oint_data_shift, not
	  oint_addr_shift.

	New type encoding scheme NO_TYPECODES.
	* lispbibl.d (TYPECODES): Define if NO_TYPECODES is not defined.
	  (oint_type_*, oint_addr_*, oint_data_*): Provide alternative
	  definitions for no TYPECODES.
	  (machine_bias, subr_bias, varobject_bias, cons_bias, immediate_bias,
	  nonimmediate_bias_mask, read_label_type, immediate_object_p,
	  gcinvariant_object_p): New macros.
	  (fixnum_type, sfloat_type, char_type, system_type, sign_bit_o,
	  bignum_bit_o, type_data_object, type_zero_oint, garcol_bit_o):
	  Provide alternative definitions.
	  (varobject_alignment): Must be at least 4 if no TYPECODES.
	  (active_bit, dynam_bit, svar_bit, NO_symbolflags): Define if no
	  TYPECODES.
	  (constant_bit_f, special_bit_f, keyword_bit_f): New macros.
	  (SPVW_MIXED): Define if no TYPECODES.
	  (case_mut_*): New macros.
	  (_case_structure, _case_stream): Provide alternative definitions.
	  (intWCsize, uintWC, sintWC): Provide alternative definitions.
	  (VAROBJECT_HEADER, header_flags, constant_bit_hf, special_bit_hf,
	  keyword_bit_hf): Provide alternative definitions.
	  (varobject_type, lrecord_tfl, srecord_tfl, xrecord_tfl): New macros.
	  (record_, record_type, record_flags, record_flags_*): Provide
	  alternative definitions.
	  (LRECORD_HEADER, lrecord_, Lrecord, lrecord_length): New definitions.
	  (SRECORD_HEADER, srecord_length, XRECORD_HEADER, xrecord_length,
	  xrecord_xlength): Provide alternative definitions.
	  (Rectype_Sbvector, Rectype_Sstring, Rectype_Svector, Rectype_mdarray,
	  Rectype_bvector, Rectype_string, Rectype_vector, Rectype_Bignum,
	  Rectype_Lfloat, Rectype_Dfloat, Rectype_Ffloat, Rectype_Symbol): New
	  enum values.
	  (char_int, bignum_, bignum_length, lfloat_, lfloat_length): Provide
	  alternative definitions.
	  (sarray_, sbvector_, sstring_, svector_): Use LRECORD_HEADER.
	  (sarray_length): Use lrecord_length.
	  (iarray_, iarray_rank, iarray_flags, iarray_flags_*, Array_type,
	  Array_type_*): Provide alternative definitions.
	  (Codevec): Use LRECORD_HEADER.
	  (make_read_label, read_label_integer_p, make_machine, The*): Provide
	  alternative definitions.
	  (consp, mconsp, atomp, matomp): Provide alternative definitions.
	  (varobjectp, immediate_number_p): New macros.
	  (symbolp, numberp, vectorp, simplep, array_simplep, simple_vector_p,
	  general_vector_p, simple_string_p, stringp, simple_bit_vector_p,
	  bit_vector_p, byte_vector_p, general_byte_vector_p, arrayp,
	  mdarrayp, if_recordp, closurep, instancep, orecordp, charp, subrp,
	  framepointerp): Provide alternative definitions.
	  (machinep, read_label_p, systemp): New macros.
	  (if_realp, if_rationalp, integerp, fixnump, posfixnump, bignump):
	  Provide alternative definitions.
	  (posbignump): New macro.
	  (ratiop, floatp, short_float_p, single_float_p, double_float_p,
	  long_float_p, complexp, positivep): Provide alternative definitions.
	  (case_Rectype_*_above): New macros.
	  (R_sign): Provide alternative definition.
	  (FN_sign, BN_sign, RT_sign, SF_sign, FF_sign, DF_sign, LF_sign): New
	  macros.
	  (same_sign_p, N_floatp, N_integerp, R_rationalp, R_floatp, R_minusp,
	  RA_integerp, RA_ratiop, I_bignump, I_fixnump): Provide alternative
	  definitions.
	  (FN_positivep, BN_positivep, I_I_bignums_p): New macros.
	  (sint8_p, sint16_p, uint32_p, sint32_p, uint64_p, sint64_p): Use
	  the new macros.
	  (allocate_srecord, allocate_xrecord, subr_tab_ptr_as_object,
	  S_help_): Provide alternative definitions.
	  (FB7..FB1, make_framepointer, topofframe, uTheFramepointer,
	  framecode, fcint): Provide alternative definitions.
	  (framebottomword): Add third argument.
	  (framebottomword, finish_frame): Provide alternative definitions.
	  (SAVE_REGISTERS, dynamic_bind): Use finish_frame.
	  (finish_entry_frame): Update.
	* genclisph.d: Update.
	  (SP): Move the asm string outside of the printf string.
	* spvw.d (symbol_tab_ptr_as_object): Provide alternative definition.
	  (mem): heapnr_from_type only if TYPECODES.
	  (size_ffloat, size_dfloat): Provide alternative definitions.
	  (speicher_laenge): Provide alternative type dispatch.
	  (varobject_bytelength): Use TheVarobject instead of pointable.
	  (in_old_generation): Fix parenthesizing inside macro.
	  (gc_mark): Rewrite using macros. Provide alternative type dispatch.
	  (pointer_as_object, pointer_was_object): Provide alternative
	  definitions.
	  (walk_area_iarray): Renamed from walk_area_array.
	  (walk_area): Provide alternative definition.
	  (alive): Provide alternative type dispatch.
	  (gc_morris2, gc_morris3): Provide alternative body.
	  (set_GCself): Provide alternative definition.
	  (gc_sweep1_varobject_page): Some modifications if no TYPECODES.
	  (aktualisiere, aktualisiere_varobject): Provide alternative
	  definitions.
	  (build_old_generation_cache): Provide alternative type dispatch.
	  (build_old_generation_cache:cache_at): Provide alternative
	  definition.
	  (gar_col_normal): Remove unused variable.
	  (gc_compact_from_varobject_page): Some modifications if no TYPECODES.
	  (move_conses:aktualisiere): Provide alternative definition.
	  (pointable_usable_test): Always TRUE if no TYPECODES.
	  (bias_type_pointer_object): New macro.
	  (allocate_TRUE, allocate_FALSE): Use it.
	  (allocate_symbol, allocate_vector, allocate_bit_vector,
	  allocate_string, allocate_iarray): Provide alternative body.
	  (allocate_srecord_, allocate_xrecord_): Provide alternative
	  definitions.
	  (allocate_bignum, allocate_ffloat, allocate_dfloat, allocate_lfloat,
	  make_ratio, make_complex): Provide alternative body.
	  (get_circ_mark, get_circ_unmark, subst, subst_circ_mark,
	  subst_circ_unmark): Provide alternative type dispatch.
	  (map_heap_objects:varobject_typecode_at,cons_typecode_at,
	  with_typecode): Provide alternative definitions.
	  (init_symbol_tab_1): Some modifications if no TYPECODES.
	  (main): Initialize mem.heapnr_from_type only if TYPECODES.
	  (main): If no TYPECODES, use only a 2^(oint_addr_len-1) address
	  range.
	  (memflags): Include the settings of WIDE and TYPECODES.
	  (memdump_header, savemem): No _cons_type etc. if no TYPECODES.
	  (addr_mask, offset_pages_len): Fix for oint_addr_len==32.
	  (loadmem_aktualisiere): Provide alternative type dispatch.
	  (loadmem_from_handle): No _cons_type etc. if no TYPECODES.
	  Provide alternative for old_symbol_tab_o.
	* eval.d (eval1): Provide alternative type dispatch.
	* control.d (CONSTANTP): Provide alternative type dispatch.
	* stream.d (P): Provide alternative definition.
	* io.d (prin_object_dispatch, pr_orecord): Provide alternative type
	  dispatch.
	  (pr_readlabel): Some modifications if no TYPECODES.
	* array.d (bit_up, test_displaced): Modify type dispatch.
	* hashtabl.d (hashcode2, hashcode3_atom, hashcode4_atom, sxhash_atom):
	  Provide alternative type dispatch.
	* charstrg.d (coerce_ss): Provide alternative type dispatch.
	* predtype.d (eql, equal, equalp, COMMONP, TYPE-OF, CLOS:CLASS-OF,
	  heap_statistics_mapper): Provide alternative type dispatch.
	* aridecl.d: Use sign_bit_o instead of vorz_bit_o if it applies to
	  fixnums or sfloats only.
	* intelem.d (I_to_UL, I_to_L, I_to_UQ, I_to_Q): Provide alternative
	  type dispatch. Use FN_sign, BN_sign where possible.
	  Use sign_bit_o instead of vorz_bit_o if it applies to fixnums only.
	* intlog.d (I_to_DS_n_): Use FN_sign.
	* intplus.d (I_I_plus_I, I_minus_I, I_I_minus_I): Use FN_sign.
	* intmal.d (I_I_mal_I): Use FN_sign.
	* sfloat.d (SF_decode): Use SF_sign.
	  (RA_to_SF): Use RT_sign.
	* ffloat.d (RA_to_FF): Likewise.
	* dfloat.d (RA_to_DF): Likewise.
	* lfloat.d (LF_decode, LF_ftruncate_LF, LF_futruncate_LF,
	  LF_fround_LF, LF_minus_LF, LF_shorten_LF, LF_extend_LF,
	  LF_LF_plus_LF, LF_LF_minus_LF, LF_LF_mal_LF, LF_LF_durch_LF):
	  Use LF_sign. Twiddle sign bit only if SPVW_MIXED && TYPECODES.
	  (RA_to_LF): Use RT_sign.
	* flo_konv.d: Use sign_bit_o instead of vorz_bit_o if it applies to
	  fixnums or sfloats only.
	* flo_rest.d (floatcase): Provide alternative definition.
	  (LF_I_scale_float_LF): Provide alternative type dispatch.
	  Use LF_sign.
	  (F_float_sign_F): Use SF_sign, FF_sign, DF_sign, LF_sign.
	* realelem.d (I_I_gleich): Use I_I_bignums_p.
	  (R_signum_R): Use LF_sign.
	* constsym.d (LISPSYM_B): Provide alternative definition.
	* affi.d (affi_call_argsa, SYS::NZERO-POINTER-P): Provide alternative
	  type dispatch.

1998-05-12  Sam Steingold  <sds@usa.net>

	* format.lsp (format-parse-cs, formatter-main-1): handle the ~//
	  format directive;
	  (format-slash, format-get-symbol): new functions that do the job.

1998-05-11  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* stream.d (SOCKET-SERVER, SOCKET-STREAM-PEERNAME): Remove unused
	  variables.

1998-05-10  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* lispbibl.d (iarray_rank, Iarray_rank, iarray_flags, Iarray_flags,
	  iarray_flags_*): New macros.
	* lispbibl.d, genclisph.d, spvw.d, io.d, stream.d, array.d,
	  hashtabl.d, sequence.d, charstrg.d, predtype.d, foreign.d, affi.d:
	  Update.

	* lispbibl.d (Array_type, Array_type_*): New macros.
	* io.d, array.d, predtype.d: Update.

	* lispbibl.d (oint_symbolflags_shift #ifdef NO_symbolflags): Define
	  as oint_data_shift, not oint_addr_shift.
	* spvw.d (gc_markphase, aktualisiere_STACK): Conditionalize more
	  code #ifndef NO_symbolflags.
	* debug.d (print_stackitem): Likewise.

	* spvw.d (memdump_header): Put _memflags right after _magic.
	  (savemem, loadmem_from_handle): Update.

	* spvw.d (pointer_as_object, pointer_was_object): New macros.
	  (gc_compact_cons_page, gc_sweep1_varobject_page, aktualisiere,
	  gc_sweep2_varobject_page, aktualisiere_page,
	  gc_compact_from_varobject_page, gc_compact_from_cons_page): Use them.

	* lispbibl.d (make_read_label, read_label_integer_p): New macros.
	  (framepointerp): New macro, renamed from stack_env_p.
	  (systemp): Remove macro.
	* eval.d, control.d, io.d, debug.d: Update.

	* eval.d (apply, funcall): Use abstract type test macros, and
	  improve the generated code a little bit.

	* lispbibl.d (record_type, Record_type, record_flags, Record_flags,
	  record_flags_*, srecord_length, Srecord_length, xrecord_length,
	  xrecord_xlength, Xrecord_length, Xrecord_xlength): New macros.
	* lispbibl.d, genclisph.d, spvw.d, eval.d, io.d, stream.d,
	  hashtabl.d, record.d, predtype.d, foreign.d, affi.d: Update.

	* spvw.d (do_aktualisiere_symbol, do_aktualisiere_svector,
	  do_aktualisiere_iarray, do_aktualisiere_record): New macros.
	  (aktualisiere_*): Use them.
	  (aktualisiere_iarray): Renamed from aktualisiere_array.

1998-05-09  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* stream.d (fehler_terminal_raw): Define function only when needed.

	* io.d (pr_readlabel, pr_framepointer): New functions, split out from
	  pr_system.
	  (pr_system): Much smaller.
	  (prin_object_dispatch): Distinguish system/read-label/framepointer
	  here.

	* lispbibl.d (framecode): New macro.
	* lispbibl.d, spvw.d, eval.d, control.d, eval.d: Use it.

	* lispbibl.d (fcint): New type.
	* eval.d: Use it.

	* lispbibl.d (msymbolp, mnumberp, mvectorp, m_simple_vector_p,
	  m_general_vector_p, m_simple_string_p, mstringp,
	  m_simple_bit_vector_p, m_bit_vector_p, marray1p, if_mrecordp,
	  mclosurep, minstancep, mstructurep, mstreamp, morecordp, mcharp,
	  msubrp, mintegerp, mfixnump, mposfixnump, mbignump, mratiop,
	  mfloatp, m_short_float_p, m_single_float_p, m_double_float_p,
	  m_long_float_p, mcomplexp, mpositivep, N_mfloatp, N_mintegerp,
	  R_mrationalp, R_mfloatp, R_mminusp, RA_mintegerp, RA_mratiop,
	  I_mbignump, I_mfixnump, N_mrealp, N_mcomplexp): Remove macros.
	* genclisph.d: Likewise.
	* spvw.d, eval.d, pathname.d, stream.d, io.d, array.d, hashtabl.d,
	  list.d, package.d, record.d, sequence.d, charstrg.d, debug.d,
	  error.d, misc.d, predtype.d, symbol.d, rexx.d, foreign.d,
	  intdiv.d, realelem.d, realtran.d, compelem.d, comptran.d: Update.

	* lispbibl.d (if_vectorp, if_simplep): Remove macros.
	* array.d, predtype.d: Update.

	* lispbibl.d: Document that any of the type test macros can cause
	  multiple evaluation of their argument.
	* predtype.d: Don't do type tests directly on popSTACK().

	* lispbibl.d (allocate_closure, allocate_cclosure_copy): New macros.
	* eval.d (get_closure, interpret_bytecode_): Use them.
	* io.d (GET-MACRO-CHARACTER): Use them.
	* record.d (SYS::%MAKE-CLOSURE,
	  SYS::GENERIC-FUNCTION-EFFECTIVE-METHOD-FUNCTION): Use them.

	* spvw.d (walk_area_cons, walk_area_symbol, walk_area_array,
	  walk_area_svector, walk_area_svector): New macros.
	  (walk_area): Simplify, use them.

	* lispbibl.d (byte_vector_p, general_byte_vector_p): New macros.
	* genclisph.d: Likewise.
	* stream.d (test_n_bytes_args): Use them.
	* sequence.d (get_seq_type): Likewise.
	* affi.d (SYS::MEM-READ, SYS::MEM-WRITE): Likewise.
	* predtype.d (equalp): Likewise.
	* foreign.d (convert_to_foreign): Likewise.

	* lispbibl.d (mdarray_type): Renamed from array_type.
	  (case_mdarray): Renamed from case_array1.
	  (Iarray): Renamed from Array.
	  (TheIarray): Renamed from TheArray.
	  (mdarrayp): Renamed from array1p.
	  (allocate_iarray): Renamed from allocate_array.
	  (iarray_displace_check): Renamed from array1_displace_check.
	* genclisph.d, spvw.d, stream.d, io.d, array.d, hashtabl.d, sequence.d,
	  charstrg.d, predtype.d, foreign.d, affi.d: Update.

	* lispbibl.d: Replace documentation of type encoding by new one.

	* lispbibl.d: Move the code defining SPVW_* before the definition of
	  the case_* macros.

	* lispbibl.d (uintWC, sintWC): New types, used for bignum length,
	  lfloat length, iarray rank.
	  (uintWCoverflow): New macro, replaces uintCoverflow.
	  (arrayrank_limit_1): Change value.
	* intelem.d (NUDS_to_I, UDS_to_I): Lengths fit in an uintWC, not uintC.
	* intlog.d (I_I_ash_I, I_logcount_I, I_integer_length,
	  I_integer_length_I): Likewise.
	* intplus.d (DS_1_plus, DS_minus1_plus, I_I_plus_I, I_I_minus_I):
	  Likewise.
	* intmal.d (UDS_UDS_mal_UDS): Likewise.
	* lfloat.d (LF_LF_durch_LF, LF_sqrt_LF, LF_to_I, I_to_LF, RA_to_LF):
	  Likewise.
	* flo_rest.d (lf_len_extend, F_float_digits_I, F_float_precision_I,
	  F_integer_decode_float_I_I_I): Likewise.
	* realtran.d (pi_F_float_F, lf_len_extend2): Likewise.
	* realrand.d (I_random_I): Likewise.
	* intread.d (DIGITS_to_I): Likewise.
	* lisparit.d (mal_10_plus_x, FLOAT-DIGITS, SYS::%SET-LONG-FLOAT-DIGITS,
	  log_digits): Likewise.
	* pathname.d (OPEN): Likewise.

	* constsym.d: Remove LISPSYM_B. Rename LISPSYM_C to LISPSYM_B.
	  Rename LISPSYM_D to LISPSYM_C. Rename LISPSYM_E to LISPSYM_D.
	* spvwtabs.d (symbol_tab_data): Update.
	* spvw.d (init_symbol_tab_2): Update.

	* lispbibl.d: Reorganize declarations of Cons, Ratio, Complex.
	  (Rectype_*): Now enum values.
	  (rectype_limit): New enum value.
	  (Record_length): Use rectype_limit.
	* spvw.d (speicher_laenge, speicher_laenge_record): Use rectype_limit.
	  (walk_area_record, aktualisiere_varobject): Likewise.
	  (build_old_generation_cache, allocate_srecord_, allocate_xrecord_):
	  Likewise.
	* predtype.d (equalp): Likewise.
	  (COMMONP): Put #if around "case Rectype_*".

	* spvw.d (gc_mark): Start macroizing this function.

	If SPVW_MIXED, put Ratio and Complex among the Varobjects.
	* lispbibl.d (_case_ratio, _case_complex): New macros (ugly).
	  (case_pair): New macro.
	  (Rectype_Ratio, Rectype_Complex): New enum values.
	  (ratio_, complex_): Conditionally add a XRECORD_HEADER.
	* genclisph.d: Update.
	* spvw.d (MM_TYPECASES): Update.
	  (gc_mark, walk_area, alive, gc_morris2, gc_morris3): Use case_pair.
	  (aktualisiere, main, loadmem_aktualisiere): Likewise.
	  (make_ratio, make_complex): Implement if SPVW_MIXED.
	  (subst, subst_circ_mark, subst_circ_unmark): Don't use case_record.
	* predtype.d (enum_hs_ratio, enum_hs_complex): Now unconditional.
	  (heap_statistics_mapper): Update.
	* constobj.d: Update.

	* lispbibl.d (make_machine): New macro.
	  (nullobj): Use it.
	* genclisph.d, spvw.d, list.d: Update.

	* lispbibl.d (bignum_length, Bignum_length): New macros.
	* lispbibl.d, genclisph.d, spvw.d, stream.d, hashtabl.d, predtype.d,
	  intelem.d, intlog.d, intcomp.d, intplus.d, flo_rest.d, realelem.d,
	  realtran.d: Update.

	* lispbibl.d (lfloat_length, Lfloat_length): New macros.
	* spvw.d, predtype.d, lfloat.d, flo_rest.d, realelem.d, realtran.d,
	  compelem.d, lisparit.d: Update.

	* lispbibl.d (sarray_length, Sarray_length): New macros.
	* lispbibl.d, array.d: Update.

	* lispbibl.d (sbvector_length, Sbvector_length): New macros.
	* spvw.d, io.d, array.d, record.d: Update.

	* lispbibl.d (sstring_length, Sstring_length): New macros.
	* spvw.d, io.d, pathname.d, stream.d, array.d, charstrg.d, rexx.d:
	  Update.

	* lispbibl.d (svector_length, Svector_length): New macros.
	* spvw.d, eval.d, control.d, io.d, array.d, hashtabl.d, package.d,
	  debug.d, error.d, predtype.d, rexx.d, foreign.d, affi.d: Update.

1998-05-09  Pierpaolo Bernardi  <bernardp@cli.di.unipi.it>

	* user1.lsp: move *PROMPT-WITH-PACKAGE* from SYS to LISP,
	  and export it

1998-05-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* ffcall: Add support for DEC Alpha running Linux (libc6): Change all
	  ".rdata" in assembler output to ".data".

1998-05-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* socket.d: Don't declare connect() when using glibc2.
	* aclocal.m4 (CL_TCPCONN): Allow setsockopt to be declared with
	  socklen_t = unsigned int.

1998-05-08  Sam Steingold  <sds@usa.net>

	* constsym.d (*floating-point-contagion-ansi*): New variable.
	* constobj.d (fpcontagion_warn_string): Change wording.
	* flo_rest.d (warn_floating_point_contagion): Change appropriately.
	  (GEN_F_op2, GEN_LF_op2_0): Implement ANSI compliant float contagion.
	* realelem.d (R_R_contagion_R): Likewise.
	* lisparit.d (init_arith): Initialize *floating-point-contagion-ansi*.

1998-05-08  Pierpaolo Bernardi  <bernardp@cli.di.unipi.it>

	* pathname.d (ensure_directories_exist): Changed arglist from
	  "&optional verbose" to "&key verbose"
	* subr.d: Likewise.
	* subrkw.d: Added entry for ensure_directories_exist.
	* constsym.d: Added the keyword :VERBOSE.

1998-05-07  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* aclocal.m4 (CL_RUSAGE): Check for getrusage declaration. Define
	  RUSAGE_WHO_T.
	* unixconf.h.in (RUSAGE_WHO_T): New macro.
	* unix.d (getrusage): Change declaration.

1998-05-05  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* aclocal.m4 (CL_DYNLOAD): Check for dlerror declaration.
	* configure.in, unixconf.h.in: CL_DYNLOAD sets DLERROR_CONST.
	* unix.d (dlerror): Use DLERROR_CONST in the declaration.

1997-05-01  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* socket.d (create_server_socket): Avoid an EADDRINUSE error in some
	  harmless cases.
	  (setsockopt): Declare.

1998-05-01  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* init.lsp: Load amigasock.lsp by default.

1998-04-25  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* predtype.d (CLASS-OF): Change so that (class-of (sys::make-anode))
	  returns the class STRUCTURE-OBJECT instead of the class T.

1998-04-25  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* modules/bindings/linux/linux.lsp: Make LINUX package case sensitive.
	  (fd_isset): Use lisp:floor, not linux:floor.
	  (EXIT_SUCCESS): Set to 0.

1998-04-25  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* compiler.lsp (c-form): Respect NOTINLINE declarations on macros.

1998-04-25  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* flo_rest.d (warn_floating_point_contagion): New function.
	  (GEN_F_op2): Warn when floating point contagion occurs.
	* realelem.d (R_R_contagion_R): Likewise.
	* constsym.d (*warn-on-floating-point-contagion*): New variable.
	* lisparit.d (init_arith): Initialize it.
	  (init_arith): Initialize *inhibit-floating-point-underflow* here,
	  not in set_lf_digits().
	* constobj.d (fpcontagion_warn_string): New.

1998-04-20  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* makemake.in: Rename bindings/linux to bindings/linuxlibc5.
	* bindings/linuxlibc6: New module.

1998-04-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * conditio.lsp (floating-point-inexact,
          floating-point-invalid-operation): New classes.
        * init.lsp: Export their names.
        * defs3.lsp: Likewise.

1998-04-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* clos.lsp: Export CLOS:METHOD.
	  (method): New structure class.
	  (standard-method): Inherit from it.
	* init.lsp: Export CLOS:METHOD.
	* defs3.lsp: Likewise.

1998-04-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* predtype.d (TYPE-OF, CLASS-OF): Use CLOS::CLOSCLASS instead of
	  CLOS::CLASS.
	* record.d (fehler_keine_klasse): Use CLOS:CLASS.
	* clos.lsp (find-class, setf find-class, ensure-class): Use
	  CLOS::CLOSCLASS instead of CLOS::CLASS.
	* type.lsp (typep, canonicalize-type, type-expand-1): Likewise.
	* user2.lsp (apropos, describe): Likewise.
	* compiler.lsp (c-TYPEP): Likewise.
	* init.lsp: Export clos:class.
	* defs3.lsp: Likewise.

1998-04-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* record.d (CLOS::STRUCTURE-OBJECT-P): Renamed from
	  CLOS::STRUCTURE-INSTANCE-P.
	  (COPY-STRUCTURE): Use type STRUCTURE-OBJECT instead of STRUCTURE.
	* io.d (print_structure): Likewise.
	* eval.d: (FUNTAB): Rename CLOS::STRUCTURE-INSTANCE-P to
	  CLOS::STRUCTURE-OBJECT-P.
	* compiler.lsp (funtab, subr-info, c-DIRECT-FUNCTION-CALL): Likewise.
	  (c-typep-alist1): Likewise.
	  (c-typep-alist2): Remove type STRUCTURE.
	* type.lsp (CLOS:STRUCTURE-OBJECT): Rename CLOS::STRUCTURE-INSTANCE-P
	  to CLOS::STRUCTURE-OBJECT-P.
	  (STRUCTURE): Remove builtin type.
	  (subtypep): Remove type STRUCTURE.
	* defstruc.lsp (defstruct): All structure types except STRUCTURE-OBJECT
	  inherit from STRUCTURE-OBJECT.
	  (structure-object): New structure class.
	* constobj.d (class_structure_types): Update accordingly.
	* clos.lsp (<structure-object>): Update initial value.
	  (compute-dispatch): Rename CLOS::STRUCTURE-INSTANCE-P to
	  CLOS::STRUCTURE-OBJECT-P.
	* init.lsp: Export STRUCTURE-OBJECT.
	* defs3.lsp: Likewise.

1998-04-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* io.d (print_structure): New function, doing the bulk of pr_structure.
	  (pr_structure): Call it.
	  (pr_external_1): Do respect *print-circle*.
	* defstruc.lsp (clos::defstruct-remove-print-object-method): One more
	  hook for CLOS.
	  (defstruct): Implement option :PRINT-OBJECT. Options :PRINT-FUNCTION
	  and :PRINT-OBJECT both cause a PRINT-OBJECT method to be installed.
	* clos.lsp (defstruct-remove-print-object-method): New function.
	  (class, standard-method): Use PRINT-OBJECT methods instead of
	  :PRINT-FUNCTION option.
	  (built-in-class, slotted-class, structure-class, standard-class):
	  Drop :PRINT-FUNCTION option.
	  (print-class, print-std-method): Lose third argument.
	  (initialize-instance structure-class): Drop print-function
	  inheritance hack.
	* init.lsp: CLOS is not optional any more.
	* conditio.lsp (restart): Use :PRINT-OBJECT option instead of
	  :PRINT-FUNCTION option.
	  (print-restart): Lose third argument.

1998-04-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* defs3.lsp: Don't export *evalhook*, *applyhook*, evalhook, applyhook.

1998-04-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* constsym.d (set): Rename SET to SYS::SET-SYMBOL-VALUE.
	* places.lsp (SYMBOL-VALUE): Use SYS::SET-SYMBOL-VALUE.
	  SET is a deprecated alias.
	* defs1.lsp (copy-symbol): Use SYS::SET-SYMBOL-VALUE.
	* defs2.lsp (define-symbol-macro): Likewise.
	* affi1.lsp (open-library): Likewise.
	* macros1.lsp (defvar, defparameter): Likewise.
	* compiler.lsp (funtab): Likewise.
	  (subr-info): Add SYS::SET-SYMBOL-VALUE.
	  (*deprecated-functions*): New variable.
	  (note-function-used): New function.
	  (c-GLOBAL-FUNCTION-CALL): Call it.
	  (c-FUNCTION): Call it.
	  (compile-file): Initialize *deprecated-functions*. Warn about the
	  use of deprecated functions.

1998-04-18  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* type.lsp (CLOS:GENERIC-FUNCTION): New builtin type.
	  (subtypep): Treat it.
	* compiler.lsp (c-typep-alist1): Treat it.
	* clos.lsp: Export CLOS:GENERIC-FUNCTION.
	  (<generic-function>): New variable, new class CLOS:GENERIC-FUNCTION.
	* init.lsp: Export CLOS:GENERIC-FUNCTION.
	* defs3.lsp: Likewise.

1998-04-17  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* constsym.d (copy_structure): Rename SYS::%COPY-STRUCTURE to
	  COPY-STRUCTURE.
	* defstruc.lsp (ds-make-copier): Likewise.
	* compiler.lsp (funtab, subr-info, c-DIRECT-FUNCTION-CALL): Likewise.
	* init.lsp: Export COPY-STRUCTURE.
	* defs3.lsp: Likewise.

1998-04-16  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* defmacro.lsp (make-macro-expansion): Change scope of the block to
	  include only the body, not the lambda list.
	* macros2.lsp (deftype): Likewise.

1998-04-16  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* debug.d (read_form): Withdraw the clear-input/listen hack, use
	  interactive-stream-p instead. After reading a form, clear input
	  only upto a newline.
	* lispbibl.d (interactive_stream_p): New declaration.
	* user1.lsp (break-loop): Do (clear-input *debug-io*) upon entry
	  of the break loop.

1998-04-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* type.lsp (type-expand-1, type-expand): New functions.
	* user2.lsp (describe): Give a hint for DEFTYPEd types.

1998-04-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* type.lsp (CONS): New composite type specifier.
	  (canonicalize-type): Expand NUMBER to (OR REAL COMPLEX).
	  (canonicalize-type): Simplify (AND type), (OR type).
	  (subtypep): If type2 = (OR), replace it by NIL. For numbers, improve
	  the fallback case. Treat the composite CONS type.
	* compiler.lsp (c-typep-alist3): New composite type specifier CONS.
	* type.tst: Replace '(cons symbol) by '(symbol cons).

1998-04-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* defstruc.lsp (defstruct): Compare slot names using :test #'string=
	  :key #'symbol-name, not :test #'eq.

1998-04-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* conditio.lsp (arithmetic-error, cell-error, unbound-slot, type-error,
	  package-error, print-not-readable, stream-error, file-error,
	  simple-condition): Use non-exported symbols as slot names.

1998-04-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* clos.lsp (compute-applicable-methods): Turn into a generic
	  function.

1998-04-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* compiler.lsp (compile-file): Perform more merge-pathnames
	  operations.
	  (compile-file-pathname): Likewise. Add &allow-other-keys.

1998-04-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* clos.lsp (analyze-method-description): Allow class objects as
	  parameter specializers.

1998-04-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* init.lsp: Remove an unnecessary copy of the walker code.

1998-04-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* control.d (case): New special form.
	* init.lsp (%expand-form): Treat it.
	  (%expand-case): New function.
	* macros1.lsp (case): Put the macro definition on the property list.
	* compiler.lsp (c-CASE): Now a special form handler.

1998-04-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* array.d (copy_sbvector): New function.
	* lispbibl.d (copy_sbvector): Declare it.
	* record.d (SYS::GENERIC-FUNCTION-EFFECTIVE-METHOD-FUNCTION): New
	  function.
	* compiler.lsp (c-LAMBDABODY): A generic function dispatch code
	  ends with (RETGF) and needs only one value.
	* clos.lsp (analyze-method-description): Add check for
	  CALL-NEXT-METHOD called with arguments.
	  (slow-funcall-gf): Return the effective method, don't call it.
	  (finalize-fast-gf): No need to pass the arguments to
	  initial-funcall-gf.
	  (initial-funcall-gf): Just return the gf, don't apply it to the args.
	  (compute-dispatch): Return the effective method, don't call it.
	  (%call-next-method): New function.

1998-04-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* bytecode.d (cod_skip_retgf, cod_funcall_skip_retgf): New byte codes.
	  (cod_store8, cod_store9): Remove.
	* eval.d (interpret_bytecode_): Implement the new bytecodes.
	* compiler.lsp (instruction-table): New instructions SKIP&RETGF and
	  FUNCALL&SKIP&RETGF.
	  (short-code-base, short-code-opsize, short-code-ops): Update for
	  removed store8, store9.
	  (traverse-anode): RETGF is like a barrier.
	  (simplify): RETGF needs one value only.
	  (SP-depth): RETGF returns, like RET.
	  (insert-combined-LAPs): Combine SKIP and RETGF. Combine FUNCALL and
	  SKIP and RETGF.

1998-04-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* constobj.d (version): New bytecode version.
	  (old_version): Remove.
	* misc.d (SYS::VERSION): Drop test for O(old_version).
	* package.d (SYS::OLD-MAKE-PACKAGE, SYS::OLD-%IN-PACKAGE,
	  SYS::OLD-IN-PACKAGE): Remove backward compatibility hacks.
	* subrkw.d (old_make_package, old_pin_package, old_in_package):
	  Likewise.
	* debug.d (SYS::%ROOM): Renamed from SYS::OLD-ROOM.
	* user2.lsp (room): Call it.
	* eval.d (FUNTAB): Replace old_make_package, old_pin_package,
	  old_in_package by the new make_package, pin_package, in_package.
	  Remove old_room.
	* compiler.lsp (funtab): Likewise.

1998-04-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* list.d (BUTLAST, NBUTLAST): Signal an error if len==0 and dotted.

1998-04-12  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* array.d (ARRAY-DISPLACEMENT): New function.
	* init.lsp, defs3.lsp: Export it.

1998-04-11  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* lispbibl.d (conditiontype): New condition types source_program_error
	  and keyword_error.
	* genclisph.d (conditiontype): Likewise.
	* constsym.d (simple-source-program-error, simple-keyword-error):
	  Likewise.
	* error.d (end_error): Treat keyword_error.
	* eval.d (parse_dd, get_closure, eval1, eval_fsubr,
	  fehler_eval_zuwenig, fehler_eval_zuviel, fehler_eval_dotted):
	  Emit source_program_error instead of program_error.
	  (fehler_key_unpaarig, fehler_key_zuviel, funcall_iclosure,
	  fehler_apply_zuviel, fehler_apply_zuwenig): Emit program_error
	  instead of error.
	  (interpret_bytecode_.cod_mvcall): Likewise.
	  (fehler_key_notkw): Emit keyword_error instead of type_error.
	  (fehler_key_badkw): Emit keyword_error instead of error.
	* control.d (fehler_funsymbol, FUNCTION, check_setq_body,
	  fehler_docstring, make_variable_frame, COMPILER-LET, fehler_funspec,
	  MACROLET, COND, RETURN-FROM, TAGBODY, GO, DECLARE, PARSE-BODY):
	  Emit source_program_error instead of program_error.
	  (MULTIPLE-VALUE-CALL, APPLYHOOK): Emit program_error instead of
	  error.
	* foreign.d (FOREIGN-CALL-OUT): Emit program_error instead of error.
	* conditio.lsp (source-program-error, keyword-error,
	  simple-source-program-error, simple-keyword-error): New condition
	  types. Pass them to %defclcs.
	  (define-condition, handler-case, restart-bind, expand-restart-case):
	  Emit source-program-error instead of program-error.
	* clos.lsp (with-slots, with-accessors, defclass,
	  analyze-method-description, defmethod, analyze-defgeneric,
	  analyze-defgeneric-lambdalist, analyze-generic-fundefs):
	  Emit source-program-error instead of program-error.
	  (slow-funcall-gf, do-defgeneric): Emit program-error instead of
	  error.
	* affi1.lsp (mlibcall): Emit source-program-error instead of
	  program-error.
	* defmacro.lsp (macro-call-error, analyze-aux, analyze-rest, analyze1,
	  remove-env-arg, make-macro-expansion): Emit source-program-error
	  instead of program-error.
	* defs2.lsp (defpackage, define-symbol-macro): Emit
	  source-program-error instead of program-error.
	  (check-not-special-variable-p): Emit program-error instead of error.
	* defstruc.lsp (ds-symbol-or-error, defstruct): Emit
	  source-program-error instead of program-error.
	* foreign1.lsp (check-symbol, def-c-var, element, deref, slot, cast,
	  typeof): Emit source-program-error instead of program-error.
	* init.lsp (%the-environment-error, %expand-form, %expand-list,
	  %expand-lambda, %expand-lambdalist, %expand-varspez,
	  %expand-varspez*, %expand-fundefs-1, defun, do): Emit
	  source-program-error instead of program-error.
	* macros1.lsp (defvar, defparameter, defconstant, do/do*-expand,
	  psetq, case, ifify, cond): Emit source-program-error instead of
	  program-error.
	* macros2.lsp (typecase, deftype): Emit source-program-error instead
	  of program-error.
	* macros3.lsp (expand-LETF*, expand-LETF): Emit source-program-error
	  instead of program-error.
	* places.lsp (get-setf-method-multiple-value, get-setf-method,
	  define-setf-method, defsetf, psetf, define-modify-macro, setf,
	  shiftf, setf apply, setf funcall): Emit source-program-error
	  instead of program-error.
	* trace.lsp (trace1, untrace1): Emit source-program-error instead of
	  program-error.

1998-04-11  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* constobj.d (type_peektype, type_rexx_host): Use BOOLEAN instead of
	  (MEMBER NIL T).
	* format.lsp (format): Likewise.
	* clx.lsp (boolean): Remove definition.

1998-04-10  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* lispbibl.d: Port to powerpc-apple-mklinux.
	  Add a verification for oint_addr_mask.

1998-04-10  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* aclocal.m4 (CL_FPU_CONTROL): New macro.
	* configure.in: Call it.
	* unixconf.h.in: New macro HAVE_SETFPUCW.
	* unixaux.d: Set __fpu_control only if __setfpucw() doesn't exist.
	* spvw.d (main): Call __setfpucw() if it exists.

1998-04-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* compiler.lsp (EQL=EQ): Don't use fixnump.

1998-04-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* init.lsp: Export BOOLEAN.
	* defs3.lsp: Likewise.
	* type.lsp (TYPE-SYMBOL, SUBTYPEP): Treat BOOLEAN.
	* compiler.lsp (*declaration-types*, c-typep-alist2): Likewise.
	* predtype.d (TYPE-OF): (type-of 't) returns BOOLEAN.
	* user2.lsp (describe): Adapt for TYPE-OF change.

1998-04-01  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* type.lsp (%the): Instead of typep, use near-typep, which returns T
	  for a read-label.

1998-03-24  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* compiler.lsp (var): New slot `for-value-usedp'.
          (c-VAR): Set it.
          (ignore-check): Use it, instead of `usedp'.
          (bind-fixed-var-1, process-fixed-var-list, bind-movable-var,
           c-FLET, c-LABELS, c-GENERIC-FLET, c-GENERIC-LABELS): Initialize it.

1998-03-24  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* io.d (princ_up): Bind *PRINT-READABLY* to NIL.

1998-03-23  Jrg Hhle  <Joerg.Hoehle@gmd.de>

	* compiler.lsp (c-IF): No extra JMP if no else part.

1998-03-16  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* pathname.d (OPEN): For the :element-type argument, allow deftype'd
          type specifiers. Check their validity using SUBTYPEP and
          SYS::SUBTYPEP-INTEGER.

1998-03-14  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* macros2.lsp (space): Call VALUES-LIST explicitly.
	* user2.lsp (%space): No need to return values.

1998-03-14  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* io.d (%DEFIO): New function.
	  (SET-MACRO-CHARACTER): If function is a dispatch-reader function,
	  unpack it.
	  (GET-MACRO-CHARACTER): For a dispatch macro character, return a
	  dispatch-reader function.
	* defs2.lsp (dispatch-reader): New function. Call %defio.

1998-03-12  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* loop.lsp (expand-loop): Emit the REPEAT decrement before its
          end test, not afterwards.
	* loop.tst: A new test.

1998-03-11  Pierpaolo Bernardi  <bernardp@cli.di.unipi.it>

	* macros2.lsp (etypecase, ctypecase, ecase, ccase): Allow T and
          OTHERWISE as keys, but warn about them unless parenthesized.
	* conditio.lsp (etypecase, ctypecase, ecase, ccase): Likewise.

1998-03-10  Sam Steingold  <sds@usa.net>

	* io.d: fixed a minor grammatical error.

1998-03-07  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* amiga.d (stdin_handle): Renamed from Input_handle.
	  (stdout_handle): Renamed from Output_handle.
	  All references changed.
	* lispbibl.d (strm_file_name, strm_file_truename): Both can be a
	  pathname or NIL.
	* io.d (pr_stream): Don't print strm_file_name if it is NIL.
	* pathname.d (test_file_stream_named): New function.
	  (parse-namestring, truename, probe-file, delete-file, rename-file,
	  open, file-write-date, file-author): Call test_file_stream_named.
	* stream.d (regular_handle_p): Move function outside #if.
	  (b_file_finish_flush): Adapt for unnamed file streams.
	  (fehler_position_beyond_EOF, make_file_stream): Likewise.
	  (b_file_full_flush): Don't call lseek if the stream is write-only.
	  (b_file_half_flush): Likewise.
	  (b_file_nextbyte): Don't read buffer if the stream is write-only.
	  (position_b_file, position_file_end): Likewise.
	  (make_file_stream): Unnamed output stream are write-only.
	  (finish_output_file): For unnamed streams, don't close the handle.
	  (make_terminal_io): New function.
	  (init_streamvars): Call it.

1998-03-07  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* stream.d (finish_tty_output, force_tty_output, clear_tty_output):
	  Ignore ENOSYS on Irix (occurs on pipes).

1998-02-19  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* spvw.d: Define MULTIMAP_MEMORY_SYMBOL_TAB if
	  MULTIMAP_MEMORY && MAP_MEMORY_TABLES. But don't multimap the subr_tab
	  - wouldn't work in the case of dynamic loading.

1998-02-19  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        Make aktenv a separate entity (will be per-thread later).
	* lispbibl.d (aktenv): Make a global variable.
	* eval.d (aktenv): New global variable.
	* constobj.d (akt_*_env): Remove.
	* spvw.d (for_all_threadobjs): New macro.
	  (gc_markphase, aktualisiere_object_tab): Call it.
	  (initmem): Initialize aktenv.

1998-02-19  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* clos.lsp (*dynamically-modifiable-generic-function-names*): New
	  variable.
	  (warn-if-gf-already-called): Don't warn if gf is listed in it.

1998-02-19  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* format.lsp (format-parse-cs): Add format directive ~!.
	  (format-call): New function.
	  (formatter-main-1): Compile format-call.

1998-02-15  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* lispbibl.d (GNU_GETTEXT): Support gettext with IBMPC_CHS as well.
	  (INIT_SYMBOL_TAB): Don't define for EMUNIX.
	* gettext/intl/Makefile.dos: New file.
	* dos/gtconfig.h: New file.
	* dos/gtobjects: New file.
	* dos/copyx.bat, os2/copyx.cmd: Copy them.
	* spvw.d (to_latin_table, from_latin_table): New arrays.
	  (cvgettext): New function.
	  (clgettext): Call cvgettext, instead of gettext.
	* msdos.d (full_read, full_write): Change declaration to match the
	  definition in unixaux.d.
	  (get_handle_input_status, intdos): Save %ebx in asm calls.
	* stream.d (kbhit, getch, get_handle_info, intvideo): Likewise.
	* makemake.in: Support gettext on DOS, OS/2 platforms with EMX.
	  (EMX): Link with emxl.exe, not emx.exe.
	  Do not strip lisp.exe.
	* dos/convert.bax, os2/convert.bax: Don't convert binary files
	  like *.gif.
	* dos/delx.bat, os2/delx.cmd: Remove more things. Don't descend into
	  src/readline or src/newreadline - these directories may not exist.
	* Makefile.devel (dos--distrib, os2--distrib): Copy lispinit.mem,
	  not compiled.mem. Copy the *.mo files. Copy the translated READMEs.
	  Copy impnotes.html. Copy emx.exe. Copy emxrt.doc.

1998-02-15  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* lispbibl.d: Remove support for EMX versions < 0.9c.
	* msdos.d: Likewise.
	  (FILE_PID): Remove definition.
	* spvw.d (alarm_handler, main): Remove support for EMX versions < 0.9c.
	* stream.d (finish_tty_output, force_tty_output, listen_handle,
	  kbhit, getch, clear_window, delete_window_line, init_term): Likewise.
	  (make_pipe_input_stream, make_pipe_output_stream,
	  make_pipe_io_stream): Don't use FILE_PID any more.
	* os2/popenrw.c: Likewise.
	* error.d (begin_error, tast_break): Remove support for EMX
	  versions < 0.9c.
	  * graph.d: Likewise.
	* pathname.d: Likewise.
	* time.d: Likewise.

1998-02-15  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* cv-to-ibmpc.c (main): Translate the characters 0xCD and 0xD3 to
	  ASCII, instead of dropping them. Needed for the spanish messages.

1998-02-11  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	Remove support for traditional (pre-ANSI-C) compilers. Assume
	<stdlib.h> and <string.h> are present.
	* ansidecl.d: Assume <stdlib.h> is present.
	* txt2c.c: Likewise.
	* ccmp2c.d: Likewise.
	  (new_statement, main): Assume ANSI C declaration syntax.
	* comment5.d (main): Assume ANSI C declaration syntax.
	* dedefined.c: Removed.
	* deelif.d: Removed.
	* deerror.c: Removed.
	* mergestrings.d: Removed.
	* traddecl.d: Removed.
	* lispbibl.d: Assume ANSI C (or C++) compiler.
	  (const, signed, void): Remove conditional definitions.
	  (GENTAG, STRING): Simplify.
	  (DECLTAG, BEGIN_DECLTAG, END_DECLTAG, local_function): Remove.
	  (_ARGS, PARM0, PARM1, PARM2, PARM3, PARM4, PARM5): Remove.
	  (nonreturning_function): Simplify.
	  (signed_int_with_n_bits, unsigned_int_with_n_bits): Unconditional.
	  (sintB, uintB, sintW, uintW, sintL, uintL): Simplify definition.
	  (sintQ, uintQ, sintP, uintP): Likewise.
	  (sintBW, uintBW, sintWL, uintWL, sintBWL, uintBWL): Likewise.
	  (sintD, uintD, sintDD, uintDD, tint, aint, saint, cint): Likewise.
	  (module_): Simplify declaration.
	* genclisph.d (_ARGS): Remove. Assume ANSI C declaration syntax.
	* unix.d (FAULT_HANDLER_ARGDECL): Remove.
	  (FAULT_HANDLER_ARGLIST): Assume ANSI C declaration syntax.
	* io.d: Change `local_function' to `local'.
	* package.d: Likewise.
	* array.d: Likewise.
	* flo_rest.d (GEN_F_op1, GEN_ffloor, GEN_fceiling, GEN_fround,
	  GEN_round, GEN_F_fround, GEN_F_round, GEN_F_F_round): Use ANSI C
	  declaration syntax.
	* realelem.d (GEN_R_round, GEN_R_fround, GEN_R_R_round, GEN_R_R_mod,
	  GEN_R_R_fround): Use ANSI C declaration syntax.
	* realtran.d (GEN_F_atanx, GEN_F_sinx): Use ANSI C declaration syntax.
	* pathname.d (nametype_namestring_parts): Likewise.
	* spvw.d (gc_sweep1_varobject_page): Likewise.
	  (gc_sweep2_varobject_page): Likewise.
	  (sigsegv_handler): Simplify declaration.
	  (dynload_modules): Simplify cast for initfunction1 and initfunction2.
	* avl.d (AVL_map_*): Remove calls to BEGIN_DECLTAG, END_DECLTAG and
	  DECLTAG.
	* _clisp.c (perror, main): Assume ANSI C declaration syntax.
	* ari68020.d (C, clrx): Assume ANSI C preprocessor.
	* ari80386.d (C, L): Likewise.
	* sp80386.d (C): Likewise.
	* arisparc.d (C): Likewise.
	* asmi386.hh (C, L): Likewise.
	* configure.in: Don't call AC_PROG_GCC_TRADITIONAL, CL_CC_NEED_DEELIF,
	  CL_CC_NEED_DEERROR, CL_CC_NEED_MERGESTRINGS any more.
	* makemake.in: Drop support for oldcc. Assume CC_NEED_DEELIF,
	  CC_NEED_DEERROR, CC_NEED_MERGESTRINGS to be false. Assume CC_ANSI
	  to be true. Assume gcc is not used with -traditional. Always use
	  ansidecl, not traddecl.

1998-02-11  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* modules/stdwin: Removed.
	* makemake.in (--with-module-stdwin): Remove option.
	* Makefile.devel (SOURCES4): No need any more to exclude stdwin.
	  (CONFIGURES): Remove modules/stdwin/configure.
	  (src--distrib): Don't create clispsrc-stdwin.tar.gz.

1998-02-10  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* intsqrt.d (UDS_sqrt_): gcc-2.5.8 on hppa has same problem with
	  isqrt as gcc-2.7.0 on i386. Same workaround works.

1998-02-10  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* constobj.d (showstack_string_CALLBACK_frame): Define if
	  HAVE_SAVED_REGISTERS, not HAVE_SAVED_STACK.

1998-02-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* spvw.d (gar_col_normal): Unify three occurrences of the same error
	  message. Wrap munmap() calls in begin/end_system_call().

1998-02-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	Preliminary support for Mingw32:
	* ansidecl.d, traddecl.d, dedefined.c, ccmp2c.d, txt2c.c: Define
	  STDC_HEADERS if __MINGW32__.
	* lispbibl.d (WIN32): Define if __MINGW32__.
	  (I80386): Define if _X86_ is defined.
	* ari80386.d, sp80386.d, asmi386.hh: The __MINGW32__ assembler has
	  the ELF "align" pseudo-op.
	* win32.d: "#undef unused" before including other header files.
	  (_MAX_PATH): Define to an arbitrary value.
	  (uAsciiChar): New macro, against unnamed union in __MINGW32__.
	  (wProcessorArchitecture): Similarly.
	  (MAXHOSTNAMELEN): Define only unless already defined.
	  (CoGetCurrentProcess): Declare explicitly for __MINGW32__.
	* stream.d (listen_handle, listen_keyboard, rd_ch_keyboard):
	  Use uAsciiChar.
	* makemake.in ($TSYS = win32gcc): Output a Makefile suitable for
	  Mingw32.
	  (PARENT_M, NEXT_M, SRCTOPDIR_M, UTILDIR_M, DOCDIR_M): New variables.
	  Use them in Makefile rules (as opposed to Makefile commands).

1998-02-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* pathname.d (init_pathnames): Don't expect that getlogin() sets
	  errno when it fails.

1998-02-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* spvw.d (xmprotect): Use OS_errno, not errno. For Win32.

1998-02-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* spvw.d (main.banner): Add a copyright line for 1998.

1998-02-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* init.lsp: Export `define-symbol-macro'.
	* defs3.lsp: Likewise.

1998-02-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* pathname.d (fehler_notdir): New function, extracted from
	  shorter_directory_arg.
	  (directory_exists): New function.
	  (PROBE-DIRECTORY): New function.
	  (shorter_directory): Renamed from shorter_directory_arg. Accept
	  two arguments. Call fehler_notdir. All callers changed.
	  (make_directory): New function, extracted from MAKE-DIR.
	  (MAKE-DIR): Call it.
	  (ENSURE-DIRECTORIES-EXIST): New function.
	* init.lsp: Export `ensure-directories-exist'.
	* defs3.lsp: Likewise.

1998-01-23  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* arilev0.d (mulu32 for I80386): Fix a wrong description of the "mull"
	  instruction.

1998-01-21  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* asmi386.hh (NUM, ADDR): To prepend a dollar, use $##n. (Some
	  compilers allow dollars in identifiers. Needed for mingw32.)

1998-01-19  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* stream.d (clear_tty_output): Avoid error during CLEAR-OUTPUT on
	  pipes on Win32.

1998-01-14  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* pathname.d (file_write_date, file_author): file_exists() takes
	  a `object' as argument, not a `const char *'.

1998-01-14  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* predtype.d (hs_record): Add const here too, to fix a small problem
	  in 1997-09-28-const.diff.

1998-01-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* makemake.in: Add a comment about MODULES to the makefile.

1998-01-11  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* spvw.d (mem.heaptype): Use -1 for SUBRs and < -1 for unused
	  typecodes.
	  (main): Initialize mem.heaptype accordingly.
	  (main): prepare_zeromap for subr_tab is now implicit.

1997-12-30  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* lispbibl.d (nonreturning_function): Fix comment.
	* win32.d (SetConsoleCtrlHandler): Fix comment.

1997-12-13  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* eval.d (unwind): Fix a compilation warning in WIDE mode: don't cast
	  directly from oint to a pointer.

1997-12-11  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* lispbibl.d: Write MC680X0 instead of M680X0.

1997-12-11  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* spvw.d (make_space_gc*): If zeromap() fails, output an informative
	  message, to calm down users.

1997-12-11  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* makemake.in (distrib for acorn): Distribute impnotes.html.

1997-12-05  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* sequence.d (valid_type): Recognize (SIMPLE-ARRAY eltype 1) as
	  equivalent of (SIMPLE-ARRAY eltype (*)).
	* type.lsp (subtypep): Likewise.

1997-12-01  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* cfglinux.lsp: File removed.
	* FILES.1: Don't mention it.
	* makemake.in: Likewise.

1997-11-29  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* ffcall/{trampoline,callback/trampoline_r}/trampoline.c
	  (alloc_trampoline): Add support for NetBSD/m68k.
	* makemake.in: Recognize m68k-netbsd for ari680x0 support.

1997-11-15  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* ffcall/callback/Makefile.{in,msvc}: callback.h resides in the
	  build dir, not the source dir.
	* ffcall/callback/callback.h.in: Renamed from callback.h.

1997-11-14  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* io.d (prin1a): When *PRINT-PRETTY* = T, there is no need to output
	  a newline if the next string begins with a newline character anyway.

1997-11-14  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	Allow dynamic loading of modules, if configured --with-dynamic-modules.
	* clisp-link.in (run): New command.
	* aclocal.m4 (CL_DYNLOAD): New macro.
	* configure.in: Use it.
	* unixconf.h.in (HAVE_DLOPEN): New macro.
	* unix.d: Use it to declare dlopen, dlsym, dlclose, dlerror.
	* makemake.in: New option --with-dynamic-modules.
	* lispbibl.d (STACK_register if I80386): Define only if DYNAMIC_MODULES
	  is not defined.
	  (HAVE_SAVED_REGISTERS if I80386): Likewise.
	  (tagging scheme): Likewise.
	  (modules): Declare.
	  (dynload_modules): Declare.
	* modules.d: Treat DYNAMIC_MODULES.
	* pathname.d (SYS::DYNLOAD-MODULES): New function.
	* spvw.d (init_modules_0): New function.
	  (init_module_2): New function.
	  (init_other_modules_2): Call it.
	  (dynload_modules): New function.

1997-11-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* ffcall: Upgrade to ffcall-1.3
	* Makefile.devel (CONFIGURES): Update accordingly.
	* foreign.d (convert_function_to_foreign, free_foreign_callin,
	  convert_function_from_foreign, callback, init_ffi): Use callback
	  package instead of vacall+trampoline.

1997-11-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* aclocal.m4 (CL_MACHINE): Force CL_CHAR_UNSIGNED before CL_MACHINE.

1997-11-08  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* aclocal.m4 (CL_CANONICAL_HOST_CPU): Support for KAI C++ which
          doesn't like "#undef __i386__" nor "#define __i386__".

1997-10-20  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* disassem.lsp (disassemble-machine-code for UNIX): Inhibit line
          breaks, 1 instruction per line, otherwise the instruction gets
          filtered away.

1997-10-19  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* conditio.lsp: Conditionalize upon feature ANSI-CL, not dpANS.
	* defs2.lsp, defs3.lsp, init.lsp, loop.lsp: Likewise.

1997-10-12  Jrg Hhle  <Joerg.Hoehle@zeus.gmd.de>

	* amigasock.lsp: New file.

1997-10-08  Jrg Hhle  <Joerg.Hoehle@zeus.gmd.de>

	* eval.d (interpret_bytecode (cod_throw)): Tweak message.

1997-10-06  Jrg Hhle  <Joerg.Hoehle@zeus.gmd.de>

	* cfgamiga.lsp (machine-instance): Prefix with "localhost".
	* erramiga.d (error200_msg_table): Add some translations.

1997-09-30  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* utils/gcc-cccp/Makefile.msvc: Set stack size for cccp.exe.
	* asmi386.sh: For the sake of msvc5, which assembles relative
          addresses in an unpredictable way, turn jump tables into absolute,
          not relative, addresses.

1997-09-28  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* charstrg.d (copy_string, NSTRING-UPCASE, NSTRING-DOWNCASE,
	  NSTRING-CAPITALIZE): Make reentrant and multithread-safe.

1997-09-28  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        Stack overflow robustness on Win32:
	* lispbibl.d (NO_SP_CHECK, NOCOST_SP_CHECK): New macros. SP checks
          are enabled if AMIGAOS || (WIN32_NATIVE && !CAN_HANDLE_WP_FAULT).
	* spvw.d (do_gar_col_simple, do_gar_col): If WIN32_NATIVE &&
          CAN_HANDLE_WP_FAULT, check for stack overflow just before GC,
          because a stack overflow during GC would be unrecoverable.
	* spvw.d (subst_circ_mark, stack_overflow_handler,
          main_exception_filter): Put in the right #ifdefs.
	* spvw.d (stack_overflow_stack): New variable.
          (main): Set it.

1997-09-28  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* lispbibl.d (map_heap_function): Renamed from mapper_function.
          (map_heap_objects): Change declaration.
	* spvw.d (map_heap_objects): Likewise.

1997-09-28  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* array.d (initial_contents_locals): New structure.
          (initial_contents_aux): Make reentrant and multithread-safe.
	* lispbibl.d (map_sequence): Declare.
	* sequence.d (map_sequence): New function.

1997-09-28  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* spvw.d (everything_ready): Remove unused variable.

1997-09-28  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* Use `const' qualifier when possible, especially on constant arrays.
          This allows constant arrays to be put into the rodata section.
	* arilev1c.d (copy_loop_up, copy_loop_down, or_loop_up, xor_loop_up,
          and_loop_up, eqv_loop_up, nand_loop_up, nor_loop_up, andc2_loop_up,
          orc2_loop_up, and_test_loop_up, test_loop_up, compare_loop_up,
          add_loop_down, addto_loop_down, sub_loop_down, subx_loop_down,
          subfrom_loop_down, shiftleftcopy_loop_down, shiftrightcopy_loop_up,
          mulu_loop_down, muluadd_loop_down, mulusub_loop_down,
          divucopy_loop_up): Use `const'.
	* arilev1e.d (copy_loop_up, copy_loop_down, or_loop_up, xor_loop_up,
          and_loop_up, eqv_loop_up, nand_loop_up, nor_loop_up, andc2_loop_up,
          orc2_loop_up, and_test_loop_up, test_loop_up, compare_loop_up,
          add_loop_down, addto_loop_down, sub_loop_down, subx_loop_down,
          subfrom_loop_down, shiftleftcopy_loop_down, shiftrightcopy_loop_up,
          mulu_loop_down, muluadd_loop_down, mulusub_loop_down,
          divucopy_loop_up): Use `const'.
	* arilev1i.d (copy_loop_up, copy_loop_down, or_loop_up, xor_loop_up,
          and_loop_up, eqv_loop_up, nand_loop_up, nor_loop_up, andc2_loop_up,
          orc2_loop_up, and_test_loop_up, test_loop_up, compare_loop_up,
          add_loop_down, addto_loop_down, sub_loop_down, subx_loop_down,
          subfrom_loop_down, shiftleftcopy_loop_down, shiftrightcopy_loop_up,
          mulu_loop_down, muluadd_loop_down, mulusub_loop_down,
          divucopy_loop_up): Use `const'.
	* array.d (type_table): Use `const'.
	* charstrg.d (up_case_table, down_case_table, charname_table_codes,
          char_name, name_char): Use `const'.
	* control.d (fsubr_tab): Use `const'.
	* debug.d (frame_up_table, frame_down_table, test_mode_arg): Use
          `const'.
	* eval.d (FUNTAB, FUNTABR, cod_labels): Use `const'.
	* graph.d (EGA_colors, gr_colors, g320x200x16_regs, g320x200x16_info,
          g640x200x16_regs, g640x200x16_info, g640x350x16_regs,
          g640x350x16_info, g640x480x16_regs, g640x480x16_info,
          g320x200x256_regs, g320x200x256_info, g320x240x256_regs,
          g320x240x256_info, g320x400x256_regs, g320x400x256_info,
          g360x480x256_regs, g360x480x256_info, g640x480x2_regs,
          g640x480x2_info, g640x480x256_regs, g640x480x256_info,
          g800x600x256_regs, g800x600x256_info, g1024x768x256_regs,
          g1024x768x256_info, default_red, default_green, default_blue,
          color16, et4000_set_regs, set_regs, mono_colors, EGA_colors,
          VGA_colors, gr_colors, font, gr_text, GRAPH-INIT): Use `const'.
	* hashtabl.d (tuple_half_1, tuple_half_2): Use `const'.
	* intmal.d (mulu_2loop_down, mulu_2bigloop_down, fakul_table): Use
          `const'.
	* intprint.d (table, UDS_to_DIGITS): Use `const'.
	* io.d (orig_syntax_table, orig_readtable, SET-READTABLE-CASE,
          attribute_table, char_reader, pr_character, pr_stream): Use `const'.
	* lisparit.d (pi_mantisse, ln2_mantisse, ln10_mantisse): Use `const'.
	* lispbibl.d (fsubr_tab): Use `const'.
	* predtype.d (init_hs_locals_rest): Use `const'.
	* realrand.d (multiplier): Use `const'.
	* sequence.d (test_start_end, test_start_end_1): Use `const'.
	* spvw.d (pname_table, package_index_table, init_symbol_tab_2,
          fsubr_data_tab, object_initstring_tab, features_initstring,
          init_object_tab, banner, banner2, banner3, main,
          loadmem_aktualisiere, copyright_notice): Use `const'.

1997-09-27  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* acspecific.m4 (AC_FUNC_VFORK): Fix so that it works right when
	  cross-compiling.
