*** empty log message ***
[bpt/guile.git] / libguile / ChangeLog
index bdd2306..9a567e9 100644 (file)
@@ -1,3 +1,777 @@
+Sun Dec 12 19:39:00 1999  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * Makefile.am: Fix ETAGS_ARGS to recognize GUILE_PROC,
+       GUILE_PROC1.  Build guile-procedures.txt, and add that file to
+       pkgdata_DATA.
+
+       * load.c: Added `pkgdata-dir', `site-dir', `library-dir'
+       primitives.
+
+       * guile-doc-snarf.awk: Drop trailing space when no arguments:
+       e.g., "(foo )" is now "(foo)".
+
+       * *.c, alist.c: moved all the documentation for primitives from
+       guile-doc/ref/{appendices,posix,scheme}.texi into the source code.
+       This leaves about half of the primitives undocumented.  Also, all
+       the markup is currently still texinfo.  I don't have a problem
+       with texinfo per se, but the markup is not very descriptive or
+       accurate.
+
+Sun Dec 12 16:50:26 1999  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * scm_validate.h: Drop the SCM_DOCSTRING_SNARF for turning off
+       SCM_VALIDATE macros; the SCM_VALIDATE macros should be checked for
+       argument mismatches (along with the FUNC_NAME macro checking) by a
+       static tool that runs directly over the .c files.
+
+       * snarf.h: Handle SCM_REGISTER_PROC better when snarfing.  The
+       docstring is still missing from the .doc file;  it just gives the
+       name of the C function that gets called instead.
+
+       * guile-doc-snarf.awk: Be sure to touch the output files to help
+       make out.  Also handle SCM_REGISTER_PROC better, and change the
+       output format slightly.
+
+Sun Dec 12 15:33:40 1999  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * snarf.h: Drop SCM_PROC, SCM_PROC1. Added extra output for
+       guile-doc-snarf script.
+
+       * guile-doc-snarf.in, guile-doc-snarf.awk: New, simple doc
+       extraction system.  Builds foo.x, foo.doc from foo.{c,cc}.
+       There are dependencies between these files and snarf.h.  This
+       replaces guile-snarf.
+
+       * guile-snarf.in: Drop everything after $$$ for the new snarf.h
+       macros.  This is obsoleted by guile-doc-snarf, but kept here for
+       now for good measure.
+
+       * Makefile.am: Added guile-doc-snarf, guile-doc-snarf.awk to
+       bin_SCRIPTS.  Added .doc to SUFFIXES, and give rule for creating
+       .doc files to use guile-doc-snarf.  Update the rule for creating
+       .x files to use guile-doc-snarf.
+
+Sun Dec 12 12:31:38 1999  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * *.c: Finish replacing K&R style prototypes with ANSI C
+       prototypes.
+
+       * eval.c: Make scm_m_mody's 3rd argument be a const char *, not a
+       char *.  ANSI prototypes caught this.
+
+       * strorder.c: Use GUILE_PROC1 for the couple SCM_PROC1 expansions
+       that I missed.
+
+       * scm_validate.h: Use SCM_BOOLP for validating bools.  Do not
+       expand macros if SCM_DOCSTRING_SNARF.
+
+Sun Dec 12 11:23:22 1999  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * *.c, srcprop.h: Use SCM_BOOL(f) instead of (f? SCM_BOOL_T:
+       SCM_BOOL_F) and use SCM_NEGATE_BOOL(f) instead of (f? SCM_BOOL_F:
+       SCM_BOOL_T).
+
+Sun Dec 12 11:08:51 1999  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * boolean.h: Added SCM_BOOL, SCM_NEGATE_BOOL, SCM_BOOLP to here,
+       from scm_validate.h.
+
+       * scm_validate.h: Moved above out into boolean.h, fix typo in
+       SCM_VALIDATE_NIM macro.
+
+Sun Dec 12 10:29:12 1999  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * *.c, scm_validate.h: Use SCM_VALIDATE_NIM, not SCM_VALIDATE_NIMP
+       (none of the other validate macros have the trailing P).
+
+Sun Dec 12 10:07:29 1999  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * scm_validate.h: Added the FSF copyright to the top.
+
+       * strings.c: Use SCM_ASSERT_RANGE in a couple of places instead of 
+       SCM_ASSERT w/ SCM_OUT_OF_RANGE.
+
+Sat Dec 11 18:34:12 1999  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * Makefile.am: Added scm_validate.h to modinclude_HEADERS.
+
+       * *.c: Pervasive software-engineering-motivated rewrite of
+       function headers and argument checking.  Switched SCM_PROC,
+       SCM_PROC1 macros to be GUILE_PROC, GUILE_PROC1 (may change names
+       later, but was useful to keep old versions around while migrate)
+       that has docstrings and argument lists embedded in the GUILE_PROC
+       macro invocations that expand into a function header.  Use lots of
+       new SCM_VALIDATE_* macros to simplify error checking and reduce
+       tons of redundancy.  This is very similar to what I did for Scwm.
+
+       Note that none of the extraction of the docstrings, nor software
+       engineering checks of Scwm is yet added to Guile.  I'll work on
+       that tomorrow, I expect.
+
+       * chars.c: Added docstrings for the primitives defined in here.
+
+       * snarf.h:  Added GUILE_PROC, GUILE_PROC1.  Added
+       SCM_REGISTER_PROC to be like old SCM_PROC, though old SCM_PROC
+       still remains for now.  Changed naming convention for the s_foo
+       string name of the primitive to be s_scm_foo for ease of use with
+       the macro.
+
+       * scm_validate.h: Lots of new SCM_VALIDATE macros to simplify
+       argument checking through guile.  Maybe some of these should be
+       folded into the header file for the types they check, but for now
+       it was easiest to just stick them all in one place.
+
+1999-12-10  Greg Harvey  <Greg.Harvey@thezone.net> (applied --12/10/99 gjb)
+
+       * smob.c (scm_smob_prehistory): initialize allocated smob
+
+       * tags.h: new tag: scm_tc16_allocated
+
+       * gc.c (scm_gc_for_newcell): set the car of the new cell
+       to scm_tc16_allocated
+       * pairs.h (SCM_NEWCELL): set the car to scm_tc16_allocated
+       (scm_gc_mark): mark allocated cells.
+
+1999-12-09  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * strports.h, strports.c (scm_eval_0str): Fix constness.  Some
+       thanks to Dirk Hermann.
+
+       * gh_eval.c (gh_eval_str, gh_eval_file, gh_eval_str_with_catch,
+       gh_eval_str_with_standard_handler,
+       gh_eval_str_with_stack_saving_handler): Fix constness.  Some
+       thanks to Dirk Hermann.
+
+       * gh_data.c (gh_str02scm): Fix constness.
+
+       * gh.h: Fix constness of prototypes for the above.
+
+       * vectors.c: Include "unif.h" to avoid a warning about missing
+       prototype for scm_uniform_element_size().
+
+1999-12-09  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * vectors.c (scm_vector_length, scm_vector_ref, scm_vector_set_x):
+       Turned into primitive generics. 
+
+1999-12-04  Gary Houston  <ghouston@freewire.co.uk>
+
+       * ports.c (scm_port_closed_p): new procedure, implements 
+       "port-closed?" suggested by Bernard Urban.
+       ports.h: added prototype, removed the SCM_P macros.
+
+1999-11-30  Gary Houston  <ghouston@freewire.co.uk>
+
+       * unif.h: added some comments, removed the SCM_P macros.
+
+1999-11-29  Gary Houston  <ghouston@freewire.co.uk>
+
+       * vports.c (sf_write): use scm_makfromstr, not scm_makfrom0str
+       (thanks to Daniel Skarda).
+
+1999-11-22  Jim Blandy  <jimb@savonarola.red-bean.com>
+
+       * gscm.c, gscm.h: Deleted.  They were unused.
+
+1999-11-20  Gary Houston  <ghouston@freewire.co.uk>
+
+       * unif.c (scm_list_to_uniform_array): call 
+       scm_dimensions_to_uniform_array with a third argument of 
+       SCM_UNDEFINED instead of SCM_EOL.
+
+1999-11-19  Gary Houston  <ghouston@freewire.co.uk>
+
+       * the following changes allow guile to be built with the array
+       "module" omitted.  some of this stuff is just tc7 type support,
+       which wouldn't be needed if uniform array types were converted
+       to smobs.
+       
+       * tag.c (scm_utag_bvect ... scm_utag_cvect): don't define unless
+       HAVE_ARRAYS.
+       (scm_tag): don't check array types unless HAVE_ARRAYS.
+
+       * sort.c (scm_restricted_vector_sort_x, scm_sorted_p):
+       remove the unused array types.
+       * (scm_stable_sort, scm_sort): don't support vectors if not
+       HAVE_ARRAYS.  a bit excessive.
+
+       * random.c (vector_scale, vector_sum_squares, 
+       scm_random_solid_sphere_x, scm_random_hollow_sphere_x,
+       scm_random_normal_vector_x): don't define unless HAVE_ARRAYS.
+
+       * gh_data.c (makvect, gh_chars2byvect, gh_shorts2svect,
+       gh_longs2ivect, gh_ulongs2uvect, gh_floats2fvect, gh_doubles2dvect,
+       gh_uniform_vector_length, gh_uniform_vector_ref):
+       don't define unless HAVE_ARRAYS.
+       (gh_scm2chars, gh_scm2shorts, gh_scm2longs, gh_scm2floats,
+       gh_scm2doubles):
+       don't check vector types if not HAVE_ARRAYS.
+
+       * eq.c (scm_equal_p), eval.c (SCM_CEVAL), print.c (scm_iprin1),
+       gc.c (scm_gc_mark, scm_gc_sweep), objects.c (scm_class_of):
+       don't support the array types unless HAVE_ARRAYS is defined.
+
+       * tags.h: make nine tc7 types conditional on HAVE_ARRAYS.
+
+       * read.c (scm_lreadr): don't check for #* unless HAVE_ARRAYS is 
+       defined (this should use read-hash-extend).
+
+       * ramap.c, unif.c: don't check whether ARRAYS is defined.
+
+       * vectors.c (scm_vector_set_length_x): moved here from unif.c.  call
+       scm_uniform_element_size if HAVE_ARRAYS.
+       vectors.h: prototype too.
+
+       * unif.c (scm_uniform_element_size): new procedure.
+
+       * init.c (scm_boot_guile_1): don't call scm_init_ramap or 
+       scm_init_unif unless HAVE_ARRAYS is defined.
+
+       * __scm.h: don't define ARRAYS.
+
+       * Makefile.am (EXTRA_libguile_la_SOURCES): unif.c and ramap.c
+       moved here from libguile_la_SOURCES.
+       
+1999-11-18  Gary Houston  <ghouston@freewire.co.uk>
+
+       * socket.c (scm_htons, scm_ntohs, scm_htonl, scm_ntohl): new
+       functions for network data conversion.
+
+       * numbers.c (scm_num2long, scm_num2longlong):
+       throw out-of-range instead of wrong-type-arg if appropriate.
+       (scm_iint2str): handle -2^31 correctly.
+       (scm_num2long): handle -2^31 bignum correctly.
+       (scm_num2long_long): rewrite the bigdig case: basically copied 
+       from scm_num2long.
+       numbers.h: (SCM_BITSPERLONGLONG): deleted.
+
+       * unif.c (rapr1): use sprintf instead of intprint for unsigned
+       longs: intprint can't cope with large values.
+
+       * numbers.c (scm_num2ulong): check more consistently that the
+       input is not negative.  if it is, throw out-of-range instead of 
+       wrong-type-arg.
+
+       * ramap.c (scm_array_fill_int): don't limit fill to INUM for 
+       uvect, ivect or llvect.
+       Check that fill doesn't overflow short uniform array.
+
+       * __scm.h: add another long to the definition of long_long and
+       ulong_long.
+
+       * unif.c (scm_raprin1): use 'l' instead of "long_long" in the
+       print representation of llvect.  read can't handle more than
+       one character.
+       (scm_dimensions_to_uniform_array): make "fill" an optional argument
+       instead of a rest argument.
+
+       * tags.h (scm_tc7_llvect): wasn't defined anywhere, so use the free
+       tag 29 for now.
+
+       * __scm.h: don't mention LONGLONGS.
+
+       * unif.c, numbers.c, eq.c, gc.c, print.c, eval.c, ramap.c:
+       replace LONGLONGS with HAVE_LONG_LONGS as set by configure.
+
+1999-11-17  Gary Houston  <ghouston@freewire.co.uk>
+
+       * net_db.c (scm_inet_aton): throw errors using the misc-error key
+       instead of system-error.  inet_aton doesn't set errno.
+       system-error isn't right in gethost either, since it's throwing
+       the value of h_errno instead of errno. so:
+       (scm_host_not_found_key, scm_try_again_key,
+       scm_no_recovery_key, scm_no_data_key): new error keys.
+       (scm_resolv_error): new procedure, use the new keys.
+       (scm_gethost): call scm_resolv_error not scm_syserror_msg.
+
+1999-11-16  Gary Houston  <ghouston@freewire.co.uk>
+
+       * error.c: (various): use scm_cons instead of scm_listify
+       to build short lists.
+
+1999-11-03  Gary Houston  <ghouston@freewire.co.uk>
+
+       * socket.c (scm_fill_sockaddr): zero the address structure before
+       use, in case it has a sin_len field and the OS doesn't like random
+       values (thanks to Bertrand Petit).
+
+1999-10-26  Mark Galassi  <rosalia@lanl.gov>
+
+       * gh.h, gh_data.c (gh_symbol2scm): changed gh_symbol2scm() to take
+       a const char * argument, upon suggestion from Lynn Winebarger.
+
+1999-10-26  Gary Houston  <ghouston@freewire.co.uk>
+
+       * strports.c (st_end_input): avoid dubious pointer arithmetic.
+
+1999-10-24  Gary Houston  <ghouston@freewire.co.uk>
+
+       * Move the responsibility for resetting port buffers from the
+       caller of the ptob seek procedure to the implementation.  This
+       gives more control in general to the ptob seek: in particular the
+       change of 1999-10-20 can be made to work without breaking seek on
+       string ports.  There's a comment in NEWS about upgrading port
+       types.
+       
+       * ports.c (scm_seek): don't reset the port buffers here.
+
+       * fports.c (fport_seek): reset the buffers, except for the
+       0 SEEK_CUR case.
+
+       * strports.c (st_end_input): (bug fix): decrement pt->read_pos by
+       offset.  check that it's not less than read_buf.
+       (st_seek): reset the buffers first, unless it's the 0 SEEK_CUR
+       case and currently reading.
+
+1999-10-20  Gary Houston  <ghouston@freewire.co.uk>
+
+       * ports.c (scm_seek): Add a special case for SEEK_CUR, offset 0,
+       so that unread chars are not needlessly discarded.  (thanks to
+       Roland Orre).
+
+1999-10-18  Gary Houston  <ghouston@freewire.co.uk>
+
+       * fports.c (scm_fdes_to_port): always set rw_random if the fdes is
+       random access.  rw_active needs to be maintained even for single
+       directional ports, otherwise scm_seek and probably other things are
+       broken.  (thanks to Roland Orre).
+
+       * strports.c (scm_mkstrport): set rw_random to 1 unconditionally.
+
+       * ports.c (scm_add_to_port_table): initialise rw_random to 0.
+
+       * ports.h (scm_port): change the comments on rw_random and rw_active.
+
+1999-10-11  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * ioext.c: Added #include "feature.h".
+
+       These changes turns `delay' into a memoizing macro.  This is
+       because it may be expanded before evaluation if it occurs at the
+       beginning of a body.  (Thanks to Lauri Alanko.)
+       
+       * eval.c, eval.h (scm_sym_delay): New global symbol.
+
+       * tags.h (SCM_IM_DELAY): New immediate symbol.
+
+       * print.c (scm_isymnames): Printed representation.
+
+       * eval.c (unmemocopy, SCM_CEVAL): Handle SCM_IM_DELAY.
+       (scm_m_delay): Turned into a memoizing macro.
+
+       * Makefile.am (libguile_la_LDFLAGS): Bumped libguile version.
+
+1999-10-11  Jim Blandy  <jimb@savonarola.red-bean.com>
+
+       * gh_data.c (gh_ints2scm, gh_doubles2scm): Make sure elements are
+       protected from GC while building the vector.  (Thanks to Bernard
+       Urban and Greg Harvey.)
+
+1999-10-08  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * throw.c (handler_message): Display backtrace if backtraces
+       enabled.
+
+1999-10-05  Jim Blandy  <jimb@savonarola.red-bean.com>
+
+       * Makefile.in, scmconfig.h.in: Deleted from CVS repository.  Run
+       the autogen.sh script to create generated files like these.
+
+       * numbers.c (scm_string_to_number): Signal an error if radix is
+       less than two.  (Thanks to Jorgen Schaefer.)
+
+       * print.c (scm_write, scm_display, scm_newline, scm_write_char):
+       Don't assume that the current output port is valid.  Somebody
+       might close it.  (Thanks to Bernard Urban.)
+
+1999-10-02  Jim Blandy  <jimb@zwingli.cygnus.com>
+
+       * scmconfig.h.in: Regenerated.
+
+       * Makefile.am (EXTRA_libguile_la_SOURCES): fix typo.
+
+Mon Sep 27 17:15:14 1999  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * __scm.h: Fix a bunch of macros that were missing do-while(0)
+       sandwiches. 
+
+       * debug.c, eval.c: Fix buggy uses of SCM_ALLOW_INTS (missing
+       semicolon) exposed by the above change.
+
+1999-09-27  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * stacks.c: Avoid compiler warning re: unitialized var.
+
+       * scmconfig.h.in: Added DEBUG_FREELIST
+
+       * pairs.h: Fix macro that was not do-while(0) sandwiched.
+
+       * gc.h, gc.c: Added scm_gc_set_debug_check_freelist_x,
+       scm_map_free_list
+
+1999-09-23  Gary Houston  <ghouston@freewire.co.uk>
+
+       * ioext.c (scm_init_ioext): enable "i/o-extensions" feature here
+       instead of in scm_init_filesys.
+
+       * init.c (scm_boot_guile_1): don't call scm_init_posix or
+       scm_init_filesys unless HAVE_POSIX is defined.
+       don't call scm_init_netdb or scm_init_socket unless
+       HAVE_NETWORKING is defined.
+
+       * Makefile.am (EXTRA_libguile_la_SOURCES): filesys.c, posix.c,
+       net_db.c, socket.c: moved here from libguile_la_SOURCES.
+
+1999-09-25  Jim Blandy  <jimb@savonarola.red-bean.com>
+
+       * root.c (scm_make_root): Initialize all the fields of the new
+       root.  GC could happen any time, you know.  (Thanks to Greg
+       Harvey.)
+
+       * numbers.c (scm_number_to_string): Signal an error if radix is
+       less than two.  (Thanks to Jorgen Schaefer.)
+
+       * Makefile.am (EXTRA_libguile_la_SOURCES): Add memmove.c here,
+       so automake will actually generate rules for it.
+       * Makefile.in: Regenerated.
+
+1999-09-21  Jim Blandy  <jimb@savonarola.red-bean.com>
+
+       * backtrace.c: #include "_scm.h" before testing whether
+       HAVE_UNISTD_H is #defined.
+
+1999-09-20  Jim Blandy  <jimb@savonarola.red-bean.com>
+
+       * read.c (scm_read): Don't assume that scm_cur_inp is always open.
+       * ports.c (scm_read_char): Same.
+       * ioext.c (scm_read_line): Same.
+       (Thanks to Bernard Urban.)
+
+1999-09-21  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * vectors.c (scm_vector_move_right_x): Bugfix: Remove side effect
+       in SCM_ASSERT macro.
+       numbers.c: Removed #ifndef SCM_RECKLESS at places where type
+       checking may invoke a generic.  (Thanks to Michael Livshin.)
+
+       * __scm.h (SCM_WTA_DISPATCH_0, SCM_GASSERT0): New macros.
+
+       * numbers.c (scm_max, scm_min, scm_sum, scm_difference,
+       scm_product, scm_divide): Bugfix: Don't pass SCM_UNDEFINED to the
+       generic function if the asubr is called with only one arg.
+
+1999-09-20  Gary Houston  <ghouston@freewire.co.uk>
+
+       * scmsigs.c (scm_sigaction): add SA_RESTART to flags only if
+       HAVE_RESTARTABLE_SYSCALLS.
+       (scm_init_scmsigs): use siginterrupt if it's available.  not
+       everyone who has restartable syscalls has SA_RESTART it seems.
+
+       (scm_sigaction): use scm_num2long/scm_long2num when converting
+       SIG_DFL/SIG_IGN, in case it doesn't fit in an INUM.  use
+       scm_integer_p to test the type.
+
+1999-09-18  Gary Houston  <ghouston@freewire.co.uk>
+
+       * _scm.h, scmsigs.c: replace HAVE_RESTARTS with
+       HAVE_RESTARTABLE_SYSCALLS.
+
+       * strports.c (scm_strport_to_string): create the string from
+       pt->read_buf instead of an expression that evaluates to the
+       same thing.
+
+       * gdbint.c (gdb_print): don't just use SCM_CHARS to get a C string
+       from the port: the port's buffer may not be NUL terminated.
+
+1999-09-16  Mikael Djurfeldt  <mdj@mdj-pc.nada.kth.se>
+
+       * Makefile.am (.c.x): Added missing semicolon after `false'.
+
+1999-09-15  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * print.c (scm_iprin1): Turn `write' and `display' into
+       primitive generics and use their associated generic functions in
+       scm_iprin1 for GOOPS objects.
+
+       * backtrace.c: #include <unistd.h> if present.
+
+1999-09-14  Jim Blandy  <jimb@savonarola.red-bean.com>
+
+       * Makefile.am (.c.x): Don't create a subshell just to delete the
+       .x file and return false.
+       * Makefile.in: Regenerated.
+
+1999-09-13  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * feature.c (scm_create_hook): New function.  Replaces
+       scm_make_named_hook which is now deprecated.
+       (scm_make_hook_with_name): New primitive.
+       (print_hook): Hooks now print in a fancy way.
+
+1999-09-12  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * __scm.h, backtrace.c, backtrace.h, debug.c, debug.h, dynl-dld.c,
+       dynwind.c, dynwind.h, eval.h, evalext.c, evalext.h, feature.c,
+       feature.h, hashtab.c, hashtab.h, objects.c, objects.h, print.c,
+       procs.c, procs.h, smob.c, smob.h, srcprop.c, strorder.c, struct.c,
+       struct.h: Updated copyright notices.
+
+       * srcprop.c (scm_source_property): Bugfix: Use SCM_NECONSP instead
+       of SCM_NCONSP.  (Thanks to Greg Badros.)
+
+       * gsubr.c (scm_make_gsubr): Use scm_make_subr_opt for creation of
+       the self subr.
+
+       * eval.c, debug.h (SCM_BACKTRACE_WIDTH): New debug option: width.
+
+       * backtrace.c: Keep backtraces within specified width by
+       adaptively adjusting fancy printing parameters and cut output if
+       necessary.
+       (scm_display_application): Check args.
+
+1999-09-11  Jim Blandy  <jimb@savonarola.red-bean.com>
+
+       Change the name of the objects returned by OPENDIR from
+       "directory" to "directory stream".  A predicate named "directory?"
+       would be confusing.
+       * filesys.c (scm_directory_stream_p): Renamed from scm_directory_p.
+       At the Scheme level, "directory?" -> "directory-stream?".
+       (scm_dir_print): Use the phrase "directory stream" in printed form.
+       * filesys.h (scm_directory_stream_p): Prototype renamed
+       accordingly.
+
+       * Makefile.am (CLEANFILES): Remove versiondat.h; that should only
+       be removed by `make distclean', since it's generated by configure.
+       * Makefile.in: Regenerated.
+       (Thanks to Robert Bihlmeyer.)
+
+       * strop.c (scm_substring_move_x): Signal an error if start1
+       doesn't come before end1.  (Thanks to Karoly Lorentey).
+
+       * numbers.c (scm_istr2flo): Don't call SCM_INEXP without first
+       calling SCM_NIMP.  (Thanks to Karoly Lorentey).
+
+       * version.c (scm_libguile_config_stamp): Deleted.  See
+       corresponding change to ../ice-9/boot-9.scm.
+       * versiondat.h.in: Remove definition for GUILE_STAMP.
+       * version.h: Delete prototype.
+       * Makefile.in: Regenerated.
+
+1999-09-11  Gary Houston  <ghouston@easynet.co.uk>
+
+       * filesys.c (scm_directory_p): new procedure "directory?"  Returns
+       a boolean indicating whether its argument is a directory
+       port as returned by opendir (thanks to Dirk Herrmann for the
+       suggestion.)
+
+1999-09-11  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * backtrace.c (display_frame_expr): Don't print a newline.
+       (display_frame): Print the newline here instead.
+       (display_backtrace_body): Don't print "Backtrace:".
+       (scm_backtrace): Print "Backtrace:" here instead.
+
+1999-09-09  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * procs.c (scm_setter): Signal WTA if handed an entity or operator
+       lacking a setter.
+
+       * feature.c, feature.h: (scm_hook_p, scm_hook_empty_p): New
+       primitives. (Thanks to Greg Badros);
+       (scm_hook_to_list): New primitive; Hooks are now smobs.
+
+1999-09-08  Gary Houston  <ghouston@easynet.co.uk>
+
+       * stime.c (bdtime2c): rewrite the ASSERTs.  Accept a value
+       of #f for the 10th vector element to avoid an exception
+       seen by Bernard Urban.
+       (scm_mktime): unneeded ASSERT removed.
+
+1999-09-07  Mikael Djurfeldt  <mdj@mdj-pc.nada.kth.se>
+
+       * eval.c (scm_map, scm_for_each): Converted to dispatch on generic
+       if args don't match.
+
+       * __scm.h (SCM_WTA_DISPATCH_n, SCM_GASSERTn): New macros.
+
+1999-09-06  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * numbers.c: Converted comparison operations to dispatch on
+       generic if args don't match.
+
+       * Makefile.am (ETAGS_ARGS): Added support for GPROC and GPROC1.
+
+1999-09-06  James Blandy  <jimb@mule.m17n.org>
+
+       * guile-snarf.c: Deleted.  Snarfing should respect CPP
+       conditionals, so it needs to actually run CPP.  Bleah.
+
+1999-09-05  James Blandy  <jimb@mule.m17n.org>
+
+       Handle errors properly in guile-snarf.  (Thanks to Han-Wen Nienhuys.)
+       * guile-snarf.in: Be sure to exit with an error if CPP does.
+       * Makefile.am (.c.x): Delete the .x file and exit with an error
+       status if guile-snarf exits with an error status.
+       * Makefile.in: Regenerated.
+
+       * snarf.h (SCM_GLOBAL_KEYWORD): Call scm_c_make_keyword, not
+       scm_makekey, which doesn't exist any more.  Guess nobody's using
+       this.
+
+       * guile-snarf.c: New implementation of guile-snarf, meant to be
+       more robust than the shell script.  I think it's complete, but I
+       haven't tested it at all, and I haven't changed the build process
+       to actually use it.  We should compare its output against that of
+       the existing shell script, for all source files.
+
+       * guile-snarf.c (parse_args): Abort if we haven't handled some
+       character type.
+
+1999-09-03  James Blandy  <jimb@mule.m17n.org>
+
+       * load.c (scm_search_path): If the filename has any extension at
+       all, ignore the entire list of extensions.  Also, don't check whether
+       the file is accessible.  If the file exists, accessible or not, we
+       should return it.  Inaccessible files should cause an error later.
+       (Thanks to Keisuke Nishida for the suggestions.)
+
+1999-09-02  Mikael Djurfeldt  <mdj@mdj-pc.nada.kth.se>
+
+       * gc.c (cleanup, scm_init_storage): Use on_exit if present and
+       atexit not available.  (sunos4.1.4 needs it.)
+
+1999-09-01  James Blandy  <jimb@mule.m17n.org>
+
+       I take it all back --- bcopy does handle overlapping source and
+       destination areas correctly.  At least on every system I could
+       find.  But it is better to use AC_REPLACE_FUNCS than to introduce
+       new CPP conditionals.
+       * memmove.c: New file, implementing memmove in terms of bcopy.
+       * scmconfig.h.in: Regenerated.
+
+       Allocators should use the `void *' type for generic pointers.
+       * gc.c (scm_must_malloc, scm_must_realloc, scm_must_free): Change
+       argument and return types.
+       * gc.h: Corresponding changes to prototypes.
+       (Thanks to Forcer.)
+
+1999-08-31  James Blandy  <jimb@mule.m17n.org>
+
+       * numbers.c (scm_init_numbers): Claim to support the `complex'
+       feature, as expected by (ice-9 format).  (Thanks to Ceri Storey.)
+
+       * Makefile.am (check-local): Set GUILE_LOAD_PATH so the tests can
+       find (ice-9 boot-9) when Guile was compiled in a separate
+       directory from the source.  (Thanks to Rodney Brown.)
+       * Makefile.in: Regenerated.
+
+       * procs.c (scm_make_subr_opt): Fix typo.  Remember to multiply
+       table lengths by the size of a single element when growing the
+       table.  (Thanks to Bill Schottstaedt.)
+
+1999-08-30  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * eval.c (SCM_CEVAL): Duplicated the method dispatch code at the
+       SCM_IM_DISPATCH form instead of calling scm_mcache_lookup_cmethod
+       since that cuts down the time for type dispatch by 50%.
+
+1999-08-30  James Blandy  <jimb@mule.m17n.org>
+
+       * gh_data.c (gh_set_substr): Revert change of 1999-08-29; bcopy is
+       not a correct substitute for memmove, because it doesn't handle
+       overlapping source and destination areas on many platforms.
+       Overlaps are the primary reason to use memmove in the first place.
+       * ports.c (scm_ungetc): Same.
+       * strop.c (scm_substring_move_x): Same.
+
+1999-08-30  Mikael Djurfeldt  <mdj@mdj-pc.nada.kth.se>
+
+       * gc.c (scm_init_storage): Skip registration of cleanup on systems
+       which lack atexit.  (Is it important that cleanup is made
+       properly? Maybe we should replace all `exit' with `scm_exit' and
+       call cleanup there?)
+
+       * struct.c, struct.h (scm_struct_free_0, scm_struct_free_light,
+       scm_struct_free_standard, scm_struct_free_entity): Declared to
+       return scm_sizet instead of size_t.
+
+       * gdbint.c, strports.c: #include <unistd.h>.  (SEEK_SET is defined
+       there on sunos4.1.4.)
+
+1999-08-29  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * numbers.c (scm_lcm): Bugfix: BIGDIG --> SCM_BIGDIG;
+       Account for the case when second argument is unbound.
+
+       * strorder.c (scm_string_less_p, scm_string_ci_less_p): Bugfix.
+       (Thanks to Karoly Lorentey.)
+
+       * gh_data.c, ports.c, strop.c: Alternatively use bcopy if memmove
+       isn't present.  (Thanks to Suzuki Toshiya.)
+
+       * ports.c: Use ANSI C prototypes in definitions.  (Thanks to
+       Bernard Urban.)
+
+       * filesys.c (scm_stat2scm): Conditionally use S_ISLNK.  (Thanks to
+       Bernard Urban.)
+
+       * dynl-dl.c (RTLD_GLOBAL): Define if non-existent.  (Thanks to
+       Bernard Urban and Ian Grant.)
+
+       * Makefile.am (libguile_la_LDFLAGS): Bumped libguile version
+       again.  (1.3.4 will be binary incompatible with 1.3.2 because of a
+       change in the representation of entities and operators.)
+
+1999-08-29  Gary Houston  <ghouston@easynet.co.uk>
+
+       * ports.c (scm_ungetc): bugfix: if putback_buf is NULL 
+       don't allocate zero bytes (thanks to Bill Schottstaedt).
+
+1999-08-29  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * procs.c (scm_setter): Converted to use generic dispatch.
+
+       * eval.c, eval.h: Bugfix: scm_sym_apply was not initialized
+       correctly.
+
+       * load.c (scm_search_path): Don't try extensions which already are
+       present at the end of the filename.
+        (scm_init_load): Check .scm first. (Thanks to Keisuke Nishida.)
+
+       * stacks.c (scm_sym_apply): Removed.  (Thanks to Ken Raeburn.)
+
+       Cleanup and simplification of generic method dispatch.
+       Also, the quadruple representation of entity and operator
+       procedures has been replaced with single.
+       
+       * tags.h (SCM_IM_HASH_DISPATCH): Removed.
+       
+       * print.c (scm_isymnames): Removed #@hash-dispatch.
+
+       * objects.c, objects.h (scm_mcache_lookup_cmethod): Moved here
+       from eval.c; Support 0 arity methods.
+       (scm_set_object_procedure_x): Removed scm_sym_atdispatch;
+       (scm_apply_generic_env): Removed.
+       Replaced slots proc0-3 with procedure.
+       
+       * objects.h (SCM_OPERATOR_PROC_0, SCM_OPERATOR_PROC_1,
+       SCM_OPERATOR_PROC_2, SCM_OPERATOR_PROC_3): Replaced by
+       SCM_OPERATOR_PROCEDURE.
+       (SCM_ENTITY_PROC_0, SCM_ENTITY_PROC_1, SCM_ENTITY_PROC_2,
+       SCM_ENTITY_PROC_3): Replaced by SCM_ENTITY_PROCEDURE.
+       
+       * struct.c, struct.h: Replace 4 procedure slots with one.
+       (scm_struct_i_procedure): Replaces scm_struct_i_procedure.
+
+       * gc.c (scm_gc_mark): Mark 1 procedure slot in entities instead of
+       4.
+
+       * eval.c (scm_sym_args): Removed.
+       (SCM_CEVAL): Simplified entity application.
+       Moved dispatch code to objects.c.
+
+       * procprop.c (scm_i_procedure_arity): Bugfix: Handle generics.
+       
 1999-08-29  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
 
        * sort.c (closureless): Use scm_eval_body.
@@ -690,13 +1464,13 @@ Fri Jun 25 22:14:32 1999  Greg Badros  <gjb@cs.washington.edu>
        
 1999-07-04  Gary Houston  <ghouston@easynet.co.uk>
 
-       * unif.c (scm_uniform_array_write): likewise.
-       * ioext.c (scm_redirect_port): likewise.
        * ports.c (scm_putc): call scm_read_flush.
        (scm_puts): likewise.
        (scm_lfwrite): likewise.
        (scm_lseek): likewise.
        (scm_ftruncate): likewise.
+       * unif.c (scm_uniform_array_write): likewise.
+       * ioext.c (scm_redirect_port): likewise.
 
        * ports.c (scm_fill_buffer): don't take pt argument.  change callers.
        (read_flush_void_port): new proc, for void port ptob.
@@ -952,7 +1726,7 @@ Fri Jun 25 22:14:32 1999  Greg Badros  <gjb@cs.washington.edu>
        * ports.h (SCM_BUFLINE): New flag for ports.
        * init.c (scm_init_standard_ports): Request line-buffering on
        the standard output port.
-*      * ports.c (scm_mode_bits): Recognize 'l' as a request for line
+       * ports.c (scm_mode_bits): Recognize 'l' as a request for line
        buffering.
        (scm_putc, scm_puts, scm_lfwrite): If the port is line-buffered,
        and there's a newline to be written, flush the port.
@@ -979,7 +1753,7 @@ Fri Jun 25 22:14:32 1999  Greg Badros  <gjb@cs.washington.edu>
        ports.h (scm_ptobfuns): add ftruncate.
        ports.c (scm_newptob): set ftruncate.
        adjust ptob tables.
-*      ports.c (scm_ftruncate): new procedure.
+       ports.c (scm_ftruncate): new procedure.
        fports.c (local_ftrunate), strports.c (str_ftruncate): new procs.
        strports.c (st_seek, st_grow_port): new procs.
        fports.h (scm_port): change size types from int to off_t.
@@ -1180,7 +1954,7 @@ Fri Jun 25 22:14:32 1999  Greg Badros  <gjb@cs.washington.edu>
        * fports.c (scm_fdes_to_port), ports.c (scm_void_port),
        filesys.c (scm_opendir):
        restore defer interrupts while the port is constructed.
-*      (scm_setvbuf): if mode is _IOFBF and size is not supplied,
+       (scm_setvbuf): if mode is _IOFBF and size is not supplied,
        derive buffer size from fdes or use a default.
        (scm_fdes_to_port): use setvbuf instead of creating the buffers
        directly.
@@ -1200,7 +1974,7 @@ Fri Jun 25 22:14:32 1999  Greg Badros  <gjb@cs.washington.edu>
        * ports.c (scm_force_output): call scm_fflush.
 
        * print.c (scm_newline): don't check errno for EPIPE (it wouldn't
-*      reach this point.)  don't flush port (if scm_cur_outp).
+       reach this point.)  don't flush port (if scm_cur_outp).
 
        * fports.h (SCM_FPORT_FDES): new macro.
 
@@ -1221,7 +1995,7 @@ Fri Jun 25 22:14:32 1999  Greg Badros  <gjb@cs.washington.edu>
        proc runs.
 
         *fports.c (print_pipe_port, local_pclose, scm_pipob): deleted.
-*      open-pipe, close-pipe are emulated in (ice-9 popen)
+       open-pipe, close-pipe are emulated in (ice-9 popen)
        ports.c (scm_ports_prehistory): don't init scm_pipob.
        ports.h (scm_tc16_pipe): deleted.
        posix.c (scm_open_pipe, scm_close_pipe): deleted.
@@ -1251,7 +2025,7 @@ Fri Jun 25 22:14:32 1999  Greg Badros  <gjb@cs.washington.edu>
        (scm_setvbuf): set the buffer.
        (scm_setfileno): deleted.
        (scm_evict_ports): set fdes directly.
-*      (scm_freopen): deleted.  doesn't seem useful in Guile.
+       (scm_freopen): deleted.  doesn't seem useful in Guile.
        (scm_stdio_to_port): deleted.
        fports.h (struct scm_fport): add shortbuf member to avoid separate
        code for unbuffered ports.
@@ -1272,7 +2046,7 @@ Fri Jun 25 22:14:32 1999  Greg Badros  <gjb@cs.washington.edu>
        new members.
        * init.c (scm_init_standard_ports): pass fdes instead of FILE *.
 
-*      * ports.c (scm_drain_input): new procedure.
+       * ports.c (scm_drain_input): new procedure.
        ports.h: prototype.
        * fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY,
        pre_read, pre_write): removed.